public RichBaseCumHazardTables(BaseCumHazardTables baseCumHazardTables){ ReflectionUtil.copyState(baseCumHazardTables, this); }
static public <E extends PMMLObject> void copyState(E from, E to){ Class<?> fromClazz = from.getClass(); Class<?> toClazz = to.getClass(); // Allow copying to the same class or to a subclass, but not to a superclass if(!(fromClazz).isAssignableFrom(toClazz)){ throw new IllegalArgumentException(); } List<Field> fields = getInstanceFields(fromClazz); for(Field field : fields){ Object value = getFieldValue(field, from); setFieldValue(field, to, value); } }
@Override public VisitorAction visit(PMMLObject object){ List<Field> fields = ReflectionUtil.getInstanceFields(object.getClass()); for(Field field : fields){ Object value = ReflectionUtil.getFieldValue(field, object); if(value instanceof ArrayList){ ArrayList<?> list = (ArrayList<?>)value; list.trimToSize(); } } return super.visit(object); } }
if(ReflectionUtil.isPrimitiveWrapper(clazz)){ return; List<Field> fields = ReflectionUtil.getInstanceFields(clazz); for(Field field : fields){ Class<?> type = field.getType(); Object value = ReflectionUtil.getFieldValue(field, object); if(shouldMeasure(value)){ measure(value);
@Test public void getInstanceFields(){ List<Field> instanceFields = ReflectionUtil.getInstanceFields(PMML.class); List<Field> customInstanceFields = ReflectionUtil.getInstanceFields(CustomPMML.class); assertEquals(1 /* PMMLObject */ + 8 /* PMML */, instanceFields.size()); assertEquals(new HashSet<>(instanceFields), new HashSet<>(customInstanceFields)); }
@Test public void isPrimitiveWrapper(){ assertFalse(ReflectionUtil.isPrimitiveWrapper(String.class)); assertTrue(ReflectionUtil.isPrimitiveWrapper(Integer.class)); assertTrue(ReflectionUtil.isPrimitiveWrapper(Double.class)); assertTrue(ReflectionUtil.isPrimitiveWrapper(Boolean.class)); } }
SupportVectorMachineModel.ClassificationMethod classificationMethod = ReflectionUtil.getFieldValue(PMMLAttributes.SUPPORTVECTORMACHINEMODEL_CLASSIFICATIONMETHOD, supportVectorMachineModel); if(classificationMethod != null){ return classificationMethod;
static public List<Field> getInstanceFields(Class<?> clazz){ List<Field> result = ReflectionUtil.classInstanceFields.get(clazz); if(result == null){ result = loadFields(clazz, ReflectionUtil.INSTANCE_FIELD_SELECTOR); ReflectionUtil.classInstanceFields.putIfAbsent(clazz, result); } return result; }
private void inspect(Field field, Object value){ Class<?> type = field.getType(); if(type.isPrimitive()){ if(ReflectionUtil.isDefaultValue(value)){ return; } } else { if(isNull(value)){ Optional optional = field.getAnnotation(Optional.class); if(optional != null){ updateMinimum(optional.value()); } Required required = field.getAnnotation(Required.class); if(required != null){ updateMaximum(previous(required.value())); } return; } } inspect(field); }
@Override public VisitorAction visit(PMMLObject object){ List<Field> fields = ReflectionUtil.getInstanceFields(object.getClass()); for(Field field : fields){ Object value = ReflectionUtil.getFieldValue(field, object); if(value instanceof ArrayList){ ArrayList<?> list = (ArrayList<?>)value; list.trimToSize(); } } return super.visit(object); } }
if(ReflectionUtil.isPrimitiveWrapper(clazz)){ return; List<Field> fields = ReflectionUtil.getInstanceFields(clazz); for(Field field : fields){ Class<?> type = field.getType(); Object value = ReflectionUtil.getFieldValue(field, object); if(shouldMeasure(value)){ measure(value);
static public List<Field> getFields(Class<?> clazz){ List<Field> result = ReflectionUtil.classFields.get(clazz); if(result == null){ result = loadFields(clazz, ReflectionUtil.FIELD_SELECTOR); ReflectionUtil.classFields.putIfAbsent(clazz, result); } return result; }
private void inspect(Field field, Object value){ Class<?> type = field.getType(); if(type.isPrimitive()){ if(ReflectionUtil.isDefaultValue(value)){ return; } } else { if(isNull(value)){ Optional optional = field.getAnnotation(Optional.class); if(optional != null){ updateMinimum(optional.value()); } Required required = field.getAnnotation(Required.class); if(required != null){ updateMaximum(previous(required.value())); } return; } } inspect(field); }
static public <E extends PMMLObject> void copyState(E from, E to){ Class<?> fromClazz = from.getClass(); Class<?> toClazz = to.getClass(); // Allow copying to the same class or to a subclass, but not to a superclass if(!(fromClazz).isAssignableFrom(toClazz)){ throw new IllegalArgumentException(); } List<Field> fields = getInstanceFields(fromClazz); for(Field field : fields){ Object value = getFieldValue(field, from); setFieldValue(field, to, value); } }
public RichConstant(Constant constant){ ReflectionUtil.copyState(constant, this); }
@Override public VisitorAction visit(PMMLObject object){ for(Class<?> clazz = object.getClass(); clazz != null; clazz = clazz.getSuperclass()){ inspect(clazz); } List<Field> fields = ReflectionUtil.getInstanceFields(object.getClass()); for(Field field : fields){ Object value = ReflectionUtil.getFieldValue(field, object); inspect(field, value); // The field is set to an enum constant if(value instanceof Enum){ Enum<?> enumValue = (Enum<?>)value; Field enumField; try { Class<?> enumClazz = enumValue.getClass(); enumField = enumClazz.getField(enumValue.name()); } catch(NoSuchFieldException nsfe){ throw new RuntimeException(nsfe); } inspect(enumField); } } return super.visit(object); }
static public List<Field> getFields(Class<?> clazz){ List<Field> result = ReflectionUtil.classFields.get(clazz); if(result == null){ result = loadFields(clazz, ReflectionUtil.FIELD_SELECTOR); ReflectionUtil.classFields.putIfAbsent(clazz, result); } return result; }
@Override public VisitorAction visit(PMMLObject object){ List<Field> fields = ReflectionUtil.getInstanceFields(object.getClass()); for(Field field : fields){ if((FieldName.class).equals(field.getType())){ FieldName name = (FieldName)ReflectionUtil.getFieldValue(field, object); name = filter(name); ReflectionUtil.setFieldValue(field, object, name); } } return super.visit(object); }