@Override public J getValue(Object entity) { J value = null; if (entity instanceof JavaMetaData) { value = ((JavaMetaData) entity).getAnnotation(annotationType.getJavaType()); } if (value == null) { Attribute metaAttribute = attributeType.getMetaAttribute(DerivedObject.META_ATTRIBUTE_CODE); if (metaAttribute != null) { DerivedObject derivedObject = (DerivedObject) metaAttribute.getValue(entity); if (derivedObject != null) { Object original = derivedObject.getOriginal(); if (original != null) { return getValue(original); } } } } return value; }
@Override public Class<J> getReturnType() { return (Class<J>) annotationType.getJavaType(); }
@Override public String getCode() { return annotationType.getJavaType().getName().replace(".", "_"); }