Source code: com/puppycrawl/tools/checkstyle/checks/usage/transmogrify/ArrayDef.java
1
2 // Transmogrify License
3 //
4 // Copyright (c) 2001, ThoughtWorks, Inc.
5 // All rights reserved.
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions
8 // are met:
9 // - Redistributions of source code must retain the above copyright notice,
10 // this list of conditions and the following disclaimer.
11 // - Redistributions in binary form must reproduce the above copyright
12 // notice, this list of conditions and the following disclaimer in the
13 // documentation and/or other materials provided with the distribution.
14 // Neither the name of the ThoughtWorks, Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from this
16 // software without specific prior written permission.
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 package com.puppycrawl.tools.checkstyle.checks.usage.transmogrify;
30
31
32
33 import java.util.ArrayList;
34 import java.util.Iterator;
35 import java.util.List;
36 import java.util.Vector;
37 //import com.puppycrawl.tools.checkstyle.checks.lint.parser.JavaTokenTypes;
38
39 public class ArrayDef implements IClass {
40
41 private final static IVariable LENGTH_MEMBER = new ArrayLengthMember();
42
43 private IClass _type;
44
45 public ArrayDef(IClass type){
46 _type = type;
47 }
48
49 public IClass getType(){
50 return _type;
51 }
52
53 public IClass getSuperclass() {
54 return new ArrayDef(getType().getSuperclass());
55 }
56
57 public IClass[] getInterfaces() {
58 return new IClass[0];
59 }
60
61 public IClass[] getInnerClasses() {
62 return new IClass[0];
63 }
64
65 public IClass getClassDefinition(String name) {
66 return null;
67 }
68
69 public IMethod getMethodDefinition(String name,
70 ISignature signature) {
71 return new ExternalClass(Object.class).getMethodDefinition(name,
72 signature);
73 }
74
75 public IVariable getVariableDefinition(String name) {
76 IVariable result = null;
77
78 if (name.equals("length")) {
79 result = LENGTH_MEMBER;
80 }
81
82 return result;
83 }
84
85 public void addSubclass(ClassDef subclass) {}
86
87 public void addReference(Reference reference) {}
88
89 public Iterator getReferences() {
90 return new Vector().iterator();
91 }
92
93 public int getNumReferences() {
94 return 0;
95 }
96
97 public List getSubclasses() {
98 return new ArrayList();
99 }
100
101 public void addImplementor(ClassDef implementor) {}
102
103 public List getImplementors() {
104 return new ArrayList();
105 }
106
107 public boolean isCompatibleWith(IClass type) {
108 boolean result = false;
109 if (type.equals(new ExternalClass(Object.class))) {
110 result = true;
111 }
112 else if (type instanceof ArrayDef) {
113 result = getType().isCompatibleWith(((ArrayDef)type).getType());
114 }
115
116 return result;
117 }
118
119 public boolean isSourced() {
120 return getType().isSourced();
121 }
122
123 public String getName() {
124 return getType().getName() + "[]";
125 }
126
127 public String getQualifiedName() {
128 return getType().getQualifiedName() + "[]";
129 }
130
131 public boolean isPrimitive() {
132 return false;
133 }
134
135 public boolean equals(Object obj) {
136 boolean result = false;
137
138 if (obj instanceof ArrayDef) {
139 ArrayDef compared = (ArrayDef)obj;
140 result = (getType().equals(compared.getType()));
141 }
142
143 return result;
144 }
145
146 public int hashCode() {
147 return getType().hashCode();
148 }
149
150 public String toString() {
151 return getQualifiedName() + "[]";
152 }
153
154 }