private void collectFieldPaths(Class<?> clazz, MappedClass mappedClass) { if (!clazz.isInterface()) { MappedPath path; String classNs = mappedClass.getClassNs(); for (Field field : clazz.getDeclaredFields()) { path = getPathMapping(classNs, field, mappedClass); if (path != null) { mappedClass.addMappedPath(path); } } } }
private void collectMethodPaths(Class<?> clazz, MappedClass mappedClass) { String classNs = mappedClass.getClassNs(); for (Method method : clazz.getDeclaredMethods()) { MappedPath path = getPathMapping(classNs, method, mappedClass); if (path != null) { mappedClass.addMappedPath(path); } } }
@Nullable public UID getKeyPredicate() { MapElements mapKey = getAnnotation(MapElements.class); if (mapKey != null) { Predicate predicate = mapKey.key(); // String parentNs = getParentNs(mapKey, getMember()); return UID.create(declaringClass.getClassNs(), predicate.ns(), predicate.ln(), null); } else { return null; } }
public final void addClasses(Class<?>... classes) { for (Class<?> clazz : classes) { if (clazz.getAnnotation(ClassMapping.class) != null) { MappedClass mappedClass = mappedClassFactory.getMappedClass(clazz); if (mappedClass.getUID() != null) { ClassMapping classMapping = clazz.getAnnotation(ClassMapping.class); if (clazz.isEnum() && !classMapping.parent().equals(Object.class)) { MappedClass parentClass = mappedClassFactory.getMappedClass(classMapping .parent()); for (Object constant : clazz.getEnumConstants()) { UID instance = new UID(mappedClass.getClassNs(), ((Enum) constant).name()); addClass(instance, parentClass); } } addClass(mappedClass.getUID(), mappedClass); } for (MappedClass superClass : mappedClass.getMappedSuperClasses()) { polymorphicClasses.add(superClass.getJavaClass()); } mappedClasses.add(mappedClass); } else { throw new IllegalArgumentException("No @ClassMapping annotation for " + clazz.getName()); } } }
@Nullable public UID getValuePredicate() { MapElements mapKey = getAnnotation(MapElements.class); if (mapKey != null) { Predicate predicate = mapKey.value(); try { // String parentNs = getParentNs(mapKey, getMember()); return UID.create(declaringClass.getClassNs(), predicate.ns(), predicate.ln(), null); } catch (IllegalArgumentException e) { return null; } } else { return null; } }
@Nullable private MappedPath getPathMapping(MappedClass mappedClass, Constructor<?> constructor, int parameterIndex, String property) { boolean reference = mappedClass.hasProperty(property); ConstructorParameter constructorParameter = new ConstructorParameter(constructor, parameterIndex, mappedClass, property, reference); if (mappedClass.hasProperty(property)) { return mappedClass.getMappedPath(property); } else { List<MappedPredicate> path = getPredicatePath(mappedClass.getClassNs(), constructorParameter); return getMappedPath(constructorParameter, path); } }
subject = new UID(mappedClass.getClassNs(), ((Enum<?>) instance).name()); put(subject, instance); } else if (seen.add(instance)) {