private Object newInstance(Class clazz) { ReflectClass classReflector = reflector().forClass(clazz); Object obj = classReflector.newInstance(); if (obj == null) { throw new IllegalArgumentException("No usable constructor for Class " + clazz); } return obj; }
public void testIsNDimensional() { ReflectClass arrayOfArrayOfString = reflectClass(String[][].class); Assert.isTrue(arrayOfArrayOfString.isArray()); final ReflectClass arrayOfString = reflectClass(String[].class); Assert.areSame(arrayOfString, arrayOfArrayOfString.getComponentType()); Assert.isTrue(arrayReflector().isNDimensional(arrayOfArrayOfString)); Assert.isFalse(arrayReflector().isNDimensional(arrayOfString)); }
public Field[] getEnumConstantFields() { if (null == enumConstantFields) { Enum<?>[] enums = (Enum<?>[]) reflectClass.getJavaClass().getEnumConstants(); enumConstantFields = new Field[enums.length]; for (int i = 0; i < enums.length; i++) { enumConstantFields[i] = reflectClass.getField(enums[i].name()).getJavaField(); } } return enumConstantFields; }
protected void assertNullItem(Object obj) throws Exception { ReflectClass claxx = reflector().forObject(obj); ReflectField[] fields = claxx.getDeclaredFields(); for (int i = 0; i < fields.length; ++i) { ReflectField field = fields[i]; if (field.isStatic() || field.isTransient()) { continue; } ReflectClass type = field.getFieldType(); if (container().classMetadataForReflectClass(type).isValueType()) { continue; } Object value = field.get(obj); Assert.isNull(value); } }
private Constraint addInterfaceConstraint(ReflectClass claxx) { Collection4 classes = stream().classCollection().forInterface(claxx); if (classes.size() == 0) { QConClass qcc = new QConClass(_trans, null, null, claxx); addConstraint(qcc); return qcc; } Iterator4 i = classes.iterator(); Constraint constr = null; while (i.moveNext()) { ClassMetadata classMetadata = (ClassMetadata) i.current(); ReflectClass classMetadataClaxx = classMetadata.classReflector(); if (classMetadataClaxx != null) { if (!classMetadataClaxx.isInterface()) { if (constr == null) { constr = constrain(classMetadataClaxx); } else { constr = constr.or(constrain(classMetadata.classReflector())); } } } } return constr; }
private Constraint addClassConstraint(ReflectClass claxx) { if (isTheObjectClass(claxx)) { return null; } if (claxx.isInterface()) { return addInterfaceConstraint(claxx); } final Collection4 newConstraints = introduceClassConstrain(claxx); if (newConstraints.isEmpty()) { QConClass qcc = new QConClass(_trans, claxx); addConstraint(qcc); return qcc; } return toConstraint(newConstraints); }
/** * This is to ensure that reflector.forObject(GenericArray) returns an instance of * GenericArrayClass instead of GenericClass http://tracker.db4o.com/jira/browse/COR-376 */ public void testGenericArrayClass() { ExtObjectContainer oc = fixture().db(); initGenericObjects(); ReflectClass elementType = oc.reflector().forName(PERSON_CLASSNAME); Object array = reflector().array().newInstance(elementType, 5); ReflectClass arrayClass = oc.reflector().forObject(array); Assert.isTrue(arrayClass.isArray()); Assert.isTrue(arrayClass instanceof GenericArrayClass); arrayClass = oc.reflector().forName(array.getClass().getName()); Assert.isTrue(arrayClass.isArray()); Assert.isTrue(arrayClass instanceof GenericArrayClass); arrayClass = oc.reflector().forClass(array.getClass()); Assert.isTrue(arrayClass.isArray()); Assert.isTrue(arrayClass instanceof GenericArrayClass); Assert.areEqual(arrayClass.getName(), ReflectPlatform.fullyQualifiedName(array.getClass())); Assert.areEqual("(GA) " + elementType.getName(), array.toString()); }
private void initialize() { this.valueField = reflectClass.getField(VALUE_FIELD_NAME); this.hasValueField = null != valueField; this.valueType = hasValueField ? valueField.getType() : null; }
public Enum<?>[] getEnumConstants() { return (Enum<?>[]) reflectClass.getJavaClass().getEnumConstants(); }
protected ReflectEnum(Class<?> type) { this.reflectClass = ReflectClass.get(type); this.initialize(); }
private boolean isTheObjectClass(ReflectClass claxx) { return claxx.equals(stream()._handlers.ICLASS_OBJECT); }