Jump to: navigation, search

EclipseLinkTypeMappingOptions

Revision as of 15:55, 18 July 2008 by Karen.moore.oracle.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Functional Specification: Dali Support for new EclipseLink type mapping options

bug 240038 - ReadOnly support

bug 240042 - Customizer support

bug 240036 - ChangeTracking support

bug 240035 - CopyPolicy support


Document History

Date Author Version Description & Notes
7-8-2008 Karen Butzke Draft

Project overview

This feature is about adding the attribute mapping converter annotations supported by the EclipseLink JPA extension.

Goals:

  • Add JPA Details view widgets for ReadOnly annotation and read-only eclipselink-orm.xml element
  • Add JPA Details view widgets for Customizer annotation and customizer eclipselink-orm.xml element
  • Add JPA Details view widgets for ChangeTracking annotation and read-only eclipselink-orm.xml element
  • Add JPA Details view widgets for CopyPolicy, CloneCopyPolicy, InstantiationCopyPolicy annotations and copy-policy, clone-copy-policy, and instantiation-copy-policy eclipselink-orm.xml elements
  • Provide validation for these settings

Concepts

EclipseLink ReadOnly documentation

EclipseLink Customizer documentation

EclipseLink ChangeTracking documentation

EclipseLink CopyPolicy documentation

Requirements / Functionality

ReadOnly

  • @ReadOnly annotation supported on Entity and MappedSuperclass
  • Corresponding eclipselink-orm.xml element is read-only
  • Validation
    • Only define Read-Only on the root of the inheritance hierarchy, error if set on subclass


Entity Read-Only check box

EntityReadOnly.jpg


MappedSuperclass Read-Only check box

MappedSuperclassReadOnly.jpg

Customizer

  • @Customizer annotation is supported on Entity, MappedSuperclass, Embeddable
  • Corresponding eclipselink-orm.xml element is customizer
  • Customizer is not inherited so you can specify on any class in the hierarchy
  • Validation
    • Class must implement org.eclipse.persistence.sessions.factories.DescriptorCustomizer
  • Questions
    • Validation if customizer specified twice, as an annotation and as a persistence.xml property? Or does the persistence.xml property override the one specified in annotation like how the orm.xml overrides the annotation?


Entity Customizer

EntityCustomizer.jpg


Mapped Superclass Customizer

MappedSuperclassCustomizer.jpg


Embeddable Customizer

EmbeddableCustomizer.jpg

ChangeTracking

  • @ChangeTracking annotation is supported on Entity, MappedSuperclass, and Embeddable
  • Corresponding eclipselink-orm.xml element is change-tracking
  • Change Tracking options
    • Default (Auto)
    • Auto -> AUTO
    • Attribute -> ATTRIBUTE
    • Object -> OBJECT
    • Default -> DEFERRED


Entity Change Tracking

EntityChangeTracking.jpg


MappedSuperclass Change Tracking

MappedSuperclassChangeTracking.jpg


Embeddable Change Tracking

EmbeddableChangeTracking.jpg

Copying

  • @CopyPolicy, @CloneCopyPolicy, @InstantiationCopyPolicy annotations supported on Entity, MappedSuperclass, and Embeddable
  • Corresponding eclipselink-orm.xml elements copy-policy, clone-copy-policy, instantiation-copy-policy
  • Copy Policy
    • Class must implement org.eclipse.persistence.descriptors.copying.CopyPolicy. Allow user to choose a class, create a class or jump to the class. Validation if it does not implement CopyPolicy
  • Instantiation Copy Policy
    • This is the default, unless in orm.xml and already defined in java
    • The Default option will change in the orm.xml and display what is specified in the java.
  • Clone Copy Policy
    • Must specify one or both of method and working copy method


EntityCopying.jpg


Copying tab from standalone workbench

MWCopying.jpg


Instantiation tab from standalone workbench

MWInstantiation.jpg

API

Issues

This section lists the open issues that are still pending that must be decided prior to fully implementing this project's requirements.

Issue # Owner Description / Notes Decision

Future Considerations

During the research for this project the following items were identified as out of scope but are captured here as potential future enhancements. If agreed upon during the review process these should be logged in the bug system.