/** * INTERNAL: */ public void process(MetadataDescriptor descriptor) { // Set the change tracking flag on the Metadata Descriptor. descriptor.setHasChangeTracking(); // Process the change tracking metadata. ClassDescriptor classDescriptor = descriptor.getClassDescriptor(); if (m_type == null || m_type.equals(ChangeTrackingType.AUTO.name())) { // By setting the policy to null, this will unset any global // settings. EclipseLink will then determine the change tracking // policy at runtime. classDescriptor.setObjectChangePolicy(null); } else if (m_type.equals(ChangeTrackingType.ATTRIBUTE.name())) { classDescriptor.setObjectChangePolicy(new AttributeChangeTrackingPolicy()); } else if (m_type.equals(ChangeTrackingType.OBJECT.name())) { classDescriptor.setObjectChangePolicy(new ObjectChangeTrackingPolicy()); } else if (m_type.equals(ChangeTrackingType.DEFERRED.name())) { classDescriptor.setObjectChangePolicy(new DeferredChangeDetectionPolicy()); } }
/** * Initialize a new or existing descriptor configuring the necessary * policies as well as */ protected void configure(ClassDescriptor descriptor, String... tableNames) { // Configure Table names if provided if (tableNames != null) { if (tableNames.length == 0) { if (descriptor.getTables().size() == 0) { descriptor.descriptorIsAggregate(); } } else { for (int index = 0; index < tableNames.length; index++) { descriptor.addTableName(tableNames[index]); } } } descriptor.setObjectChangePolicy(new AttributeChangeTrackingPolicy()); descriptor.setInstantiationPolicy(new DynamicTypeInstantiationPolicy((DynamicTypeImpl) getType())); for (int index = 0; index < descriptor.getMappings().size(); index++) { addMapping((DatabaseMapping) descriptor.getMappings().get(index)); } descriptor.setProperty(DynamicTypeImpl.DESCRIPTOR_PROPERTY, entityType); }
private void customizeObjectChangePolicy(final ClassDescriptor clazzDescriptor, final Session session) { final String propertyValue = (String) session.getProperty( PersistenceUnitProperties.ZALANDO_ECLIPSELINK_CHANGE_TRACKER_NAME); ChangeTrackingType changeTrackingType = ChangeTrackingType.AUTO; if (propertyValue != null && (!propertyValue.trim().isEmpty())) { try { changeTrackingType = ChangeTrackingType.valueOf(propertyValue); } catch (Exception e) { logWarning(session, COULD_NOT_DETERMINE_CHANGE_TRACKING_TYPE, propertyValue); changeTrackingType = ChangeTrackingType.AUTO; } } switch (changeTrackingType) { case DEFERRED : clazzDescriptor.setObjectChangePolicy(new DeferredChangeDetectionPolicy()); logFine(session, SET_OBJECT_CHANGE_POLICY_TO, DEFERRED_CHANGE_DETECTION_POLICY); break; case OBJECT : clazzDescriptor.setObjectChangePolicy(new ObjectChangeTrackingPolicy()); logFine(session, SET_OBJECT_CHANGE_POLICY_TO, OBJECT_CHANGE_TRACKING_POLICY); break; case ATTRIBUTE : clazzDescriptor.setObjectChangePolicy(new AttributeChangeTrackingPolicy()); logFine(session, SET_OBJECT_CHANGE_POLICY_TO, ATTRIBUTE_CHANGE_TRACKING_POLICY); break; case AUTO : default : logFine(session, USE_DEFAULT_CHANGE_TRACKING_POLICY); } }
setObjectChangePolicy(new AttributeChangeTrackingPolicy());
setObjectChangePolicy(new AttributeChangeTrackingPolicy());
setObjectChangePolicy(new AttributeChangeTrackingPolicy());