/** * Load Query Customizer based on annotations on fields and call customizer to modify descriptor. * * @param session the EclipseLink session. */ protected void loadQueryCustomizers(Session session) { Map<Class, ClassDescriptor> descriptors = session.getDescriptors(); for (Class<?> entityClass : descriptors.keySet()) { for (Field field : entityClass.getDeclaredFields()) { String queryCustEntry = entityClass.getName() + "_" + field.getName(); buildQueryCustomizers(entityClass,field,queryCustEntry); List<FilterGenerator> queryCustomizers = queryCustomizerMap.get(queryCustEntry); if (queryCustomizers != null && !queryCustomizers.isEmpty()) { Filter.customizeField(queryCustomizers, descriptors.get(entityClass), field.getName()); } } } }
/** * Request injection for entity listeners on all entities in persistence unit. */ private void requestInjectionForAllEntityListeners() { final Session session = _entityManager.unwrap( Session.class ); for ( final ClassDescriptor descriptor : session.getDescriptors().values() ) { requestInjectionForEntityListeners( descriptor ); } }
Map<Class, ClassDescriptor> descriptors = session.getDescriptors(); List<PortableSequenceGenerator> sequenceGenerators = new ArrayList<PortableSequenceGenerator>(); for (Class<?> entityClass : descriptors.keySet()) {
/** * Checks class descriptors for {@link @DisableVersioning} annotations at the class level and removes the version * database mapping for optimistic locking. * * @param session the current session. */ protected void handleDisableVersioning(Session session) { Map<Class, ClassDescriptor> descriptors = session.getDescriptors(); if (descriptors == null || descriptors.isEmpty()) { return; } for (ClassDescriptor classDescriptor : descriptors.values()) { if (classDescriptor != null && AnnotationUtils.findAnnotation(classDescriptor.getJavaClass(), DisableVersioning.class) != null) { OptimisticLockingPolicy olPolicy = classDescriptor.getOptimisticLockingPolicy(); if (olPolicy != null) { classDescriptor.setOptimisticLockingPolicy(null); } } } }
final Map<?, ?> descs = session.getDescriptors(); if (descs != null)
public void customize(Session session) throws SQLException { ... for (ClassDescriptor descriptor : session.getDescriptors().values()) { if (!descriptor.getTables().isEmpty() && descriptor.getAlias().equalsIgnoreCase(descriptor.getTableName())) { tableName = TABLE_PREFIX + clazz.getSimpleName(); descriptor.setTableName(tableName); } }
public EntityInformation[] locate(EntityManagerFactory entityManagerFactory, JpaGpsDevice device) throws JpaGpsDeviceException { CompassGpsInterfaceDevice gps = (CompassGpsInterfaceDevice) device.getGps(); JpaEntityManager entityManager = (JpaEntityManager) entityManagerFactory.createEntityManager(); Session session = entityManager.getServerSession(); entityManager.close(); ArrayList<EntityInformation> entitiesList = new ArrayList<EntityInformation>(); Map descriptors = session.getDescriptors(); for (Object o : descriptors.values()) { ClassDescriptor classDescriptor = (ClassDescriptor) o; String entityname = classDescriptor.getJavaClassName(); if (!gps.hasMappingForEntityForIndex((entityname))) { if (log.isDebugEnabled()) { log.debug("Entity [" + entityname + "] does not have compass mapping, filtering it out"); } continue; } if (shouldFilter(entityname, classDescriptor, device)) { continue; } Class<?> clazz = classDescriptor.getJavaClass(); ResourceMapping resourceMapping = gps.getMappingForEntityForIndex(entityname); EntityInformation entityInformation = new EntityInformation(clazz, classDescriptor.getAlias(), resourceMapping.getSubIndexHash().getSubIndexes()); entitiesList.add(entityInformation); if (log.isDebugEnabled()) { log.debug("Entity [" + entityname + "] will be indexed"); } } return entitiesList.toArray(new EntityInformation[entitiesList.size()]); }
/** * Customize the {@link Session}. */ @SuppressWarnings("rawtypes") @Override public void customize(final Session session) throws Exception { logInfo(session, CUS_SESSION_START); logSessionProperties(session); logInfo(session, "Build ClassDescriptorCustomizer ..."); final ClassDescriptorCustomizer classDescriptorCustomizer = getClassDescriptorCustomizer(); logInfo(session, "ClassDescriptorCustomizer created."); // process customization on all clazzDescriptors Map<Class, ClassDescriptor> clazzDescriptors = session.getDescriptors(); for (Map.Entry<Class, ClassDescriptor> descriptorEntry : clazzDescriptors.entrySet()) { classDescriptorCustomizer.customize(descriptorEntry.getValue(), session); } logInfo(session, CUS_SESSION_END); }
/** * Checks class descriptors for {@link @RemoveMapping} and {@link RemoveMappings} annotations at the class level * and removes any specified mappings from the ClassDescriptor. * * @param session the current session. */ protected void handleRemoveMapping(Session session) { Map<Class, ClassDescriptor> descriptors = session.getDescriptors(); if (descriptors == null || descriptors.isEmpty()) { return; } for (ClassDescriptor classDescriptor : descriptors.values()) { List<DatabaseMapping> mappingsToRemove = new ArrayList<DatabaseMapping>(); List<RemoveMapping> removeMappings = scanForRemoveMappings(classDescriptor); for (RemoveMapping removeMapping : removeMappings) { if (StringUtils.isBlank(removeMapping.name())) { throw DescriptorException.attributeNameNotSpecified(); } DatabaseMapping databaseMapping = classDescriptor.getMappingForAttributeName(removeMapping.name()); if (databaseMapping == null) { throw DescriptorException.mappingForAttributeIsMissing(removeMapping.name(), classDescriptor); } mappingsToRemove.add(databaseMapping); } for (DatabaseMapping mappingToRemove : mappingsToRemove) { classDescriptor.removeMappingForAttributeName(mappingToRemove.getAttributeName()); } } }
@Override public void customize(final Session session) throws Exception { if (JPAThreadContext.infos.containsKey("properties")) { final String prefix = ((Properties) JPAThreadContext.infos.get("properties")).getProperty("openejb.jpa.table_prefix"); final List<DatabaseTable> tables = new ArrayList<DatabaseTable>(); for (final ClassDescriptor cd : session.getDescriptors().values()) { for (final DatabaseTable table : cd.getTables()) { update(prefix, tables, table); } for (final DatabaseMapping mapping : cd.getMappings()) { if (mapping instanceof ManyToManyMapping) { update(prefix, tables, ((ManyToManyMapping) mapping).getRelationTable()); } else if (mapping instanceof DirectCollectionMapping) { update(prefix, tables, ((DirectCollectionMapping) mapping).getReferenceTable()); } // TODO: else check we need to update something } } final Sequence sequence = session.getDatasourcePlatform().getDefaultSequence(); if (sequence instanceof TableSequence) { final TableSequence ts = ((TableSequence) sequence); ts.setName(prefix + ts.getName()); } } }
for (ClassDescriptor descriptor : session.getDescriptors().values()) { if (!descriptor.getTables().isEmpty()) {
@Override public void customize(Session session) throws SQLException { for (ClassDescriptor descriptor : session.getDescriptors().values()) { // Only change the table name for non-embedable entities with no // @Table already if (!descriptor.getTables().isEmpty() && descriptor.getAlias().equalsIgnoreCase(descriptor.getTableName())) { String tableName = addUnderscores(descriptor.getTableName()); descriptor.setTableName(tableName); for (IndexDefinition index : descriptor.getTables().get(0).getIndexes()) { index.setTargetTable(tableName); } } for (DatabaseMapping mapping : descriptor.getMappings()) { // Only change the column name for non-embedable entities with // no @Column already if (mapping.getField() != null && !mapping.getAttributeName().isEmpty() && mapping.getField().getName().equalsIgnoreCase(mapping.getAttributeName())) { mapping.getField().setName(addUnderscores(mapping.getAttributeName())); } } } }
for(ClassDescriptor candidateAssignableDescriptor : getSession().getDescriptors().values()) {
for (ClassDescriptor descriptor : session.getDescriptors().values()) {
for (ClassDescriptor descriptor : session.getDescriptors().values()) { if (!descriptor.getTables().isEmpty()) { if ((descriptor.getCachePolicy().getDatabaseChangeNotificationType() != null)
for (ClassDescriptor descriptor : session.getDescriptors().values()) { if (!descriptor.getTables().isEmpty()) { if ((descriptor.getCachePolicy().getDatabaseChangeNotificationType() != null)
public void removeLifecycle(EntityManagerFactory entityManagerFactory, JpaGpsDevice device) throws JpaGpsDeviceException { CompassGpsInterfaceDevice gps = (CompassGpsInterfaceDevice) device.getGps(); JpaEntityManager entityManager = (JpaEntityManager) entityManagerFactory.createEntityManager(); Session session = entityManager.getServerSession(); entityManager.close(); Map descriptors = session.getDescriptors(); for (Object o : descriptors.values()) { ClassDescriptor classDescriptor = (ClassDescriptor) o; Class mappedClass = classDescriptor.getJavaClass(); // if we have a parent class that is mapped in JPA and in Compass, then don't add an event listner // since we will add it to the parent descriptor and it will notify this class as well if (classDescriptor.isChildDescriptor()) { Class parentClass = classDescriptor.getInheritancePolicy().getParentDescriptor().getJavaClass(); if (gps.hasMappingForEntityForMirror(parentClass, Cascade.ALL)) { classDescriptor.getDescriptorEventManager().removeListener(dummyEventListener); continue; } } if (gps.hasMappingForEntityForMirror(mappedClass, Cascade.ALL)) { classDescriptor.getDescriptorEventManager().removeListener(eventListener); } } } }
public void injectLifecycle(EntityManagerFactory entityManagerFactory, JpaGpsDevice device) throws JpaGpsDeviceException { CompassGpsInterfaceDevice gps = (CompassGpsInterfaceDevice) device.getGps(); if (eventListener == null) { eventListener = new TopLinkEssentialsEventListener(device); } JpaEntityManager entityManager = (JpaEntityManager) entityManagerFactory.createEntityManager(); Session session = entityManager.getServerSession(); entityManager.close(); Map descriptors = session.getDescriptors(); for (Object o : descriptors.values()) { ClassDescriptor classDescriptor = (ClassDescriptor) o; Class mappedClass = classDescriptor.getJavaClass(); // if we have a parent class that is mapped in JPA and in Compass, then don't add an event listner // since we will add it to the parent descriptor and it will notify this class as well if (classDescriptor.isChildDescriptor()) { Class parentClass = classDescriptor.getInheritancePolicy().getParentDescriptor().getJavaClass(); if (gps.hasMappingForEntityForMirror(parentClass, Cascade.ALL)) { // we need to inject a dummy listener, just so it will kick in the listener notifications classDescriptor.getDescriptorEventManager().addListener(dummyEventListener); continue; } } if (gps.hasMappingForEntityForMirror(mappedClass, Cascade.ALL)) { classDescriptor.getDescriptorEventManager().addListener(eventListener); } } }
@Override public void customize(Session session) throws Exception { Map<Class, ClassDescriptor> descriptors = session.getDescriptors(); for (ClassDescriptor classDescriptor : descriptors.values()) { for (DatabaseMapping databaseMapping : classDescriptor.getMappings()) {
setPrintInnerJoinOnClause(session); Map<Class, ClassDescriptor> descriptorMap = session.getDescriptors(); boolean hasMultipleTableConstraintDependency = hasMultipleTableConstraintDependency(); for (Map.Entry<Class, ClassDescriptor> entry : descriptorMap.entrySet()) {