DevBoost / JaMoPP

JaMoPP can parse Java source and byte code into EMF-based models and vice versa. It preserves source formatting and can be used for code analysis and refactoring.
17 stars 18 forks source link

getObjectClass() returns a new Class instance without equals support #9

Open BenjaminKlatt opened 10 years ago

BenjaminKlatt commented 10 years ago

To test a Class element if it represents the java.lang.Object is not supported using the getObjectClass() and the equals method.

getObjectClass() always returns a new instance and the equals() method is not implemented for ClassImpl or ConcreteClassifier.

For example, the following code always returns false, even if the super class of the submitted class is the class java.lang.Object:

public boolean compareClasses(Class class){ Class objectClass = class.getObjectClass(); return(objectClass.equals(class.getSuperClass())); }

Either the code should always return the same instance for a specific class, or the equals method should be implemented specific to the java meta model element.

BenjaminKlatt commented 10 years ago

As long as the same classpath is used, this will be fixed by ff4c1c03a118adc2a1364f37ee0b333e283dff42 (Part of a pull request). Due to the introduced caching in the JavaClasspath, this always returns the same instance for java.lang.Object.