diff options
author | aclement <aclement> | 2009-09-28 16:34:37 +0000 |
---|---|---|
committer | aclement <aclement> | 2009-09-28 16:34:37 +0000 |
commit | 5e40d5e325962b203b0ba45542c1b5e13feedb3d (patch) | |
tree | 6964045168100a30d4111bf8fe6b7f20fe060c4c /bcel-builder | |
parent | 5a37433e22d85e84312e5e804ed15f74bf50d22a (diff) | |
download | aspectj-5e40d5e325962b203b0ba45542c1b5e13feedb3d.tar.gz aspectj-5e40d5e325962b203b0ba45542c1b5e13feedb3d.zip |
formatted
Diffstat (limited to 'bcel-builder')
-rw-r--r-- | bcel-builder/src/org/aspectj/apache/bcel/generic/ObjectType.java | 151 |
1 files changed, 80 insertions, 71 deletions
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/generic/ObjectType.java b/bcel-builder/src/org/aspectj/apache/bcel/generic/ObjectType.java index 12b77d47f..465805803 100644 --- a/bcel-builder/src/org/aspectj/apache/bcel/generic/ObjectType.java +++ b/bcel-builder/src/org/aspectj/apache/bcel/generic/ObjectType.java @@ -57,87 +57,96 @@ import org.aspectj.apache.bcel.Constants; import org.aspectj.apache.bcel.Repository; import org.aspectj.apache.bcel.classfile.JavaClass; -/** +/** * Denotes reference such as java.lang.String. - * - * @version $Id: ObjectType.java,v 1.5 2008/06/23 04:01:28 aclement Exp $ - * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + * + * @version $Id: ObjectType.java,v 1.6 2009/09/28 16:34:37 aclement Exp $ + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> */ public class ObjectType extends ReferenceType { - private String class_name; // Class name of type + private String class_name; // Class name of type + + /** + * @param class_name fully qualified class name, e.g. java.lang.String + */ + public ObjectType(String class_name) { + super(Constants.T_REFERENCE, toSignature(class_name));// "L" + class_name.replace('.', '/') + ";"); + this.class_name = class_name;// .replace('/', '.'); + } + + private static String toSignature(String classname) { + StringBuffer sig = new StringBuffer(); + sig.append("L").append(classname.replace('.', '/')); + sig.append(";"); + return sig.toString(); + } - /** - * @param class_name fully qualified class name, e.g. java.lang.String - */ - public ObjectType(String class_name) { - super(Constants.T_REFERENCE, toSignature(class_name));//"L" + class_name.replace('.', '/') + ";"); - this.class_name = class_name;//.replace('/', '.'); - } - - private static String toSignature(String classname) { - StringBuffer sig = new StringBuffer(); - sig.append("L").append(classname.replace('.','/')); - sig.append(";"); - return sig.toString(); - } + /** + * @return name of referenced class + */ + public String getClassName() { + return class_name; + } - /** @return name of referenced class - */ - public String getClassName() { return class_name; } + /** + * @return a hash code value for the object. + */ + @Override + public int hashCode() { + return class_name.hashCode(); + } - /** @return a hash code value for the object. - */ - public int hashCode() { return class_name.hashCode(); } + /** + * @return true if both type objects refer to the same class. + */ + @Override + public boolean equals(Object type) { + return (type instanceof ObjectType) ? ((ObjectType) type).class_name.equals(class_name) : false; + } - /** @return true if both type objects refer to the same class. - */ - public boolean equals(Object type) { - return (type instanceof ObjectType)? - ((ObjectType)type).class_name.equals(class_name) : false; - } + /** + * If "this" doesn't reference a class, it references an interface or a non-existant entity. + */ + public boolean referencesClass() { + JavaClass jc = Repository.lookupClass(class_name); + if (jc == null) { + return false; + } else { + return jc.isClass(); + } + } - /** - * If "this" doesn't reference a class, it references an interface - * or a non-existant entity. - */ - public boolean referencesClass(){ - JavaClass jc = Repository.lookupClass(class_name); - if (jc == null) - return false; - else - return jc.isClass(); - } - - /** - * If "this" doesn't reference an interface, it references a class - * or a non-existant entity. - */ - public boolean referencesInterface(){ - JavaClass jc = Repository.lookupClass(class_name); - if (jc == null) - return false; - else - return !jc.isClass(); - } + /** + * If "this" doesn't reference an interface, it references a class or a non-existant entity. + */ + public boolean referencesInterface() { + JavaClass jc = Repository.lookupClass(class_name); + if (jc == null) { + return false; + } else { + return !jc.isClass(); + } + } - public boolean subclassOf(ObjectType superclass){ - if (this.referencesInterface() || superclass.referencesInterface()) - return false; + public boolean subclassOf(ObjectType superclass) { + if (this.referencesInterface() || superclass.referencesInterface()) { + return false; + } - return Repository.instanceOf(this.class_name, superclass.class_name); - } + return Repository.instanceOf(this.class_name, superclass.class_name); + } - /** - * Java Virtual Machine Specification edition 2, § 5.4.4 Access Control - */ - public boolean accessibleTo(ObjectType accessor) { - JavaClass jc = Repository.lookupClass(class_name); + /** + * Java Virtual Machine Specification edition 2, § 5.4.4 Access Control + */ + public boolean accessibleTo(ObjectType accessor) { + JavaClass jc = Repository.lookupClass(class_name); - if(jc.isPublic()) { - return true; - } else { - JavaClass acc = Repository.lookupClass(accessor.class_name); - return acc.getPackageName().equals(jc.getPackageName()); - } - } + if (jc.isPublic()) { + return true; + } else { + JavaClass acc = Repository.lookupClass(accessor.class_name); + return acc.getPackageName().equals(jc.getPackageName()); + } + } } |