home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.ibm.ivj.testpilot.model; import com.ibm.ivj.testpilot.utils.ClassUtils; import com.ibm.ivj.testpilot.utils.ObjectUtils; import java.lang.reflect.Array; public abstract class ObjectModel extends MemberModel { private static String copyright = "Licensed Material - Property of IBM IBM(R) VisualAge(R) for Java(TM), Version 3.5 (C) Copyright IBM Corp. 1997, 2000- All Rights Reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."; private MemberModel[] members = null; private FieldSetModel fields = null; private PropertySetModel properties = null; private MethodSetModel methods = null; private MemberModel superClasses = null; protected ObjectModel(MemberModel var1) { super(var1); } protected ObjectModel(MemberModel var1, String var2) { super(var1, var2); } protected ArrayElementModel constructArrayElementFor(MemberModel var1, int var2, Class var3) { return new ArrayElementModel(this, var2, var3); } protected boolean currentlyAllowsMembers() { return true; } public Class getActualType() { Object var1 = this.getObject(); return var1 != null ? var1.getClass() : ((MemberModel)this).getDeclaredType(); } public MemberModel[] getArrayMembers() { ArrayElementModel[] var1 = null; if (this.isArray()) { Object var2 = this.getObject(); Class var3 = ((MemberModel)this).getType().getComponentType(); if (var2 != null) { int var5 = Array.getLength(var2); var1 = new ArrayElementModel[var5]; for(int var4 = 0; var4 < var5; ++var4) { var1[var4] = this.constructArrayElementFor(this, var4, var3); } } else { var1 = new ArrayElementModel[0]; } } return var1; } public FieldSetModel getFields() { if (this.fields == null) { this.fields = new FieldSetModel(this); } return this.fields; } public final MemberModel[] getMembers() { if (this.members == null) { if (this.isArray()) { this.members = this.getArrayMembers(); } else { Class var1 = ((MemberModel)this).getType(); if (ClassUtils.isSimple(var1)) { this.members = new MemberModel[0]; } else { this.members = this.getObjectMembers(); } } } return this.members; } public MethodSetModel getMethods() { if (this.methods == null) { this.methods = new MethodSetModel(this); } return this.methods; } public final Object getObject() { try { return this.tryGetObject(); } catch (IllegalAccessException var1) { return null; } } protected MemberModel[] getObjectMembers() { return this.getStandardMembers(); } public PropertySetModel getProperties() { if (this.properties == null) { this.properties = new PropertySetModel(this); } return this.properties; } protected final MemberModel[] getStandardMembers() { MemberModel[] var1 = null; if (this.currentlyAllowsMembers()) { ReflectionMemberMask var2 = ((MemberModel)this).getReflectionMemberMask(); int var3 = var2.countMemberSets(); boolean var4 = var2.hasFields(); boolean var5 = var2.hasProperties(); boolean var6 = var2.hasMethods(); boolean var7 = var2.hasSupers(); switch (var3) { case 0: var1 = new MemberModel[0]; break; case 1: if (var4) { var1 = this.getFields().getMembers(); } if (var5) { var1 = this.getProperties().getMembers(); } if (var6) { var1 = this.getMethods().getMembers(); } if (var7) { var1 = new MemberModel[]{this.getSuperClasses()}; } break; default: var1 = new MemberModel[var3]; int var8 = 0; if (var4) { var1[var8++] = this.getFields(); } if (var5) { var1[var8++] = this.getProperties(); } if (var6) { var1[var8++] = this.getMethods(); } if (var7) { var1[var8++] = this.getSuperClasses(); } } } else { var1 = new MemberModel[0]; } return var1; } public MemberModel getSuperClasses() { if (this.superClasses == null) { SuperClassSetModel var1 = new SuperClassSetModel(this); if (var1.getMembers().length == 1) { MemberModel var2 = var1.getMembers()[0]; var2.initializeNamePrefix("extends "); this.superClasses = var2; } else { this.superClasses = var1; } } return this.superClasses; } public boolean hasActualAndDeclaredType() { return true; } public boolean hasStandardMembers() { return !this.isArray() && !ClassUtils.isSimple(((MemberModel)this).getType()); } public boolean hasValue() { return true; } public final void initializeObject(Object var1) { try { this.trySetObject(var1); } catch (IllegalAccessException var2) { } } public boolean isArray() { return ((MemberModel)this).getType().isArray(); } public boolean isNullable() { return this.isWritable() && !this.isPrimitive(); } public boolean isObject() { return true; } public boolean isPrimitive() { return ((MemberModel)this).getDeclaredType().isPrimitive(); } public boolean isReadable() { return true; } public boolean isWritable() { return true; } public void resetMembers() { this.resetStandardMembers(); } protected void resetMethodsAndSuperClasses() { this.methods = null; this.superClasses = null; } public final void resetStandardMembers() { this.members = null; this.methods = null; this.fields = null; this.properties = null; this.superClasses = null; } public final void setObject(Object var1) { try { this.trySetObject(var1); } catch (IllegalAccessException var2) { return; } ((MemberModel)this).fireModelObjectChanged(); } public void setUseDeclaredType(boolean var1) { ((MemberModel)this).resetReflectionMemberMask(); this.resetMethodsAndSuperClasses(); super.setUseDeclaredType(var1); } protected abstract Object tryGetObject() throws IllegalAccessException; public void tryInstantiate() { if (this.getObject() == null) { this.setObject(ObjectUtils.getInstanceOf(((MemberModel)this).getType())); } } protected abstract void trySetObject(Object var1) throws IllegalAccessException; }