refactor code for reuse

This commit is contained in:
Julian Dolby 2014-10-30 21:15:49 -04:00
parent 68ad4dbba6
commit afb113efb9
2 changed files with 92 additions and 72 deletions

View File

@ -0,0 +1,91 @@
package com.ibm.wala.cast.loader;
import java.util.Collection;
import java.util.Collections;
import com.ibm.wala.classLoader.IClass;
import com.ibm.wala.classLoader.IField;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.types.FieldReference;
import com.ibm.wala.types.TypeReference;
import com.ibm.wala.types.annotations.Annotation;
import com.ibm.wala.util.strings.Atom;
public class AstDynamicField implements IField {
private final boolean isStatic;
private final TypeReference descriptor;
private final IClass cls;
private final Atom name;
public AstDynamicField(boolean isStatic, IClass cls, Atom name, TypeReference descriptor) {
this.isStatic = isStatic;
this.descriptor = descriptor;
this.cls = cls;
this.name = name;
}
@Override
public String toString() {
return "<field " + name + ">";
}
@Override
public IClass getDeclaringClass() {
return cls;
}
@Override
public Atom getName() {
return name;
}
@Override
public TypeReference getFieldTypeReference() {
return descriptor;
}
@Override
public FieldReference getReference() {
return FieldReference.findOrCreate(cls.getReference(), name, descriptor);
}
@Override
public boolean isFinal() {
return false;
}
@Override
public boolean isPrivate() {
return false;
}
@Override
public boolean isProtected() {
return false;
}
@Override
public boolean isPublic() {
return false;
}
@Override
public boolean isVolatile() {
return false;
}
@Override
public boolean isStatic() {
return isStatic;
}
@Override
public IClassHierarchy getClassHierarchy() {
return cls.getClassHierarchy();
}
@Override
public Collection<Annotation> getAnnotations() {
return Collections.emptySet();
}
}

View File

@ -10,22 +10,16 @@
*****************************************************************************/
package com.ibm.wala.cast.loader;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.ibm.wala.cast.tree.CAstSourcePositionMap;
import com.ibm.wala.classLoader.IClass;
import com.ibm.wala.classLoader.IClassLoader;
import com.ibm.wala.classLoader.IField;
import com.ibm.wala.classLoader.IMethod;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.types.FieldReference;
import com.ibm.wala.types.Selector;
import com.ibm.wala.types.TypeName;
import com.ibm.wala.types.TypeReference;
import com.ibm.wala.types.annotations.Annotation;
import com.ibm.wala.util.strings.Atom;
public abstract class AstDynamicPropertyClass extends AstClass {
@ -45,72 +39,7 @@ public abstract class AstDynamicPropertyClass extends AstClass {
return getSuperclass().getField(name);
} else {
final boolean isStatic = isStaticField(name);
declaredFields.put(name, new IField() {
@Override
public String toString() {
return "<field " + name + ">";
}
@Override
public IClass getDeclaringClass() {
return AstDynamicPropertyClass.this;
}
@Override
public Atom getName() {
return name;
}
@Override
public TypeReference getFieldTypeReference() {
return defaultDescriptor;
}
@Override
public FieldReference getReference() {
return FieldReference.findOrCreate(AstDynamicPropertyClass.this.getReference(), name, defaultDescriptor);
}
@Override
public boolean isFinal() {
return false;
}
@Override
public boolean isPrivate() {
return false;
}
@Override
public boolean isProtected() {
return false;
}
@Override
public boolean isPublic() {
return false;
}
@Override
public boolean isVolatile() {
return false;
}
@Override
public boolean isStatic() {
return isStatic;
}
@Override
public IClassHierarchy getClassHierarchy() {
return AstDynamicPropertyClass.this.getClassHierarchy();
}
@Override
public Collection<Annotation> getAnnotations() {
return Collections.emptySet();
}
});
declaredFields.put(name, new AstDynamicField(isStatic, this, name, defaultDescriptor));
return declaredFields.get(name);
}