Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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 }