/** * Searches for an extended entity and returns it if found, otherwise returns the original entity. * * @param originalMetaClass original entity * @return extended or original entity */ public Class getEffectiveClass(MetaClass originalMetaClass) { Class extClass = getExtendedClass(originalMetaClass); return extClass == null ? originalMetaClass.getJavaClass() : extClass; }
public Collection<MetaClassInfo> getAllMetaClassesInfo() { Set<MetaClass> metaClasses = new HashSet<>(metadata.getTools().getAllPersistentMetaClasses()); metaClasses.addAll(metadata.getTools().getAllEmbeddableMetaClasses()); return metaClasses.stream() .filter(metaClass -> metadata.getExtendedEntities().getExtendedClass(metaClass) == null) .map(MetaClassInfo::new) .collect(Collectors.toList()); }
/** * Initialize entity annotations from definition in <code>metadata.xml</code>. * <p>Can be overridden in application projects to handle application-specific annotations.</p> * * @param xmlAnnotations map of class name to annotations map * @param metaClass MetaClass instance to assign annotations */ protected void addMetaAnnotationsFromXml(List<XmlAnnotations> xmlAnnotations, MetaClass metaClass) { for (XmlAnnotations xmlAnnotation : xmlAnnotations) { MetaClass metaClassFromXml = session.getClassNN(ReflectionHelper.getClass(xmlAnnotation.entityClass)); Class extendedClass = extendedEntities.getExtendedClass(metaClassFromXml); MetaClass effectiveMetaClass = extendedClass != null ? session.getClassNN(extendedClass) : metaClassFromXml; if (effectiveMetaClass.equals(metaClass)) { for (Map.Entry<String, XmlAnnotation> entry : xmlAnnotation.annotations.entrySet()) { assignMetaAnnotationValueFromXml(entry.getKey(), entry.getValue(), metaClass.getAnnotations()); } for (XmlAnnotations attributeAnnotation : xmlAnnotation.attributeAnnotations) { MetaProperty property = metaClass.getPropertyNN(attributeAnnotation.entityClass); for (Map.Entry<String, XmlAnnotation> entry : attributeAnnotation.annotations.entrySet()) { assignMetaAnnotationValueFromXml(entry.getKey(), entry.getValue(), property.getAnnotations()); } } break; } } }
protected String convertToExtendedEntityTarget(Permission permission) { if (permission.getType() == PermissionType.ENTITY_OP || permission.getType() == PermissionType.ENTITY_ATTR) { String target = permission.getTarget(); int pos = target.indexOf(Permission.TARGET_PATH_DELIMETER); if (pos > -1) { String entityName = target.substring(0, pos); Class extendedClass = metadata.getExtendedEntities().getExtendedClass(metadata.getClassNN(entityName)); if (extendedClass != null) { MetaClass extMetaClass = metadata.getClassNN(extendedClass); return extMetaClass.getName() + Permission.TARGET_PATH_DELIMETER + target.substring(pos + 1); } } } return null; }
public TreeMap<String, String> getEntityMetaClasses() { TreeMap<String, String> options = new TreeMap<>(); for (MetaClass metaClass : metadata.getTools().getAllPersistentMetaClasses()) { if (metadata.getExtendedEntities().getExtendedClass(metaClass) == null) { MetaClass originalMetaClass = metadata.getExtendedEntities().getOriginalOrThisMetaClass(metaClass); String originalName = originalMetaClass.getName(); Class javaClass = originalMetaClass.getJavaClass(); if (metadata.getTools().hasCompositePrimaryKey(metaClass) && !HasUuid.class.isAssignableFrom(javaClass)) { continue; } String caption = messages.getMessage(javaClass, javaClass.getSimpleName()) + " (" + originalName + ")"; options.put(caption, originalName); } } return options; }
metas.addAll(metadataTools.getAllEmbeddableMetaClasses()); for (MetaClass meta : metas) { if (metadata.getExtendedEntities().getExtendedClass(meta) != null) continue; if (!readPermitted(meta))
if (metadata.getExtendedEntities().getExtendedClass(metaClass) != null) { continue;
entities = new HashMap<>(); for (MetaClass metaClass : metadata.getSession().getClasses()) { if (extendedEntities.getExtendedClass(metaClass) == null && BaseGenericIdEntity.class.isAssignableFrom(metaClass.getJavaClass())) { if (!isUnavailableInSecurityConstraints(metaClass)) { MetaClass mainMetaClass = extendedEntities.getOriginalOrThisMetaClass(metaClass);
Map<String, Object> options = new TreeMap<>(); for (MetaClass metaClass : metadata.getTools().getAllPersistentMetaClasses()) { if (metadata.getExtendedEntities().getExtendedClass(metaClass) == null) { MetaClass originalMetaClass = metadata.getExtendedEntities().getOriginalMetaClass(metaClass); String originalName = originalMetaClass == null ? metaClass.getName() : originalMetaClass.getName();