Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2009-12-01 12:43:54 -0500
committerkmoore2009-12-01 12:43:54 -0500
commit403c8f965f9d6884423c27e5eef3e4ef6f057aa9 (patch)
treee00abb34a8fdd826994aafbf1ae4dfcf98e4d263
parent04c344085aefe043a52c1394afe35b50acfa54ff (diff)
downloadwebtools.dali-403c8f965f9d6884423c27e5eef3e4ef6f057aa9.tar.gz
webtools.dali-403c8f965f9d6884423c27e5eef3e4ef6f057aa9.tar.xz
webtools.dali-403c8f965f9d6884423c27e5eef3e4ef6f057aa9.zip
bug 295881 - Eclipselink 1.2 platform support
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.properties1
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.xml27
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/schemas/eclipselink_orm_1_2.xsd3519
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/JptEclipseLinkCorePlugin.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/AbstractEclipseLinkOrmXmlDefinition.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmXmlDefinition.java66
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/context/orm/EclipseLinkOrmXml1_1Definition.java69
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformProvider.java175
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/context/orm/EclipseLinkOrmXml1_2Definition.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntityMappings.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/v1_2/EclipseLink1_2.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF1
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/plugin.xml9
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/EclipseLinkOrmXml1_1UiDefinition.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/structure/EclipseLink1_1OrmResourceModelStructureProvider.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/details/orm/EclipseLinkOrmXml1_2UiDefinition.java103
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiFactory.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiProvider.java75
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiDefinition.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/platform/EclipseLink2_0JpaPlatformUiProvider.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF1
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmXml2_0UiDefinition.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Orm2_0ResourceModelStructureProvider.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Persistence2_0ResourceModelStructureProvider.java48
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/JptEclipseLinkCoreTests.java2
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2ContextModelTestCase.java34
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2JpaProjectTests.java168
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/JptEclipseLink1_2CoreContextModelTests.java30
33 files changed, 4447 insertions, 291 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.properties b/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.properties
index 775c743907..f83b1cc6a8 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.properties
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.properties
@@ -27,4 +27,5 @@ ECLIPSELINK_ORM_XML_CONTENT = EclipseLink XML mapping files
ECLIPSELINK1_0_x_PLATFORM = EclipseLink 1.0.x
ECLIPSELINK1_1_x_PLATFORM = EclipseLink 1.1.x
+ECLIPSELINK1_2_x_PLATFORM = EclipseLink 1.2.x
ECLIPSELINK2_0_x_PLATFORM = EclipseLink 2.0.x
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.xml
index 4cccfb918f..7848a3b703 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/plugin.xml
@@ -36,6 +36,12 @@
label="%ECLIPSELINK1_1_x_PLATFORM"
jpaFacetVersion="1.0">
</jpaPlatform>
+ <jpaPlatform
+ id="eclipselink1_2"
+ factoryClass="org.eclipse.jpt.eclipselink.core.internal.v1_2.EclipseLink1_2JpaPlatformFactory"
+ label="%ECLIPSELINK1_2_x_PLATFORM">
+ jpaFacetVersion="1.0"
+ </jpaPlatform>
<jpaPlatform
id="eclipselink2_0"
@@ -107,6 +113,23 @@
</enablement>
</provider>
+ <!-- eclipselink 1.2 library provider is for now a simple copy of eclipselink library provider -->
+ <provider id="jpa-eclipselink1_2-user-library-provider" extends="wtp-user-library-provider">
+ <param name="validator" value="org.eclipse.jst.common.project.facet.core.libprov.user.KeyClassesValidator"/>
+ <param name="validator.param.0" value="javax.persistence.Entity"/>
+ <param name="validator.param.1" value="org.eclipse.persistence.annotations.Cache"/>
+ <enablement>
+ <and>
+ <with variable="requestingProjectFacet">
+ <test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jpt.jpa" forcePluginActivation="true"/>
+ </with>
+ <with variable="jpaPlatform">
+ <equals value="eclipselink1_2"/>
+ </with>
+ </and>
+ </enablement>
+ </provider>
+
<!-- eclipselink 2.0 library provider is for now a simple copy of eclipselink library provider -->
<provider id="jpa-eclipselink2_0-user-library-provider" extends="wtp-user-library-provider">
<param name="validator" value="org.eclipse.jst.common.project.facet.core.libprov.user.KeyClassesValidator"/>
@@ -161,6 +184,10 @@
uri="schemas/eclipselink_orm_1_1.xsd" />
<uri
+ name="http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_1_2.xsd"
+ uri="schemas/eclipselink_orm_1_2.xsd" />
+
+ <uri
name="http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_0.xsd"
uri="schemas/eclipselink_orm_2_0.xsd" />
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/schemas/eclipselink_orm_1_2.xsd b/jpa/plugins/org.eclipse.jpt.eclipselink.core/schemas/eclipselink_orm_1_2.xsd
new file mode 100644
index 0000000000..f7c2b26770
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/schemas/eclipselink_orm_1_2.xsd
@@ -0,0 +1,3519 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+ Copyright (c) 1998, 2009 Oracle. All rights reserved.
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ which accompanies this distribution.
+ The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ and the Eclipse Distribution License is available at
+ http://www.eclipse.org/org/documents/edl-v10.php.
+
+ Contributors:
+ Oracle - initial API and implementation from Oracle TopLink
+*****************************************************************************/
+-->
+
+<!-- Java Persistence API object-relational mapping file schema -->
+<xsd:schema targetNamespace="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
+ xmlns:orm="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.2">
+
+ <xsd:annotation>
+ <xsd:documentation>
+ @(#)eclipselink_orm_1_2.xsd 1.0 February 1 2008
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+
+ This is the XML Schema for the native Eclipselink XML mapping file
+ The file may be named "META-INF/eclipselink-orm.xml" in the persistence
+ archive or it may be named some other name which would be
+ used to locate the file as resource on the classpath.
+ Object/relational mapping files must indicate the object/relational
+ mapping file schema by using the persistence namespace:
+
+ http://www.eclipse.org/eclipselink/xsds/persistence/orm
+
+ and indicate the version of the schema by using the version element as shown below:
+
+ <entity-mappings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm
+ eclipselink_orm_1_2.xsd
+ version="1.2">
+ ...
+ </entity-mappings>
+
+ ]]></xsd:documentation>
+ </xsd:annotation>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="emptyType"/>
+ <xsd:simpleType name="versionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="[0-9]+(\.[0-9]+)*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="access-methods">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="get-method" type="xsd:string" use="required"/>
+ <xsd:attribute name="set-method" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="cache">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The Cache annotation is used to set an
+ * org.eclipse.persistence.descriptors.invalidation.CacheInvalidationPolicy
+ * which sets objects in EclipseLink's identity maps to be invalid
+ * following given rules. By default in EclipseLink, objects do not
+ * expire in the cache. Several different policies are available to
+ * allow objects to expire.
+ *
+ * @see org.eclipse.persistence.annotations.CacheType
+ *
+ * A Cache anotation may be defined on an Entity or MappedSuperclass.
+ * In the case of inheritance, a Cache annotation should only be defined
+ * on the root of the inheritance hierarchy.
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface Cache {
+ /**
+ * (Optional) The type of cache to use.
+ */
+ CacheType type() default SOFT_WEAK;
+
+ /**
+ * (Optional) The size of cache to use.
+ */
+ int size() default 100;
+
+ /**
+ * (Optional) Cached instances in the shared cache or a client
+ * isolated cache.
+ */
+ boolean shared() default true;
+
+ /**
+ * (Optional) Expire cached instance after a fix period of time (ms).
+ * Queries executed against the cache after this will be forced back
+ * to the database for a refreshed copy
+ */
+ int expiry() default -1; // minus one is no expiry.
+
+ /**
+ * (Optional) Expire cached instance a specific time of day. Queries
+ * executed against the cache after this will be forced back to the
+ * database for a refreshed copy
+ */
+ TimeOfDay expiryTimeOfDay() default @TimeOfDay(specified=false);
+
+ /**
+ * (Optional) Force all queries that go to the database to always
+ * refresh the cache.
+ */
+ boolean alwaysRefresh() default false;
+
+ /**
+ * (Optional) For all queries that go to the database, refresh the
+ * cache only if the data received from the database by a query is
+ * newer than the data in the cache (as determined by the optimistic
+ * locking field)
+ */
+ boolean refreshOnlyIfNewer() default false;
+
+ /**
+ * (Optional) Setting to true will force all queries to bypass the
+ * cache for hits but still resolve against the cache for identity.
+ * This forces all queries to hit the database.
+ */
+ boolean disableHits() default false;
+
+ /**
+ * (Optional) The cache coordination mode.
+ */
+ CacheCoordinationType coordinationType() default SEND_OBJECT_CHANGES;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice>
+ <xsd:element name="expiry" type="xsd:integer" minOccurs="0"/>
+ <xsd:element name="expiry-time-of-day" type="orm:time-of-day" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:attribute name="size" type="xsd:integer"/>
+ <xsd:attribute name="shared" type="xsd:boolean"/>
+ <xsd:attribute name="type" type="orm:cache-type"/>
+ <xsd:attribute name="always-refresh" type="xsd:boolean"/>
+ <xsd:attribute name="refresh-only-if-newer" type="xsd:boolean"/>
+ <xsd:attribute name="disable-hits" type="xsd:boolean"/>
+ <xsd:attribute name="coordination-type" type="orm:cache-coordination-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="cache-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The CacheType enum is used with the Cache annotation for a
+ * persistent class. It defines the type of IdentityMap/Cache used for
+ * the class. By default the SOFT_WEAK cache type is used.
+ *
+ * @see org.eclipse.persistence.annotations.Cache
+ */
+ public enum CacheType {
+ /**
+ * Provides full caching and guaranteed identity. Caches all objects
+ * and does not remove them.
+ * WARNING: This method may be memory intensive when many objects are
+ * read.
+ */
+ FULL,
+
+ /**
+ * Similar to the FULL identity map except that the map holds the
+ * objects using weak references. This method allows full garbage
+ * collection and provides full caching and guaranteed identity.
+ */
+ WEAK,
+
+ /**
+ * Similar to the FULL identity map except that the map holds the
+ * objects using soft references. This method allows full garbage
+ * collection when memory is low and provides full caching and
+ * guaranteed identity.
+ */
+ SOFT,
+
+ /**
+ * Similar to the WEAK identity map except that it maintains a
+ * most-frequently-used sub-cache. The size of the sub-cache is
+ * proportional to the size of the identity map as specified by
+ * descriptor's setIdentityMapSize() method. The sub-cache
+ * uses soft references to ensure that these objects are
+ * garbage-collected only if the system is low on memory.
+ */
+ SOFT_WEAK,
+
+ /**
+ * Identical to the soft cache weak (SOFT_WEAK) identity map except
+ * that it uses hard references in the sub-cache. Use this identity
+ * map if soft references do not behave properly on your platform.
+ */
+ HARD_WEAK,
+
+ /**
+ * A cache identity map maintains a fixed number of objects
+ * specified by the application. Objects are removed from the cache
+ * on a least-recently-used basis. This method allows object
+ * identity for the most commonly used objects.
+ * WARNING: Furnishes caching and identity, but does not guarantee
+ * identity.
+ */
+ CACHE,
+
+ /**
+ * WARNING: Does not preserve object identity and does not cache
+ * objects.
+ */
+ NONE
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="FULL"/>
+ <xsd:enumeration value="WEAK"/>
+ <xsd:enumeration value="SOFT"/>
+ <xsd:enumeration value="SOFT_WEAK"/>
+ <xsd:enumeration value="HARD_WEAK"/>
+ <xsd:enumeration value="CACHE"/>
+ <xsd:enumeration value="NONE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="cache-coordination-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * An enum that is used within the Cache annotation.
+ *
+ * @see org.eclipse.persistence.annotations.Cache
+ */
+ public enum CacheCoordinationType {
+ /**
+ * Sends a list of changed objects including data about the changes.
+ * This data is merged into the receiving cache.
+ */
+ SEND_OBJECT_CHANGES,
+
+ /**
+ * Sends a list of the identities of the objects that have changed.
+ * The receiving cache invalidates the objects (rather than changing
+ * any of the data)
+ */
+ INVALIDATE_CHANGED_OBJECTS,
+
+ /**
+ * Same as SEND_OBJECT_CHANGES except it also includes any newly
+ * created objects from the transaction.
+ */
+ SEND_NEW_OBJECTS_WITH_CHANGES,
+
+ /**
+ * Does no cache coordination.
+ */
+ NONE
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="SEND_OBJECT_CHANGES"/>
+ <xsd:enumeration value="INVALIDATE_CHANGED_OBJECTS"/>
+ <xsd:enumeration value="SEND_NEW_OBJECTS_WITH_CHANGES"/>
+ <xsd:enumeration value="NONE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="change-tracking">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The ChangeTracking annotation is used to specify the
+ * org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy
+ * which computes changes sets for EclipseLink's UnitOfWork commit
+ * process. An ObjectChangePolicy is stored on an Entity's descriptor.
+ *
+ * A ChangeTracking annotation may be specified on an Entity,
+ * MappedSuperclass or Embeddable.
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface ChangeTracking {
+ /**
+ * (Optional) The type of change tracking to use.
+ */
+ ChangeTrackingType value() default AUTO;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="type" type="orm:change-tracking-type" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="change-tracking-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * An enum that is used within the ChangeTracking annotation.
+ */
+ public enum ChangeTrackingType {
+ /**
+ * An ATTRIBUTE change tracking type allows change tracking at the
+ * attribute level of an object. Objects with changed attributes will
+ * be processed in the commit process to include any changes in the
+ * results of the commit. Unchanged objects will be ignored.
+ */
+ ATTRIBUTE,
+
+ /**
+ * An OBJECT change tracking policy allows an object to calculate for
+ * itself whether it has changed. Changed objects will be processed in
+ * the commit process to include any changes in the results of the
+ * commit. Unchanged objects will be ignored.
+ */
+ OBJECT,
+
+ /**
+ * A DEFERRED change tracking policy defers all change detection to
+ * the UnitOfWork's change detection process. Essentially, the
+ * calculateChanges() method will run for all objects in a UnitOfWork.
+ * This is the default ObjectChangePolicy
+ */
+ DEFERRED,
+
+ /**
+ * Will not set any change tracking policy.
+ */
+ AUTO
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="ATTRIBUTE"/>
+ <xsd:enumeration value="OBJECT"/>
+ <xsd:enumeration value="DEFERRED"/>
+ <xsd:enumeration value="AUTO"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="customizer">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The Customizer annotation is used to specify a class that implements
+ * the org.eclipse.persistence.config.DescriptorCustomizer
+ * interface and is to run against an enetity's class descriptor after all
+ * metadata processing has been completed.
+ *
+ * The Customizer annotation may be defined on an Entity, MappedSuperclass
+ * or Embeddable class. In the case of inheritance, a Customizer is not
+ * inherited from its parent classes.
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface Customizer {
+ /**
+ * (Required) Defines the name of the descriptor customizer class that
+ * should be applied for the related entity or embeddable class.
+ */
+ Class value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="direction-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * An enum that is used within the StoredProcedureParameter annotation.
+ * It is used to specify the direction of the stored procedure
+ * parameters of a named stored procedure query.
+ */
+ public enum Direction {
+ /**
+ * Input parameter
+ */
+ IN,
+
+ /**
+ * Output parameter
+ */
+ OUT,
+
+ /**
+ * Input and output parameter
+ */
+ IN_OUT,
+
+ /**
+ * Output cursor
+ */
+ OUT_CURSOR
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="IN"/>
+ <xsd:enumeration value="OUT"/>
+ <xsd:enumeration value="IN_OUT"/>
+ <xsd:enumeration value="OUT_CURSOR"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:element name="entity-mappings">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The entity-mappings element is the root element of an mapping
+ file. It contains the following four types of elements:
+
+ 1. The persistence-unit-metadata element contains metadata
+ for the entire persistence unit. It is undefined if this element
+ occurs in multiple mapping files within the same persistence unit.
+
+ 2. The package, schema, catalog and access elements apply to all of
+ the entity, mapped-superclass and embeddable elements defined in
+ the same file in which they occur.
+
+ 3. The sequence-generator, table-generator, named-query,
+ named-native-query and sql-result-set-mapping elements are global
+ to the persistence unit. It is undefined to have more than one
+ sequence-generator or table-generator of the same name in the same
+ or different mapping files in a persistence unit. It is also
+ undefined to have more than one named-query, named-native-query, or
+ result-set-mapping of the same name in the same or different mapping
+ files in a persistence unit.
+
+ 4. The entity, mapped-superclass and embeddable elements each define
+ the mapping information for a managed persistent class. The mapping
+ information contained in these elements may be complete or it may
+ be partial.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="persistence-unit-metadata" type="orm:persistence-unit-metadata" minOccurs="0"/>
+ <xsd:element name="package" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="schema" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="catalog" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="access" type="orm:access-type" minOccurs="0"/>
+ <xsd:element name="converter" type="orm:converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="type-converter" type="orm:type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sequence-generator" type="orm:sequence-generator" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="table-generator" type="orm:table-generator" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="named-query" type="orm:named-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="named-native-query" type="orm:named-native-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="named-stored-procedure-query" type="orm:named-stored-procedure-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sql-result-set-mapping" type="orm:sql-result-set-mapping" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="mapped-superclass" type="orm:mapped-superclass" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="entity" type="orm:entity" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="embeddable" type="orm:embeddable" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="version" type="orm:versionType" fixed="1.2" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="existence-type">
+ <xsd:annotation>
+ <xsd:documentation>
+ /**
+ * The ExistenceChecking annotation is used to specify the type of
+ * checking EclipseLink should use when updating entities.
+ *
+ * An existence-checking specification is supported on an Entity or
+ * MappedSuperclass annotation.
+ */
+ public @interface ExistenceChecking {
+
+ /**
+ * (Optional) Set the existence check for determining
+ * if an insert or update should occur for an object.
+ */
+ ExistenceType value() default CHECK_CACHE;
+ }
+
+ /**
+ * Assume that if the objects primary key does not include null and
+ * it is in the cache, then it must exist.
+ */
+ CHECK_CACHE,
+
+ /**
+ * Perform does exist check on the database.
+ */
+ CHECK_DATABASE,
+
+ /**
+ * Assume that if the objects primary key does not include null then
+ * it must exist. This may be used if the application guarantees or
+ * does not care about the existence check.
+ */
+ ASSUME_EXISTENCE,
+
+ /**
+ * Assume that the object does not exist. This may be used if the
+ * application guarantees or does not care about the existence check.
+ * This will always force an insert to be called.
+ */
+ ASSUME_NON_EXISTENCE
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="CHECK_CACHE"/>
+ <xsd:enumeration value="CHECK_DATABASE"/>
+ <xsd:enumeration value="ASSUME_EXISTENCE"/>
+ <xsd:enumeration value="ASSUME_NON_EXISTENCE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="persistence-unit-metadata">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Metadata that applies to the persistence unit and not just to
+ the mapping file in which it is contained.
+
+ If the xml-mapping-metadata-complete element is specified,
+ the complete set of mapping metadata for the persistence unit
+ is contained in the XML mapping files for the persistence unit.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="xml-mapping-metadata-complete" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="exclude-default-mappings" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="persistence-unit-defaults" type="orm:persistence-unit-defaults" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="persistence-unit-defaults">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ These defaults are applied to the persistence unit as a whole
+ unless they are overridden by local annotation or XML
+ element settings.
+
+ schema - Used as the schema for all tables, secondary tables,
+ collection tables, sequence generators, and table generators
+ that apply to the persistence unit
+ catalog - Used as the catalog for all tables, secondary tables,
+ collection tables, sequence generators, and table generators
+ that apply to the persistence unit
+ access - Used as the access type for all managed classes in
+ the persistence unit
+ cascade-persist - Adds cascade-persist to the set of cascade options
+ in all entity relationships of the persistence unit
+ entity-listeners - List of default entity listeners to be invoked
+ on each entity in the persistence unit.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="schema" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="catalog" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="delimited-identifiers" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="access" type="orm:access-type" minOccurs="0"/>
+ <xsd:element name="cascade-persist" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="entity-listeners" type="orm:entity-listeners" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="entity">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the settings and mappings for an entity. Is allowed to be
+ sparsely populated and used in conjunction with the annotations.
+ Alternatively, the metadata-complete attribute can be used to
+ indicate that no annotations on the entity class (and its fields
+ or properties) are to be processed. If this is the case then
+ the defaulting rules for the entity and its sub-elements will
+ be recursively applied.
+
+ @Target(TYPE) @Retention(RUNTIME)
+ public @interface Entity {
+ String name() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="customizer" type="orm:customizer" minOccurs="0"/>
+ <xsd:element name="change-tracking" type="orm:change-tracking" minOccurs="0"/>
+ <xsd:element name="table" type="orm:table" minOccurs="0"/>
+ <xsd:element name="secondary-table" type="orm:secondary-table" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="primary-key-join-column" type="orm:primary-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="id-class" type="orm:id-class" minOccurs="0"/>
+ <xsd:element name="primary-key" type="orm:primary-key" minOccurs="0"/>
+ <xsd:element name="inheritance" type="orm:inheritance" minOccurs="0"/>
+ <xsd:element name="discriminator-value" type="orm:discriminator-value" minOccurs="0"/>
+ <xsd:element name="discriminator-column" type="orm:discriminator-column" minOccurs="0"/>
+ <xsd:element name="optimistic-locking" type="orm:optimistic-locking" minOccurs="0"/>
+ <xsd:element name="cache" type="orm:cache" minOccurs="0"/>
+ <xsd:element name="converter" type="orm:converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="type-converter" type="orm:type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="copy-policy" type="orm:copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="instantiation-copy-policy" type="orm:instantiation-copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clone-copy-policy" type="orm:clone-copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sequence-generator" type="orm:sequence-generator" minOccurs="0"/>
+ <xsd:element name="table-generator" type="orm:table-generator" minOccurs="0"/>
+ <xsd:element name="named-query" type="orm:named-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="named-native-query" type="orm:named-native-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="named-stored-procedure-query" type="orm:named-stored-procedure-query" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sql-result-set-mapping" type="orm:sql-result-set-mapping" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="exclude-default-listeners" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="exclude-superclass-listeners" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="entity-listeners" type="orm:entity-listeners" minOccurs="0"/>
+ <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/>
+ <xsd:element name="post-persist" type="orm:post-persist" minOccurs="0"/>
+ <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/>
+ <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/>
+ <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/>
+ <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/>
+ <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="attributes" type="orm:attributes" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="cacheable" type="xsd:boolean"/>
+ <xsd:attribute name="metadata-complete" type="xsd:boolean"/>
+ <xsd:attribute name="read-only" type="xsd:boolean"/>
+ <xsd:attribute name="existence-checking" type="orm:existence-type"/>
+ <xsd:attribute name="exclude-default-mappings" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="access-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ This element determines how the persistence provider accesses the
+ state of an entity or embedded object.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="PROPERTY"/>
+ <xsd:enumeration value="FIELD"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="association-override">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface AssociationOverride {
+ String name();
+ JoinColumn[] joinColumns() default{};
+ JoinTable joinTable() default @JoinTable;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="join-table" type="orm:join-table" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="attribute-override">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface AttributeOverride {
+ String name();
+ Column column();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="column" type="orm:column"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="attributes">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ This element contains the entity field or property mappings.
+ It may be sparsely populated to include only a subset of the
+ fields or properties. If metadata-complete for the entity is true
+ then the remainder of the attributes will be defaulted according
+ to the default rules.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="id" type="orm:id" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="embedded-id" type="orm:embedded-id" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:element name="basic" type="orm:basic" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="basic-collection" type="orm:basic-collection" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="basic-map" type="orm:basic-map" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="version" type="orm:version" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="many-to-one" type="orm:many-to-one" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="one-to-many" type="orm:one-to-many" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="one-to-one" type="orm:one-to-one" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="variable-one-to-one" type="orm:variable-one-to-one" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="many-to-many" type="orm:many-to-many" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="element-collection" type="orm:element-collection" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="embedded" type="orm:embedded" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="transformation" type="orm:transformation" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="transient" type="orm:transient" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="basic">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Basic {
+ FetchType fetch() default EAGER;
+ boolean optional() default true;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column" minOccurs="0"/>
+ <xsd:element name="generated-value" type="orm:generated-value" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="lob" type="orm:lob"/>
+ <xsd:element name="temporal" type="orm:temporal"/>
+ <xsd:element name="enumerated" type="orm:enumerated"/>
+ <xsd:element name="convert" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="table-generator" type="orm:table-generator" minOccurs="0"/>
+ <xsd:element name="sequence-generator" type="orm:sequence-generator" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="optional" type="xsd:boolean"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mutable" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="basic-collection">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface BasicCollection {
+ /**
+ * (Optional) Defines whether the value of the field or property
+ * should be lazily loaded or must be eagerly fetched. The EAGER
+ * strategy is a requirement on the persistence provider runtime that
+ * the value must be eagerly fetched. The LAZY strategy is a hint to
+ * the persistence provider runtime. If not specified, defaults to
+ * LAZY.
+ */
+ FetchType fetch() default LAZY;
+
+ /**
+ * (Optional) The name of the value column that holds the direct
+ * collection data. Defaults to the property or field name.
+ */
+ Column valueColumn() default @Column;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="value-column" type="orm:column" minOccurs="0"/>
+ <xsd:element name="convert" type="xsd:string" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="collection-table" type="orm:eclipselink-collection-table" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="basic-map">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface BasicMap {
+ /**
+ * (Optional) Defines whether the value of the field or property
+ * should be lazily loaded or must be eagerly fetched. The EAGER
+ * strategy is a requirement on the persistence provider runtime that
+ * the value must be eagerly fetched. The LAZY strategy is a hint to
+ * the persistence provider runtime. If not specified, defaults to
+ * LAZY.
+ */
+ FetchType fetch() default LAZY;
+
+ /**
+ * (Optional) The name of the data column that holds the direct map
+ * key. If the name on te key column is "", the name will default to:
+ * the name of the property or field; "_KEY".
+ */
+ Column keyColumn() default @Column;
+
+ /**
+ * (Optional) Specify the key converter. Default is equivalent to
+ * specifying @Convert("none"), meaning no converter will be added to
+ * the direct map key.
+ */
+ Convert keyConverter() default @Convert;
+
+ /**
+ * (Optional) The name of the data column that holds the direct
+ * collection data. Defaults to the property or field name.
+ */
+ Column valueColumn() default @Column;
+
+ /**
+ * (Optional) Specify the value converter. Default is equivalent to
+ * specifying @Convert("none"), meaning no converter will be added to
+ * the value column mapping.
+ */
+ Convert valueConverter() default @Convert;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="key-column" type="orm:column" minOccurs="0"/>
+ <xsd:element name="key-converter" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="value-column" type="orm:column" minOccurs="0"/>
+ <xsd:element name="value-converter" type="xsd:string" minOccurs="0"/>
+ <xsd:choice minOccurs="0" maxOccurs="2">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="collection-table" type="orm:eclipselink-collection-table" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="cascade-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH};
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="cascade-all" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="cascade-persist" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="cascade-merge" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="cascade-remove" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="cascade-refresh" type="orm:emptyType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="clone-copy-policy">
+ <xsd:annotation>
+ <xsd:documentation>
+ /**
+ * A CloneCopyPolicy is used to set an
+ * org.eclipse.persistence.descriptors.copying.CloneCopyPolicy on an
+ * Entity. A CloneCopyPolicy must specify at one or both of the "method"
+ * or "workingCopyMethod". "workingCopyMethod" is used to clone objects
+ * that will be returned to the user as they are registered in
+ * EclipseLink's transactional mechanism, the UnitOfWork. "method" will
+ * be used for the clone that is used for comparison in conjunction with
+ * EclipseLink's DeferredChangeDetectionPolicy
+ *
+ * A CloneCopyPolicy should be specified on an Entity, MappedSuperclass
+ * or Embeddable.
+ *
+ * Example:
+ * @Entity
+ * @CloneCopyPolicy(method="myCloneMethod")
+ *
+ * or:
+ *
+ * @Entity
+ * @CloneCopyPolicy(method="myCloneMethod", workingCopyMethod="myWorkingCopyCloneMethod")
+ *
+ * or:
+ *
+ * @Entity
+ * @CloneCopyPolicy(workingCopyMethodName="myWorkingCopyClone")
+ */
+ public @interface CloneCopyPolicy {
+
+ /**
+ * (Optional)
+ * Either method or workingCopyMethod must be specified this defines
+ * a method that will be used to create a clone that will be used
+ * for comparison by
+ * EclipseLink's DeferredChangeDetectionPolicy
+ */
+ String method();
+
+ /**
+ * (Optional)
+ * Either method or workingCopyMethod must be specified
+ * this defines a method that will be used to create a clone that
+ * will be used to create the object returned when registering an
+ * Object in an EclipseLink UnitOfWork
+ */
+ String workingCopyMethod();
+
+ }
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="method" type="xsd:string"/>
+ <xsd:attribute name="working-copy-method" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="collection-table">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface CollectionTable {
+ String name() default "";
+ String catalog() default "";
+ String schema() default "";
+ JoinColumn[] joinColumns() default {};
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="eclipselink-collection-table">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface CollectionTable {
+ /**
+ * (Optional) The name of the collection table. If it is not
+ * specified, it is defaulted to the concatenation of the following:
+ * the name of the source entity; "_" ; the name of the relationship
+ * property or field of the source entity.
+ */
+ String name() default "";
+
+ /**
+ * (Optional) The catalog of the table. It defaults to the persistence
+ * unit default catalog.
+ */
+ String catalog() default "";
+
+ /**
+ * (Optional) The schema of the table. It defaults to the persistence
+ * unit default schema.
+ */
+ String schema() default "";
+
+ /**
+ * (Optional) Used to specify a primary key column that is used as a
+ * foreign key to join to another table. If the source entity uses a
+ * composite primary key, a primary key join column must be specified
+ * for each field of the composite primary key. In a single primary
+ * key case, a primary key join column may optionally be specified.
+ * Defaulting will apply otherwise as follows:
+ * name, the same name as the primary key column of the primary table
+ * of the source entity. referencedColumnName, the same name of
+ * primary key column of the primary table of the source entity.
+ */
+ PrimaryKeyJoinColumn[] primaryKeyJoinColumns() default {};
+
+ /**
+ * (Optional) Unique constraints that are to be placed on the table.
+ * These are only used if table generation is in effect.
+ */
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="primary-key-join-column" type="orm:primary-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Column {
+ String name() default "";
+ boolean unique() default false;
+ boolean nullable() default true;
+ boolean insertable() default true;
+ boolean updatable() default true;
+ String columnDefinition() default "";
+ String table() default "";
+ int length() default 255;
+ int precision() default 0; // decimal precision
+ int scale() default 0; // decimal scale
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="unique" type="xsd:boolean"/>
+ <xsd:attribute name="nullable" type="xsd:boolean"/>
+ <xsd:attribute name="insertable" type="xsd:boolean"/>
+ <xsd:attribute name="updatable" type="xsd:boolean"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="table" type="xsd:string"/>
+ <xsd:attribute name="length" type="xsd:int"/>
+ <xsd:attribute name="precision" type="xsd:int"/>
+ <xsd:attribute name="scale" type="xsd:int"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="conversion-value">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({})
+ @Retention(RUNTIME)
+ public @interface ConversionValue {
+ /**
+ * (Required) Specify the database value.
+ */
+ String dataValue();
+
+ /**
+ * (Required) Specify the object value.
+ */
+ String objectValue();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="data-value" type="xsd:string" use="required"/>
+ <xsd:attribute name="object-value" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="converter">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface Converter {
+ /**
+ * (Required) Name this converter. The name should be unique across
+ * the whole persistence unit.
+ */
+ String name();
+
+ /**
+ * (Required) The converter class to be used. This class must implement
+ * the org.eclipse.persistence.mappings.converters.Converter interface.
+ */
+ Class converterClass();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="column-result">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({}) @Retention(RUNTIME)
+ public @interface ColumnResult {
+ String name();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="copy-policy">
+ <xsd:annotation>
+ <xsd:documentation>
+ /**
+ * A CopyPolicy is used to set a
+ * org.eclipse.persistence.descriptors.copying.CopyPolicy on an Entity.
+ * It is required that a class that implements
+ * org.eclipse.persistence.descriptors.copying.CopyPolicy be specified
+ * as the argument.
+ *
+ * A CopyPolicy should be specified on an Entity, MappedSuperclass or
+ * Embeddable.
+ *
+ * For instance:
+ * @Entity
+ * @CopyPolicy("example.MyCopyPolicy")
+ */
+ public @interface CopyPolicy {
+
+ /*
+ * (Required)
+ * This defines the class of the copy policy. It must specify a class
+ * that implements org.eclipse.persistence.descriptors.copying.CopyPolicy
+ */
+ Class value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="discriminator-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface DiscriminatorColumn {
+ String name() default "DTYPE";
+ DiscriminatorType discriminatorType() default STRING;
+ String columnDefinition() default "";
+ int length() default 31;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="discriminator-type" type="orm:discriminator-type"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="length" type="xsd:int"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="discriminator-class">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * A DiscriminatorClass is used within a VariableOneToOne annotation.
+ */
+ @Target({})
+ @Retention(RUNTIME)
+ public @interface DiscriminatorClass {
+ /**
+ * (Required) The discriminator to be stored on the database.
+ */
+ String discriminator();
+
+ /**
+ * (Required) The class to the instantiated with the given
+ * discriminator.
+ */
+ Class value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="discriminator" type="xsd:string" use="required"/>
+ <xsd:attribute name="value" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="discriminator-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum DiscriminatorType { STRING, CHAR, INTEGER };
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="STRING"/>
+ <xsd:enumeration value="CHAR"/>
+ <xsd:enumeration value="INTEGER"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="discriminator-value">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface DiscriminatorValue {
+ String value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="element-collection">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface ElementCollection {
+ Class targetClass() default void.class;
+ FetchType fetch() default LAZY;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="order-by" type="orm:order-by" minOccurs="0"/>
+ <xsd:element name="order-column" type="orm:order-column" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key" type="orm:map-key" minOccurs="0"/>
+ <xsd:sequence>
+ <xsd:element name="map-key-class" type="orm:map-key-class" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="map-key-temporal" type="orm:temporal" minOccurs="0"/>
+ <xsd:element name="map-key-enumerated" type="orm:enumerated" minOccurs="0"/>
+ <xsd:element name="map-key-convert" type="xsd:string" minOccurs="0"/>
+ <xsd:sequence>
+ <xsd:element name="map-key-attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="map-key-association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key-column" type="orm:map-key-column" minOccurs="0"/>
+ <xsd:element name="map-key-join-column" type="orm:map-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="temporal" type="orm:temporal" minOccurs="0"/>
+ <xsd:element name="enumerated" type="orm:enumerated" minOccurs="0"/>
+ <xsd:element name="lob" type="orm:lob" minOccurs="0"/>
+ <xsd:element name="convert" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:sequence>
+ <xsd:element name="attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:choice minOccurs="0" maxOccurs="2">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="collection-table" type="orm:collection-table" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-class" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="embeddable">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the settings and mappings for embeddable objects. Is
+ allowed to be sparsely populated and used in conjunction with
+ the annotations. Alternatively, the metadata-complete attribute
+ can be used to indicate that no annotations are to be processed
+ in the class. If this is the case then the defaulting rules will
+ be recursively applied.
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface Embeddable {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="customizer" type="orm:customizer" minOccurs="0"/>
+ <xsd:element name="change-tracking" type="orm:change-tracking" minOccurs="0"/>
+ <xsd:element name="converter" type="orm:converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="type-converter" type="orm:type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="attributes" type="orm:attributes" minOccurs="0"/>
+ <xsd:element name="copy-policy" type="orm:copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="instantiation-copy-policy" type="orm:instantiation-copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clone-copy-policy" type="orm:clone-copy-policy" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="metadata-complete" type="xsd:boolean"/>
+ <xsd:attribute name="exclude-default-mappings" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="embedded">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Embedded {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="embedded-id">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface EmbeddedId {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="entity-listener">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines an entity listener to be invoked at lifecycle events
+ for the entities that list this listener.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/>
+ <xsd:element name="post-persist" type="orm:post-persist" minOccurs="0"/>
+ <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/>
+ <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/>
+ <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/>
+ <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/>
+ <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="entity-listeners">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface EntityListeners {
+ Class[] value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="entity-listener" type="orm:entity-listener" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="entity-result">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({}) @Retention(RUNTIME)
+ public @interface EntityResult {
+ Class entityClass();
+ FieldResult[] fields() default {};
+ String discriminatorColumn() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="field-result" type="orm:field-result" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="entity-class" type="xsd:string" use="required"/>
+ <xsd:attribute name="discriminator-column" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="enum-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum EnumType {
+ ORDINAL,
+ STRING
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="ORDINAL"/>
+ <xsd:enumeration value="STRING"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="enumerated">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Enumerated {
+ EnumType value() default ORDINAL;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="orm:enum-type"/>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="fetch-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum FetchType { LAZY, EAGER };
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="LAZY"/>
+ <xsd:enumeration value="EAGER"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="field-result">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({}) @Retention(RUNTIME)
+ public @interface FieldResult {
+ String name();
+ String column();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="column" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="generated-value">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface GeneratedValue {
+ GenerationType strategy() default AUTO;
+ String generator() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="strategy" type="orm:generation-type"/>
+ <xsd:attribute name="generator" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="generation-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO };
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="TABLE"/>
+ <xsd:enumeration value="SEQUENCE"/>
+ <xsd:enumeration value="IDENTITY"/>
+ <xsd:enumeration value="AUTO"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="id">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Id {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column" minOccurs="0"/>
+ <xsd:element name="generated-value" type="orm:generated-value" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="temporal" type="orm:temporal"/>
+ <xsd:element name="convert" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="table-generator" type="orm:table-generator" minOccurs="0"/>
+ <xsd:element name="sequence-generator" type="orm:sequence-generator" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mutable" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="id-class">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface IdClass {
+ Class value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="id-validation">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The IdValidation enum determines the type value that are valid for an Id.
+ * By default null is not allowed, and 0 is not allow for singleton ids of long or int type.
+ * The default value is ZERO for singleton ids, and NULL for composite ids.
+ * This can be set using the @PrimaryKey annotation, or ClassDescriptor API.
+ *
+ * @see PrimaryKey
+ * @see org.eclipse.persistence.descriptors.ClassDescriptor#setIdValidation(IdValidation)
+ * @author James Sutherland
+ * @since EclipseLink 1.0
+ */
+ public enum IdValidation {
+ /**
+ * Only null is not allowed as an id value, 0 is allowed.
+ */
+ NULL,
+
+ /**
+ * null and 0 are not allowed, (only int and long).
+ */
+ ZERO,
+
+ /**
+ * No id validation is done.
+ */
+ NONE
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="NULL"/>
+ <xsd:enumeration value="ZERO"/>
+ <xsd:enumeration value="NONE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="inheritance">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface Inheritance {
+ InheritanceType strategy() default SINGLE_TABLE;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="strategy" type="orm:inheritance-type"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="inheritance-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum InheritanceType { SINGLE_TABLE, JOINED, TABLE_PER_CLASS };
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="SINGLE_TABLE"/>
+ <xsd:enumeration value="JOINED"/>
+ <xsd:enumeration value="TABLE_PER_CLASS"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="instantiation-copy-policy">
+ <xsd:annotation>
+ <xsd:documentation>
+ /**
+ * An InstantiationCopyPolicy is used to set an
+ * org.eclipse.persistence.descriptors.copying.InstantiationCopyPolicy
+ * on an Entity. InstantiationCopyPolicy is the default CopyPolicy in
+ * EclipseLink and therefore this configuration option is only used to
+ * override other types of copy policies
+ *
+ * An InstantiationCopyPolicy should be specified on an Entity,
+ * MappedSuperclass or Embeddable.
+ *
+ * Example:
+ * @Entity
+ * @InstantiationCopyPolicy
+ */
+ public @interface InstantiationCopyPolicy {
+ }
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="join-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface JoinColumn {
+ String name() default "";
+ String referencedColumnName() default "";
+ boolean unique() default false;
+ boolean nullable() default true;
+ boolean insertable() default true;
+ boolean updatable() default true;
+ String columnDefinition() default "";
+ String table() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="referenced-column-name" type="xsd:string"/>
+ <xsd:attribute name="unique" type="xsd:boolean"/>
+ <xsd:attribute name="nullable" type="xsd:boolean"/>
+ <xsd:attribute name="insertable" type="xsd:boolean"/>
+ <xsd:attribute name="updatable" type="xsd:boolean"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="table" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="join-fetch-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum JoinFetchType {
+ /**
+ * An inner join is used to fetch the related object.
+ * This does not allow for null/empty values.
+ */
+ INNER,
+
+ /**
+ * An inner join is used to fetch the related object.
+ * This allows for null/empty values.
+ */
+ OUTER,
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="INNER"/>
+ <xsd:enumeration value="OUTER"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="join-table">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface JoinTable {
+ String name() default "";
+ String catalog() default "";
+ String schema() default "";
+ JoinColumn[] joinColumns() default {};
+ JoinColumn[] inverseJoinColumns() default {};
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="inverse-join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="lob">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Lob {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="lock-mode-type">
+ <xsd:annotation>
+ <xsd:documentation>
+ public enum LockModeType { READ, WRITE, OPTIMISTIC,
+ OPTIMISTIC_FORCE_INCREMENT, PESSIMISTIC_READ, PESSIMISTIC_WRITE,
+ PESSIMISTIC_FORCE_INCREMENT, NONE};
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="READ"/>
+ <xsd:enumeration value="WRITE"/>
+ <xsd:enumeration value="OPTIMISTIC"/>
+ <xsd:enumeration value="OPTIMISTIC_FORCE_INCREMENT"/>
+ <xsd:enumeration value="PESSIMISTIC_READ"/>
+ <xsd:enumeration value="PESSIMISTIC_WRITE"/>
+ <xsd:enumeration value="PESSIMISTIC_FORCE_INCREMENT"/>
+ <xsd:enumeration value="NONE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="many-to-many">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface ManyToMany {
+ Class targetEntity() default void.class;
+ CascadeType[] cascade() default {};
+ FetchType fetch() default LAZY;
+ String mappedBy() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="order-by" type="orm:order-by" minOccurs="0"/>
+ <xsd:element name="order-column" type="orm:order-column" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key" type="orm:map-key" minOccurs="0"/>
+ <xsd:sequence>
+ <xsd:element name="map-key-class" type="orm:map-key-class" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="map-key-temporal" type="orm:temporal" minOccurs="0"/>
+ <xsd:element name="map-key-enumerated" type="orm:enumerated" minOccurs="0"/>
+ <xsd:element name="map-key-convert" type="xsd:string" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="map-key-attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="map-key-association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key-column" type="orm:map-key-column" minOccurs="0"/>
+ <xsd:element name="map-key-join-column" type="orm:map-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="join-table" type="orm:join-table" minOccurs="0"/>
+ <xsd:element name="cascade" type="orm:cascade-type" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-entity" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mapped-by" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="many-to-one">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface ManyToOne {
+ Class targetEntity() default void.class;
+ CascadeType[] cascade() default {};
+ FetchType fetch() default EAGER;
+ boolean optional() default true;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="join-table" type="orm:join-table" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:element name="cascade" type="orm:cascade-type" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-entity" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="optional" type="xsd:boolean"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mapped-by-id" type="xsd:string"/>
+ <xsd:attribute name="id" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="map-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface MapKey {
+ String name() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="map-key-class">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface MapKeyClass {
+ Class value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="map-key-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface MapKeyColumn {
+ String name() default "";
+ boolean unique() default false;
+ boolean nullable() default false;
+ boolean insertable() default true;
+ boolean updatable() default true;
+ String columnDefinition() default "";
+ String table() default "";
+ int length() default 255;
+ int precision() default 0; // decimal precision
+ int scale() default 0; // decimal scale
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="unique" type="xsd:boolean"/>
+ <xsd:attribute name="nullable" type="xsd:boolean"/>
+ <xsd:attribute name="insertable" type="xsd:boolean"/>
+ <xsd:attribute name="updatable" type="xsd:boolean"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="table" type="xsd:string"/>
+ <xsd:attribute name="length" type="xsd:int"/>
+ <xsd:attribute name="precision" type="xsd:int"/>
+ <xsd:attribute name="scale" type="xsd:int"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="map-key-join-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface MapKeyJoinColumn {
+ String name() default "";
+ String referencedColumnName() default "";
+ boolean unique() default false;
+ boolean nullable() default false;
+ boolean insertable() default true;
+ boolean updatable() default true;
+ String columnDefinition() default "";
+ String table() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="referenced-column-name" type="xsd:string"/>
+ <xsd:attribute name="unique" type="xsd:boolean"/>
+ <xsd:attribute name="nullable" type="xsd:boolean"/>
+ <xsd:attribute name="insertable" type="xsd:boolean"/>
+ <xsd:attribute name="updatable" type="xsd:boolean"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="table" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="mapped-superclass">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the settings and mappings for a mapped superclass. Is
+ allowed to be sparsely populated and used in conjunction with
+ the annotations. Alternatively, the metadata-complete attribute
+ can be used to indicate that no annotations are to be processed
+ If this is the case then the defaulting rules will be recursively
+ applied.
+
+ @Target(TYPE) @Retention(RUNTIME)
+ public @interface MappedSuperclass{}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="customizer" type="orm:customizer" minOccurs="0"/>
+ <xsd:element name="change-tracking" type="orm:change-tracking" minOccurs="0"/>
+ <xsd:element name="id-class" type="orm:id-class" minOccurs="0"/>
+ <xsd:element name="primary-key" type="orm:primary-key" minOccurs="0"/>
+ <xsd:element name="optimistic-locking" type="orm:optimistic-locking" minOccurs="0"/>
+ <xsd:element name="cache" type="orm:cache" minOccurs="0"/>
+ <xsd:element name="converter" type="orm:converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="type-converter" type="orm:type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="copy-policy" type="orm:copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="instantiation-copy-policy" type="orm:instantiation-copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clone-copy-policy" type="orm:clone-copy-policy" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="exclude-default-listeners" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="exclude-superclass-listeners" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="entity-listeners" type="orm:entity-listeners" minOccurs="0"/>
+ <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/>
+ <xsd:element name="post-persist" type="orm:post-persist" minOccurs="0"/>
+ <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/>
+ <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/>
+ <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/>
+ <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/>
+ <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="attributes" type="orm:attributes" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="class" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="cacheable" type="xsd:boolean"/>
+ <xsd:attribute name="metadata-complete" type="xsd:boolean"/>
+ <xsd:attribute name="read-only" type="xsd:boolean"/>
+ <xsd:attribute name="existence-checking" type="orm:existence-type"/>
+ <xsd:attribute name="exclude-default-mappings" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="named-native-query">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface NamedNativeQuery {
+ String name();
+ String query();
+ QueryHint[] hints() default {};
+ Class resultClass() default void.class;
+ String resultSetMapping() default ""; //named SqlResultSetMapping
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="query" type="xsd:string"/>
+ <xsd:element name="hint" type="orm:query-hint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="result-class" type="xsd:string"/>
+ <xsd:attribute name="result-set-mapping" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="named-query">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface NamedQuery {
+ String name();
+ String query();
+ QueryHint[] hints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="query" type="xsd:string"/>
+ <xsd:element name="lock-mode" type="orm:lock-mode-type" minOccurs="0"/>
+ <xsd:element name="hint" type="orm:query-hint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="named-stored-procedure-query">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * A NamedStoredProcedureQuery annotation allows the definition of
+ * queries that call stored procedures as named queries.
+ * A NamedStoredProcedureQuery annotation may be defined on an Entity or
+ * MappedSuperclass.
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface NamedStoredProcedureQuery {
+ /**
+ * (Required) Unique name that references this stored procedure query.
+ */
+ String name();
+
+ /**
+ * (Optional) Query hints.
+ */
+ QueryHint[] hints() default {};
+
+ /**
+ * (Optional) Refers to the class of the result.
+ */
+ Class resultClass() default void.class;
+
+ /**
+ * (Optional) The name of the SQLResultMapping.
+ */
+ String resultSetMapping() default "";
+
+ /**
+ * (Required) The name of the stored procedure.
+ */
+ String procedureName();
+
+ /**
+ * (Optional) Whether the query should return a result set.
+ */
+ boolean returnsResultSet() default true;
+
+ /**
+ * (Optional) Defines arguments to the stored procedure.
+ */
+ StoredProcedureParameter[] parameters() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="hint" type="orm:query-hint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="parameter" type="orm:stored-procedure-parameter" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="result-class" type="xsd:string"/>
+ <xsd:attribute name="result-set-mapping" type="xsd:string"/>
+ <xsd:attribute name="procedure-name" type="xsd:string" use="required"/>
+ <xsd:attribute name="returns-result-set" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="object-type-converter">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface ObjectTypeConverter {
+ /**
+ * (Required) Name this converter. The name should be unique
+ * across the whole persistence unit.
+ */
+ String name();
+
+ /**
+ * (Optional) Specify the type stored on the database. The
+ * default is inferred from the type of the persistence
+ * field or property.
+ */
+ Class dataType() default void.class;
+
+ /**
+ * (Optional) Specify the type stored on the entity. The
+ * default is inferred from the type of the persistent
+ * field or property.
+ */
+ Class objectType() default void.class;
+
+ /**
+ * (Required) Specify the conversion values to be used
+ * with the object converter.
+ */
+ ConversionValue[] conversionValues();
+
+ /**
+ * (Optional) Specify a default object value. Used for
+ * legacy data if the data value is missing.
+ */
+ String defaultObjectValue() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="conversion-value" type="orm:conversion-value" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="default-object-value" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="data-type" type="xsd:string"/>
+ <xsd:attribute name="object-type" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="one-to-many">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface OneToMany {
+ Class targetEntity() default void.class;
+ CascadeType[] cascade() default {};
+ FetchType fetch() default LAZY;
+ String mappedBy() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="order-by" type="orm:order-by" minOccurs="0"/>
+ <xsd:element name="order-column" type="orm:order-column" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key" type="orm:map-key" minOccurs="0"/>
+ <xsd:sequence>
+ <xsd:element name="map-key-class" type="orm:map-key-class" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="map-key-temporal" type="orm:temporal" minOccurs="0"/>
+ <xsd:element name="map-key-enumerated" type="orm:enumerated" minOccurs="0"/>
+ <xsd:element name="map-key-convert" type="xsd:string" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="map-key-attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="map-key-association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="map-key-column" type="orm:map-key-column" minOccurs="0"/>
+ <xsd:element name="map-key-join-column" type="orm:map-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:choice>
+ <xsd:element name="join-table" type="orm:join-table" minOccurs="0"/>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:element name="cascade" type="orm:cascade-type" minOccurs="0"/>
+ <xsd:element name="private-owned" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-entity" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mapped-by" type="xsd:string"/>
+ <xsd:attribute name="orphan-removal" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="one-to-one">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface OneToOne {
+ Class targetEntity() default void.class;
+ CascadeType[] cascade() default {};
+ FetchType fetch() default EAGER;
+ boolean optional() default true;
+ String mappedBy() default "";
+ boolean orphanRemoval() default false;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="primary-key-join-column" type="orm:primary-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="join-table" type="orm:join-table" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:element name="cascade" type="orm:cascade-type" minOccurs="0"/>
+ <xsd:element name="private-owned" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-entity" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="optional" type="xsd:boolean"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mapped-by" type="xsd:string"/>
+ <xsd:attribute name="orphan-removal" type="xsd:boolean"/>
+ <xsd:attribute name="mapped-by-id" type="xsd:string"/>
+ <xsd:attribute name="id" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="optimistic-locking">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * An optimistic-locking element is used to specify the type of
+ * optimistic locking EclipseLink should use when updating or deleting
+ * entities. An optimistic-locking specification is supported on
+ * an entity or mapped-superclass.
+ *
+ * It is used in conjunction with the optimistic-locking-type.
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface OptimisticLocking {
+ /**
+ * (Optional) The type of optimistic locking policy to use.
+ */
+ OptimisticLockingType type() default VERSION_COLUMN;
+
+ /**
+ * (Optional) For an optimistic locking policy of type
+ * SELECTED_COLUMNS, this annotation member becomes a (Required)
+ * field.
+ */
+ Column[] selectedColumns() default {};
+
+ /**
+ * (Optional) Specify where the optimistic locking policy should
+ * cascade lock. Currently only supported with VERSION_COLUMN locking.
+ */
+ boolean cascade() default false;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="selected-column" type="orm:column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="orm:optimistic-locking-type"/>
+ <xsd:attribute name="cascade" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="optimistic-locking-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * A simple type that is used within an optimistic-locking
+ * specification to specify the type of optimistic-locking that
+ * EclipseLink should use when updating or deleting entities.
+ */
+ public enum OptimisticLockingType {
+ /**
+ * Using this type of locking policy compares every field in the table
+ * in the WHERE clause when doing an update or a delete. If any field
+ * has been changed, an optimistic locking exception will be thrown.
+ */
+ ALL_COLUMNS,
+
+ /**
+ * Using this type of locking policy compares only the changed fields
+ * in the WHERE clause when doing an update. If any field has been
+ * changed, an optimistic locking exception will be thrown. A delete
+ * will only compare the primary key.
+ */
+ CHANGED_COLUMNS,
+
+ /**
+ * Using this type of locking compares selected fields in the WHERE
+ * clause when doing an update or a delete. If any field has been
+ * changed, an optimistic locking exception will be thrown. Note that
+ * the fields specified must be mapped and not be primary keys.
+ */
+ SELECTED_COLUMNS,
+
+ /**
+ * Using this type of locking policy compares a single version number
+ * in the where clause when doing an update. The version field must be
+ * mapped and not be the primary key.
+ */
+ VERSION_COLUMN
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="ALL_COLUMNS"/>
+ <xsd:enumeration value="CHANGED_COLUMNS"/>
+ <xsd:enumeration value="SELECTED_COLUMNS"/>
+ <xsd:enumeration value="VERSION_COLUMN"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="order-by">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface OrderBy {
+ String value() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="order-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface OrderColumn {
+ String name() default "";
+ boolean nullable() default true;
+ boolean insertable() default true;
+ boolean updatable() default true;
+ String columnDefinition() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="nullable" type="xsd:boolean"/>
+ <xsd:attribute name="insertable" type="xsd:boolean"/>
+ <xsd:attribute name="updatable" type="xsd:boolean"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ <xsd:attribute name="validation-mode" type="orm:order-column-validation-mode"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="order-column-validation-mode">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum OrderColumnValidationMode {
+ NONE,
+ CORRECTION,
+ EXCEPTION
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="NONE"/>
+ <xsd:enumeration value="CORRECTION"/>
+ <xsd:enumeration value="EXCEPTION"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="post-load">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PostLoad {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="post-persist">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PostPersist {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="post-remove">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PostRemove {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="post-update">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PostUpdate {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="pre-persist">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PrePersist {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="pre-remove">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PreRemove {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="pre-update">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD}) @Retention(RUNTIME)
+ public @interface PreUpdate {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="method-name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="primary-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * The PrimaryKey annotation allows advanced configuration of the Id.
+ * A validation policy can be given that allows specifying if zero is a valid id value.
+ * The set of primary key columns can also be specified precisely.
+ *
+ * @author James Sutherland
+ * @since EclipseLink 1.1
+ */
+ @Target({TYPE})
+ @Retention(RUNTIME)
+ public @interface PrimaryKey {
+ /**
+ * (Optional) Configures what id validation is done.
+ * By default 0 is not a valid id value, this can be used to allow 0 id values.
+ */
+ IdValidation validation() default IdValidation.ZERO;
+
+ /**
+ * (Optional) Used to specify the primary key columns directly.
+ * This can be used instead of @Id if the primary key includes a non basic field,
+ * such as a foreign key, or a inheritance discriminator, embedded, or transformation mapped field.
+ */
+ Column[] columns() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="validation" type="orm:id-validation"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="primary-key-join-column">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface PrimaryKeyJoinColumn {
+ String name() default "";
+ String referencedColumnName() default "";
+ String columnDefinition() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="referenced-column-name" type="xsd:string"/>
+ <xsd:attribute name="column-definition" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="property">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ A user defined mapping's property.
+ @Target({METHOD, FIELD, TYPE})
+ @Retention(RUNTIME)
+ public @interface Property {
+ /**
+ * Property name.
+ */
+ String name();
+
+ /**
+ * String representation of Property value,
+ * converted to an instance of valueType.
+ */
+ String value();
+
+ /**
+ * Property value type.
+ * The value converted to valueType by ConversionManager.
+ * If specified must be a simple type that could be handled by
+ * ConversionManager:
+ * numerical, boolean, temporal.
+ */
+ Class valueType() default String.class;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="value" type="xsd:string" use="required"/>
+ <xsd:attribute name="value-type" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="query-hint">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({}) @Retention(RUNTIME)
+ public @interface QueryHint {
+ String name();
+ String value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="value" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="read-transformer">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * Annotation for org.eclipse.persistence.mappings.TransformationMapping.
+ * Unless the TransformationMapping is write-only, it should have a
+ * ReadTransformer, it defines transformation of database column(s)
+ * value(s)into attribute value.
+ *
+ * Also unless it's a read-only mapping, either WriteTransformer
+ * annotation or WriteTransformers annotation should be specified. Each
+ * WriteTransformer defines transformation of the attribute value to a
+ * single database column value (column is specified in the
+ * WriteTransformer).
+ */
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface ReadTransformer {
+ /**
+ * User-defined class that must implement the
+ * org.eclipse.persistence.mappings.transformers.AttributeTransformer
+ * interface. The class will be instantiated, its
+ * buildAttributeValue will be used to create the value to be
+ * assigned to the attribute.
+ * Either transformerClass or method must be specified, but not both.
+ */
+ Class transformerClass() default void.class;
+
+ /**
+ * The mapped class must have a method with this name which returns
+ * a value to be assigned to the attribute (not assigns the value to
+ * the attribute). Either transformerClass or method must be
+ * specified, but not both.
+ */
+ String method() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="transformer-class" type="xsd:string"/>
+ <xsd:attribute name="method" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="secondary-table">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface SecondaryTable {
+ String name();
+ String catalog() default "";
+ String schema() default "";
+ PrimaryKeyJoinColumn[] pkJoinColumns() default {};
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="primary-key-join-column" type="orm:primary-key-join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="sequence-generator">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface SequenceGenerator {
+ String name();
+ String sequenceName() default "";
+ String catalog() default "";
+ String schema() default "";
+ int initialValue() default 1;
+ int allocationSize() default 50;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="sequence-name" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ <xsd:attribute name="initial-value" type="xsd:int"/>
+ <xsd:attribute name="allocation-size" type="xsd:int"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="sql-result-set-mapping">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface SqlResultSetMapping {
+ String name();
+ EntityResult[] entities() default {};
+ ColumnResult[] columns() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="entity-result" type="orm:entity-result" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="column-result" type="orm:column-result" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="stored-procedure-parameter">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * A StoredProcedureParameter annotation is used within a
+ * NamedStoredProcedureQuery annotation.
+ */
+ @Target({})
+ @Retention(RUNTIME)
+ public @interface StoredProcedureParameter {
+ /**
+ * (Optional) The direction of the stored procedure parameter.
+ */
+ Direction direction() default IN;
+
+ /**
+ * (Optional) Stored procedure parameter name.
+ */
+ String name() default "";
+
+ /**
+ * (Required) The query parameter name.
+ */
+ String queryParameter();
+
+ /**
+ * (Optional) The type of Java class desired back from the procedure,
+ * this is dependent on the type returned from the procedure.
+ */
+ Class type() default void.class;
+
+ /**
+ * (Optional) The JDBC type code, this dependent on the type returned
+ * from the procedure.
+ */
+ int jdbcType() default -1;
+
+ /**
+ * (Optional) The JDBC type name, this may be required for ARRAY or
+ * STRUCT types.
+ */
+ String jdbcTypeName() default "";
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="direction" type="orm:direction-type"/>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="query-parameter" type="xsd:string" use="required"/>
+ <xsd:attribute name="type" type="xsd:string"/>
+ <xsd:attribute name="jdbc-type" type="xsd:integer"/>
+ <xsd:attribute name="jdbc-type-name" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="struct-converter">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface StructConverter {
+ /**
+ * (Required) Name this converter. The name should be unique across
+ * the whole persistence unit.
+ */
+ String name();
+
+ /**
+ * (Required) The converter class to be used. This class must
+ * implement the EclipseLink interface
+ * org.eclipse.persistence.mappings.converters.Converter
+ */
+ String converter();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="converter" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="table">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE}) @Retention(RUNTIME)
+ public @interface Table {
+ String name() default "";
+ String catalog() default "";
+ String schema() default "";
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="table-generator">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface TableGenerator {
+ String name();
+ String table() default "";
+ String catalog() default "";
+ String schema() default "";
+ String pkColumnName() default "";
+ String valueColumnName() default "";
+ String pkColumnValue() default "";
+ int initialValue() default 0;
+ int allocationSize() default 50;
+ UniqueConstraint[] uniqueConstraints() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="unique-constraint" type="orm:unique-constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="table" type="xsd:string"/>
+ <xsd:attribute name="catalog" type="xsd:string"/>
+ <xsd:attribute name="schema" type="xsd:string"/>
+ <xsd:attribute name="pk-column-name" type="xsd:string"/>
+ <xsd:attribute name="value-column-name" type="xsd:string"/>
+ <xsd:attribute name="pk-column-value" type="xsd:string"/>
+ <xsd:attribute name="initial-value" type="xsd:int"/>
+ <xsd:attribute name="allocation-size" type="xsd:int"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="temporal">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Temporal {
+ TemporalType value();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="orm:temporal-type"/>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:simpleType name="temporal-type">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ public enum TemporalType {
+ DATE, // java.sql.Date
+ TIME, // java.sql.Time
+ TIMESTAMP // java.sql.Timestamp
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="DATE"/>
+ <xsd:enumeration value="TIME"/>
+ <xsd:enumeration value="TIMESTAMP"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="time-of-day">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({})
+ @Retention(RUNTIME)
+ public @interface TimeOfDay {
+ /**
+ * (Optional) Hour of the day.
+ */
+ int hour() default 0;
+
+ /**
+ * (Optional) Minute of the day.
+ */
+ int minute() default 0;
+
+ /**
+ * (Optional) Second of the day.
+ */
+ int second() default 0;
+
+ /**
+ * (Optional) Millisecond of the day.
+ */
+ int millisecond() default 0;
+
+ /**
+ * Internal use. Do not modify.
+ */
+ boolean specified() default true;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="hour" type="xsd:integer"/>
+ <xsd:attribute name="minute" type="xsd:integer"/>
+ <xsd:attribute name="second" type="xsd:integer"/>
+ <xsd:attribute name="millisecond" type="xsd:integer"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="transformation">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * Transformation is an optional annotation for
+ * org.eclipse.persistence.mappings.TransformationMapping.
+ * TransformationMapping allows to map an attribute to one or more
+ * database columns.
+ *
+ * Transformation annotation is an optional part of
+ * TransformationMapping definition. Unless the TransformationMapping is
+ * write-only, it should have a ReadTransformer, it defines
+ * transformation of database column(s) value(s)into attribute value.
+ * Also unless it's a read-only mapping, either WriteTransformer
+ * annotation or WriteTransformers annotation should be specified. Each
+ * WriteTransformer defines transformation of the attribute value to a
+ * single database column value (column is specified in the
+ * WriteTransformer).
+ */
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface Transformation {
+ /**
+ * (Optional) Defines whether the value of the field or property
+ * should be lazily loaded or must be eagerly fetched. The EAGER
+ * strategy is a requirement on the persistence provider runtime
+ * that the value must be eagerly fetched. The LAZY strategy is a
+ * hint to the persistence provider runtime. If not specified,
+ * defaults to EAGER.
+ */
+ FetchType fetch() default EAGER;
+
+ /**
+ * (Optional) The optional element is a hint as to whether the value
+ * of the field or property may be null. It is disregarded
+ * for primitive types, which are considered non-optional.
+ */
+ boolean optional() default true;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="read-transformer" type="orm:read-transformer"/>
+ <xsd:element name="write-transformer" type="orm:write-transformer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access" type="orm:access-type" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="optional" type="xsd:boolean"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mutable" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="transient">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Transient {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="type-converter">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({TYPE, METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface TypeConverter {
+ /**
+ * (Required) Name this converter. The name should be unique
+ * across the whole persistence unit.
+ */
+ String name();
+
+ /**
+ * (Optional) Specify the type stored on the database. The
+ * default is inferred from the type of the persistence field
+ * or property.
+ */
+ Class dataType() default void.class;
+
+ /**
+ * (Optional) Specify the type stored on the entity. The
+ * default is inferred from the type of the persistent field
+ * or property.
+ */
+ Class objectType() default void.class;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="data-type" type="xsd:string"/>
+ <xsd:attribute name="object-type" type="xsd:string"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="unique-constraint">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({}) @Retention(RUNTIME)
+ public @interface UniqueConstraint {
+ String name() default "";
+ String[] columnNames();
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="column-name" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="variable-one-to-one">
+ <xsd:annotation>
+ <xsd:documentation>
+ /**
+ * Variable one to one mappings are used to represent a pointer
+ * references between a java object and an implementer of an interface.
+ * This mapping is usually represented by a single pointer (stored in an
+ * instance variable) between the source and target objects. In the
+ * relational database tables, these mappings are normally implemented
+ * using a foreign key and a type code.
+ *
+ * A VariableOneToOne can be specified within an Entity,
+ * MappedSuperclass and Embeddable class.
+ */
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface VariableOneToOne {
+ /**
+ * (Optional) The interface class that is the target of the
+ * association. If not specified it will be inferred from the type
+ * of the object being referenced.
+ */
+ Class targetInterface() default void.class;
+
+ /**
+ * (Optional) The operations that must be cascaded to the target of
+ * the association.
+ */
+ CascadeType[] cascade() default {};
+
+ /**
+ * (Optional) Defines whether the value of the field or property
+ * should be lazily loaded or must be eagerly fetched. The EAGER
+ * strategy is a requirement on the persistence provider runtime
+ * that the value must be eagerly fetched. The LAZY strategy is a
+ * hint to the persistence provider runtime. If not specified,
+ * defaults to EAGER.
+ */
+ FetchType fetch() default EAGER;
+
+ /**
+ * (Optional) Whether the association is optional. If set to false
+ * then a non-null relationship must always exist.
+ */
+ boolean optional() default true;
+
+ /**
+ * (Optional) The discriminator column will hold the type
+ * indicators. If the DiscriminatorColumn is not specified, the name
+ * of the discriminator column defaults to "DTYPE" and the
+ * discriminator type to STRING.
+ */
+ DiscriminatorColumn discriminatorColumn() default @DiscriminatorColumn;
+
+ /**
+ * (Optional) The list of discriminator types that can be used with
+ * this VariableOneToOne. If none are specified then those entities
+ * within the persistence unit that implement the target interface
+ * will be added to the list of types. The discriminator type will
+ * default as follows:
+ * - If DiscriminatorColumn type is STRING: Entity.name()
+ * - If DiscriminatorColumn type is CHAR: First letter of the
+ * Entity class
+ * - If DiscriminatorColumn type is INTEGER: The next integer after
+ * the highest integer explicitly added.
+ */
+ DiscriminatorClass[] discriminatorClasses() default {};
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="cascade" type="orm:cascade-type" minOccurs="0"/>
+ <xsd:element name="discriminator-column" type="orm:discriminator-column" minOccurs="0"/>
+ <xsd:element name="discriminator-class" type="orm:discriminator-class" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="join-column" type="orm:join-column" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="private-owned" type="orm:emptyType" minOccurs="0"/>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="target-interface" type="xsd:string"/>
+ <xsd:attribute name="fetch" type="orm:fetch-type"/>
+ <xsd:attribute name="optional" type="xsd:boolean"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="orphan-removal" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="version">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ @Target({METHOD, FIELD}) @Retention(RUNTIME)
+ public @interface Version {}
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="temporal" type="orm:temporal"/>
+ <xsd:element name="convert" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="converter" type="orm:converter"/>
+ <xsd:element name="type-converter" type="orm:type-converter"/>
+ <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
+ <xsd:element name="struct-converter" type="orm:struct-converter"/>
+ </xsd:choice>
+ <xsd:element name="property" type="orm:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="access-methods" type="orm:access-methods" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="access" type="orm:access-type"/>
+ <xsd:attribute name="mutable" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="write-transformer">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ /**
+ * Annotation for org.eclipse.persistence.mappings.TransformationMapping.
+ * WriteTransformer defines transformation of the attribute value to a
+ * single database column value (column is specified in the
+ * WriteTransformer).
+ *
+ * A single WriteTransformer may be specified directly on the method or
+ * attribute. Multiple WriteTransformers should be wrapped into
+ * WriteTransformers annotation. No WriteTransformers specified for
+ * read-only mapping. Unless the TransformationMapping is write-only, it
+ * should have a ReadTransformer, it defines transformation of database
+ * column(s) value(s)into attribute value.
+ */
+ @Target({METHOD, FIELD})
+ @Retention(RUNTIME)
+ public @interface WriteTransformer {
+ /**
+ * User-defined class that must implement the
+ * org.eclipse.persistence.mappings.transformers.FieldTransformer
+ * interface. The class will be instantiated, its buildFieldValue
+ * will be used to create the value to be written into the database
+ * column. Note that for ddl generation and returning to be
+ * supported the method buildFieldValue in the class should be
+ * defined to return the relevant Java type, not just Object as
+ * defined in the interface, for instance:
+ * public Time buildFieldValue(Object instance, String fieldName, Session session).
+ * Either transformerClass or method must be specified, but not both.
+ */
+ Class transformerClass() default void.class;
+
+ /**
+ * The mapped class must have a method with this name which returns
+ * a value to be written into the database column.
+ * Note that for ddl generation and returning to be supported the
+ * method should be defined to return a particular type, not just
+ * Object, for instance:
+ * public Time getStartTime().
+ * The method may require a Transient annotation to avoid being
+ * mapped as Basic by default.
+ * Either transformerClass or method must be specified, but not both.
+ */
+ String method() default "";
+
+ /**
+ * Specify here the column into which the value should be written.
+ * The only case when this could be skipped is if a single
+ * WriteTransformer annotates an attribute - the attribute's name
+ * will be used as a column name.
+ */
+ Column column() default @Column;
+ }
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="column" type="orm:column"/>
+ </xsd:sequence>
+ <xsd:attribute name="transformer-class" type="xsd:string"/>
+ <xsd:attribute name="method" type="xsd:string"/>
+ </xsd:complexType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/JptEclipseLinkCorePlugin.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/JptEclipseLinkCorePlugin.java
index 7bb2fd2d0d..72a2d1c5f4 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/JptEclipseLinkCorePlugin.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/JptEclipseLinkCorePlugin.java
@@ -17,6 +17,10 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jpt.core.JpaResourceType;
import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLink;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_2.EclipseLink1_2;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v2_0.EclipseLink2_0;
import org.osgi.framework.BundleContext;
/**
@@ -38,6 +42,11 @@ public class JptEclipseLinkCorePlugin extends Plugin
public static final String ECLIPSELINK_PLATFORM_VERSION_1_1 = "1.1"; //$NON-NLS-1$
/**
+ * Version string for EclipseLink platform version 1.2
+ */
+ public static final String ECLIPSELINK_PLATFORM_VERSION_1_2 = "1.2"; //$NON-NLS-1$
+
+ /**
* Version string for EclipseLink platform version 2.0
*/
public static final String ECLIPSELINK_PLATFORM_VERSION_2_0 = "2.0"; //$NON-NLS-1$
@@ -56,19 +65,25 @@ public class JptEclipseLinkCorePlugin extends Plugin
* The resource type for eclipselink-orm.xml version 1.0 mapping files
*/
public static final JpaResourceType ECLIPSELINK_ORM_XML_1_0_RESOURCE_TYPE
- = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLink.SCHEMA_VERSION);
+ = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, EclipseLink.SCHEMA_VERSION);
/**
* The resource type for eclipselink-orm.xml version 1.1 mapping files
*/
public static final JpaResourceType ECLIPSELINK_ORM_XML_1_1_RESOURCE_TYPE
- = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1.SCHEMA_VERSION);
+ = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, EclipseLink1_1.SCHEMA_VERSION);
+
+ /**
+ * The resource type for eclipselink-orm.xml version 1.1 mapping files
+ */
+ public static final JpaResourceType ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE
+ = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, EclipseLink1_2.SCHEMA_VERSION);
/**
* The resource type for eclipselink-orm.xml version 2.0 mapping files
*/
public static final JpaResourceType ECLIPSELINK_ORM_XML_2_0_RESOURCE_TYPE
- = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, org.eclipse.jpt.eclipselink.core.resource.orm.v2_0.EclipseLink2_0.SCHEMA_VERSION);
+ = new JpaResourceType(ECLIPSELINK_ORM_XML_CONTENT_TYPE, EclipseLink2_0.SCHEMA_VERSION);
public static final String DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH = "META-INF/eclipselink-orm.xml"; //$NON-NLS-1$
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/AbstractEclipseLinkOrmXmlDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/AbstractEclipseLinkOrmXmlDefinition.java
new file mode 100644
index 0000000000..7aa95d2c54
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/AbstractEclipseLinkOrmXmlDefinition.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.core.internal.context.orm;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.jpt.core.context.orm.NullOrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmTypeMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmBasicMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddableDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEntityDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmMappedSuperclassDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmTransientMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmVersionMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
+
+public abstract class AbstractEclipseLinkOrmXmlDefinition
+ extends AbstractOrmXmlDefinition
+{
+
+ /**
+ * zero-argument constructor
+ */
+ protected AbstractEclipseLinkOrmXmlDefinition() {
+ super();
+ }
+
+
+ public EFactory getResourceNodeFactory() {
+ return EclipseLinkOrmFactory.eINSTANCE;
+ }
+
+
+ // ********* ORM type mappings *********
+
+ @Override
+ protected OrmTypeMappingDefinition[] buildOrmTypeMappingDefinitions() {
+ // order should not matter here, but we'll use the same order as for java
+ // @see {@link EclipseLinkJpaPlatformProvider}
+ return new OrmTypeMappingDefinition[] {
+ OrmEntityDefinition.instance(),
+ OrmEmbeddableDefinition.instance(),
+ OrmMappedSuperclassDefinition.instance()};
+ }
+
+
+ // ********** ORM attribute mappings **********
+
+ @Override
+ protected OrmAttributeMappingDefinition[] buildOrmAttributeMappingDefinitions() {
+ // order should not matter here, but we'll use the same order as for java
+ // @see {@link EclipseLinkJpaPlatformProvider}
+ return new OrmAttributeMappingDefinition[] {
+ OrmTransientMappingDefinition.instance(),
+ OrmEclipseLinkBasicCollectionMappingDefinition.instance(),
+ OrmEclipseLinkBasicMapMappingDefinition.instance(),
+ OrmIdMappingDefinition.instance(),
+ OrmVersionMappingDefinition.instance(),
+ OrmBasicMappingDefinition.instance(),
+ OrmEmbeddedMappingDefinition.instance(),
+ OrmEmbeddedIdMappingDefinition.instance(),
+ OrmEclipseLinkTransformationMappingDefinition.instance(),
+ OrmManyToManyMappingDefinition.instance(),
+ OrmManyToOneMappingDefinition.instance(),
+ OrmOneToManyMappingDefinition.instance(),
+ OrmOneToOneMappingDefinition.instance(),
+ OrmEclipseLinkVariableOneToOneMappingDefinition.instance(),
+ NullOrmAttributeMappingDefinition.instance()};
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmXmlDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmXmlDefinition.java
index 119408e0cc..bd05becebe 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmXmlDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmXmlDefinition.java
@@ -9,32 +9,13 @@
******************************************************************************/
package org.eclipse.jpt.eclipselink.core.internal.context.orm;
-import org.eclipse.emf.ecore.EFactory;
import org.eclipse.jpt.core.JpaResourceType;
-import org.eclipse.jpt.core.context.orm.NullOrmAttributeMappingDefinition;
-import org.eclipse.jpt.core.context.orm.OrmAttributeMappingDefinition;
-import org.eclipse.jpt.core.context.orm.OrmTypeMappingDefinition;
import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory;
import org.eclipse.jpt.core.context.orm.OrmXmlDefinition;
-import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmBasicMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddableDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedIdMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEntityDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmIdMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmManyToManyMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmManyToOneMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmMappedSuperclassDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmOneToManyMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmOneToOneMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmTransientMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmVersionMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
-import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
public class EclipseLinkOrmXmlDefinition
- extends AbstractOrmXmlDefinition
+ extends AbstractEclipseLinkOrmXmlDefinition
{
// singleton
private static final OrmXmlDefinition INSTANCE =
@@ -54,12 +35,7 @@ public class EclipseLinkOrmXmlDefinition
private EclipseLinkOrmXmlDefinition() {
super();
}
-
-
- public EFactory getResourceNodeFactory() {
- return EclipseLinkOrmFactory.eINSTANCE;
- }
-
+
@Override
protected OrmXmlContextNodeFactory buildContextNodeFactory() {
return new EclipseLinkOrmXmlContextNodeFactory();
@@ -68,42 +44,4 @@ public class EclipseLinkOrmXmlDefinition
public JpaResourceType getResourceType() {
return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_0_RESOURCE_TYPE;
}
-
-
- // ********* ORM type mappings *********
-
- @Override
- protected OrmTypeMappingDefinition[] buildOrmTypeMappingDefinitions() {
- // order should not matter here, but we'll use the same order as for java
- // @see {@link EclipseLinkJpaPlatformProvider}
- return new OrmTypeMappingDefinition[] {
- OrmEntityDefinition.instance(),
- OrmEmbeddableDefinition.instance(),
- OrmMappedSuperclassDefinition.instance()};
- }
-
-
- // ********** ORM attribute mappings **********
-
- @Override
- protected OrmAttributeMappingDefinition[] buildOrmAttributeMappingDefinitions() {
- // order should not matter here, but we'll use the same order as for java
- // @see {@link EclipseLinkJpaPlatformProvider}
- return new OrmAttributeMappingDefinition[] {
- OrmTransientMappingDefinition.instance(),
- OrmEclipseLinkBasicCollectionMappingDefinition.instance(),
- OrmEclipseLinkBasicMapMappingDefinition.instance(),
- OrmIdMappingDefinition.instance(),
- OrmVersionMappingDefinition.instance(),
- OrmBasicMappingDefinition.instance(),
- OrmEmbeddedMappingDefinition.instance(),
- OrmEmbeddedIdMappingDefinition.instance(),
- OrmEclipseLinkTransformationMappingDefinition.instance(),
- OrmManyToManyMappingDefinition.instance(),
- OrmManyToOneMappingDefinition.instance(),
- OrmOneToManyMappingDefinition.instance(),
- OrmOneToOneMappingDefinition.instance(),
- OrmEclipseLinkVariableOneToOneMappingDefinition.instance(),
- NullOrmAttributeMappingDefinition.instance()};
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
index c8806df231..093bbab1b7 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
@@ -15,9 +15,11 @@ import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProvider
import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaPlatformProvider;
import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
import org.eclipse.jpt.eclipselink.core.internal.v1_1.EclipseLink1_1JpaPlatformProvider;
+import org.eclipse.jpt.eclipselink.core.internal.v1_2.EclipseLink1_2JpaPlatformProvider;
import org.eclipse.jpt.eclipselink.core.internal.v2_0.EclipseLink2_0JpaPlatformProvider;
import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLink;
import org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_2.EclipseLink1_2;
import org.eclipse.jpt.eclipselink.core.resource.orm.v2_0.EclipseLink2_0;
import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
@@ -58,6 +60,7 @@ public class EclipseLinkOrmFileCreationDataModelProvider
protected boolean fileVersionSupported(String fileVersion) {
return fileVersion.equals(EclipseLink.SCHEMA_VERSION)
|| fileVersion.equals(EclipseLink1_1.SCHEMA_VERSION)
+ || fileVersion.equals(EclipseLink1_2.SCHEMA_VERSION)
|| fileVersion.equals(EclipseLink2_0.SCHEMA_VERSION);
}
@@ -71,6 +74,7 @@ public class EclipseLinkOrmFileCreationDataModelProvider
protected boolean isSupportedPlatformId(String id) {
return id.equals(EclipseLinkJpaPlatformProvider.ID)
|| id.equals(EclipseLink1_1JpaPlatformProvider.ID)
+ || id.equals(EclipseLink1_2JpaPlatformProvider.ID)
|| id.equals(EclipseLink2_0JpaPlatformProvider.ID);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/context/orm/EclipseLinkOrmXml1_1Definition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/context/orm/EclipseLinkOrmXml1_1Definition.java
index 57d592b67c..fbbcd4f44c 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/context/orm/EclipseLinkOrmXml1_1Definition.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/context/orm/EclipseLinkOrmXml1_1Definition.java
@@ -9,36 +9,14 @@
******************************************************************************/
package org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm;
-import org.eclipse.emf.ecore.EFactory;
import org.eclipse.jpt.core.JpaResourceType;
-import org.eclipse.jpt.core.context.orm.NullOrmAttributeMappingDefinition;
-import org.eclipse.jpt.core.context.orm.OrmAttributeMappingDefinition;
-import org.eclipse.jpt.core.context.orm.OrmTypeMappingDefinition;
import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory;
import org.eclipse.jpt.core.context.orm.OrmXmlDefinition;
-import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmBasicMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddableDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedIdMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmEntityDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmIdMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmManyToManyMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmManyToOneMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmMappedSuperclassDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmOneToManyMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmOneToOneMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmTransientMappingDefinition;
-import org.eclipse.jpt.core.internal.context.orm.OrmVersionMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
-import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkBasicCollectionMappingDefinition;
-import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkBasicMapMappingDefinition;
-import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkTransformationMappingDefinition;
-import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkVariableOneToOneMappingDefinition;
-import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
+import org.eclipse.jpt.eclipselink.core.internal.context.orm.AbstractEclipseLinkOrmXmlDefinition;
public class EclipseLinkOrmXml1_1Definition
- extends AbstractOrmXmlDefinition
+ extends AbstractEclipseLinkOrmXmlDefinition
{
// singleton
private static final OrmXmlDefinition INSTANCE =
@@ -61,10 +39,6 @@ public class EclipseLinkOrmXml1_1Definition
}
- public EFactory getResourceNodeFactory() {
- return EclipseLinkOrmFactory.eINSTANCE;
- }
-
@Override
protected OrmXmlContextNodeFactory buildContextNodeFactory() {
return new EclipseLinkOrmXml1_1ContextNodeFactory();
@@ -73,43 +47,4 @@ public class EclipseLinkOrmXml1_1Definition
public JpaResourceType getResourceType() {
return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_1_RESOURCE_TYPE;
}
-
-
- // ********* ORM type mappings *********
-
- @Override
- protected OrmTypeMappingDefinition[] buildOrmTypeMappingDefinitions() {
- // order should not matter here, but we'll use the same order as for java
- // @see {@link EclipseLink1_1JpaPlatformProvider}
- // NOTE: no new type mapping providers from eclipselink 1.0 to 1.1
- return new OrmTypeMappingDefinition[] {
- OrmEntityDefinition.instance(),
- OrmEmbeddableDefinition.instance(),
- OrmMappedSuperclassDefinition.instance()};
- }
-
-
- // ********** ORM attribute mappings **********
-
- @Override
- protected OrmAttributeMappingDefinition[] buildOrmAttributeMappingDefinitions() {
- // order should not matter here, but we'll use the same order as for java
- // @see {@link EclipseLink1_1JpaPlatformProvider}
- return new OrmAttributeMappingDefinition[] {
- OrmTransientMappingDefinition.instance(),
- OrmEclipseLinkBasicCollectionMappingDefinition.instance(),
- OrmEclipseLinkBasicMapMappingDefinition.instance(),
- OrmIdMappingDefinition.instance(),
- OrmVersionMappingDefinition.instance(),
- OrmBasicMappingDefinition.instance(),
- OrmEmbeddedMappingDefinition.instance(),
- OrmEmbeddedIdMappingDefinition.instance(),
- OrmEclipseLinkTransformationMappingDefinition.instance(),
- OrmManyToManyMappingDefinition.instance(),
- OrmManyToOneMappingDefinition.instance(),
- OrmOneToManyMappingDefinition.instance(),
- OrmOneToOneMappingDefinition.instance(),
- OrmEclipseLinkVariableOneToOneMappingDefinition.instance(),
- NullOrmAttributeMappingDefinition.instance()};
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java
new file mode 100644
index 0000000000..80497cff56
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.core.internal.v1_2;
+
+import org.eclipse.jpt.core.JpaAnnotationProvider;
+import org.eclipse.jpt.core.JpaPlatform;
+import org.eclipse.jpt.core.JpaPlatformFactory;
+import org.eclipse.jpt.core.JpaPlatformVariation;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.internal.GenericJpaAnnotationDefinitionProvider;
+import org.eclipse.jpt.core.internal.GenericJpaAnnotationProvider;
+import org.eclipse.jpt.core.internal.GenericJpaPlatform;
+import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaAnnotationDefinitionProvider;
+import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
+import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaPlatformFactory.EclipseLinkVersion;
+
+/**
+ * All the state in the JPA platform should be "static" (i.e. unchanging once
+ * it is initialized).
+ */
+public class EclipseLink1_2JpaPlatformFactory
+ implements JpaPlatformFactory
+{
+ /**
+ * zero-argument constructor
+ */
+ public EclipseLink1_2JpaPlatformFactory() {
+ super();
+ }
+
+
+ public JpaPlatform buildJpaPlatform(String id) {
+ return new GenericJpaPlatform(
+ id,
+ buildJpaVersion(),
+ new EclipseLinkJpaFactory(),
+ buildJpaAnnotationProvider(),
+ EclipseLink1_2JpaPlatformProvider.instance(),
+ buildJpaPlatformVariation());
+ }
+
+ protected JpaAnnotationProvider buildJpaAnnotationProvider() {
+ return new GenericJpaAnnotationProvider(
+ GenericJpaAnnotationDefinitionProvider.instance(),
+ EclipseLinkJpaAnnotationDefinitionProvider.instance());
+ }
+
+ protected JpaPlatformVariation buildJpaPlatformVariation() {
+ return new JpaPlatformVariation() {
+ public Supported getTablePerConcreteClassInheritanceIsSupported() {
+ return Supported.YES;
+ }
+ public boolean isJoinTableOverridable() {
+ return false;
+ }
+ };
+ }
+
+ private JpaPlatform.Version buildJpaVersion() {
+ return new EclipseLinkVersion(
+ JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_1_2,
+ JptCorePlugin.JPA_FACET_VERSION_1_0
+ );
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformProvider.java
new file mode 100644
index 0000000000..393f068006
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformProvider.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.eclipselink.core.internal.v1_2;
+
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jpt.core.JpaPlatformProvider;
+import org.eclipse.jpt.core.JpaResourceModelProvider;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.ResourceDefinition;
+import org.eclipse.jpt.core.context.java.JavaAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.java.JavaTypeMappingDefinition;
+import org.eclipse.jpt.core.internal.AbstractJpaPlatformProvider;
+import org.eclipse.jpt.core.internal.JarResourceModelProvider;
+import org.eclipse.jpt.core.internal.JavaResourceModelProvider;
+import org.eclipse.jpt.core.internal.OrmResourceModelProvider;
+import org.eclipse.jpt.core.internal.PersistenceResourceModelProvider;
+import org.eclipse.jpt.core.internal.context.java.JavaBasicMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddableDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddedIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddedMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEntityDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaManyToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaManyToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaMappedSuperclassDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaTransientMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaVersionMappingDefinition;
+import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXmlDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkOrmResourceModelProvider;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicCollectionMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicMapMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToManyMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToOneMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkTransformationMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkVariableOneToOneMappingDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmXmlDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.context.persistence.EclipseLinkPersistenceXmlDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.EclipseLinkOrmXml1_1Definition;
+import org.eclipse.jpt.eclipselink.core.internal.v1_2.context.orm.EclipseLinkOrmXml1_2Definition;
+
+/**
+ * EclipseLink platform
+ */
+public class EclipseLink1_2JpaPlatformProvider
+ extends AbstractJpaPlatformProvider
+{
+ public static final String ID = "eclipselink1_2"; //$NON-NLS-1$
+
+ // singleton
+ private static final JpaPlatformProvider INSTANCE =
+ new EclipseLink1_2JpaPlatformProvider();
+
+
+ /**
+ * Return the singleton.
+ */
+ public static JpaPlatformProvider instance() {
+ return INSTANCE;
+ }
+
+
+ /**
+ * Enforce singleton usage
+ */
+ private EclipseLink1_2JpaPlatformProvider() {
+ super();
+ }
+
+
+ // ********** resource models **********
+
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+ return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+ return JptCorePlugin.JAR_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE)) {
+ return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
+ @Override
+ protected JpaResourceModelProvider[] buildResourceModelProviders() {
+ // order should not be important here
+ return new JpaResourceModelProvider[] {
+ JavaResourceModelProvider.instance(),
+ JarResourceModelProvider.instance(),
+ PersistenceResourceModelProvider.instance(),
+ OrmResourceModelProvider.instance(),
+ EclipseLinkOrmResourceModelProvider.instance()};
+ }
+
+
+ // ********* java type mappings *********
+
+ @Override
+ protected JavaTypeMappingDefinition[] buildNonNullJavaTypeMappingDefinitions() {
+ // order determined by analyzing order that eclipselink uses
+ // NOTE: no type mappings specific to eclipselink
+ return new JavaTypeMappingDefinition[] {
+ JavaEntityDefinition.instance(),
+ JavaEmbeddableDefinition.instance(),
+ JavaMappedSuperclassDefinition.instance()};
+ }
+
+
+ // ********* java attribute mappings *********
+
+ @Override
+ protected JavaAttributeMappingDefinition[] buildNonNullDefaultJavaAttributeMappingDefinitions() {
+ // order determined by analyzing order that eclipselink uses
+ // NOTE: no new attribute mappings from eclipselink 1.0 to 1.1
+ return new JavaAttributeMappingDefinition[] {
+ JavaEmbeddedMappingDefinition.instance(),
+ JavaEclipseLinkOneToManyMappingDefinition.instance(),
+ JavaEclipseLinkOneToOneMappingDefinition.instance(),
+ JavaEclipseLinkVariableOneToOneMappingDefinition.instance(),
+ JavaBasicMappingDefinition.instance()};
+ }
+
+ @Override
+ protected JavaAttributeMappingDefinition[] buildNonNullSpecifiedJavaAttributeMappingDefinitions() {
+ // order determined by analyzing order that eclipselink uses
+ // NOTE: no new attribute mappings from eclipselink 1.0 to 1.1
+ return new JavaAttributeMappingDefinition[] {
+ JavaTransientMappingDefinition.instance(),
+ JavaEclipseLinkBasicCollectionMappingDefinition.instance(),
+ JavaEclipseLinkBasicMapMappingDefinition.instance(),
+ JavaIdMappingDefinition.instance(),
+ JavaVersionMappingDefinition.instance(),
+ JavaBasicMappingDefinition.instance(),
+ JavaEmbeddedMappingDefinition.instance(),
+ JavaEmbeddedIdMappingDefinition.instance(),
+ JavaEclipseLinkTransformationMappingDefinition.instance(),
+ JavaManyToManyMappingDefinition.instance(),
+ JavaManyToOneMappingDefinition.instance(),
+ JavaEclipseLinkOneToManyMappingDefinition.instance(),
+ JavaEclipseLinkOneToOneMappingDefinition.instance(),
+ JavaEclipseLinkVariableOneToOneMappingDefinition.instance()};
+ }
+
+
+ // ********* mapping files *********
+
+ @Override
+ protected ResourceDefinition[] buildResourceDefinitions() {
+ // order should not be important here
+ return new ResourceDefinition[] {
+ EclipseLinkPersistenceXmlDefinition.instance(),
+ GenericOrmXmlDefinition.instance(),
+ EclipseLinkOrmXmlDefinition.instance(),
+ EclipseLinkOrmXml1_1Definition.instance(),
+ EclipseLinkOrmXml1_2Definition.instance()};
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/context/orm/EclipseLinkOrmXml1_2Definition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/context/orm/EclipseLinkOrmXml1_2Definition.java
new file mode 100644
index 0000000000..c7b03166b9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_2/context/orm/EclipseLinkOrmXml1_2Definition.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.core.internal.v1_2.context.orm;
+
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory;
+import org.eclipse.jpt.core.context.orm.OrmXmlDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
+import org.eclipse.jpt.eclipselink.core.internal.context.orm.AbstractEclipseLinkOrmXmlDefinition;
+import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.EclipseLinkOrmXml1_1ContextNodeFactory;
+
+public class EclipseLinkOrmXml1_2Definition
+ extends AbstractEclipseLinkOrmXmlDefinition
+{
+ // singleton
+ private static final OrmXmlDefinition INSTANCE =
+ new EclipseLinkOrmXml1_2Definition();
+
+
+ /**
+ * Return the singleton.
+ */
+ public static OrmXmlDefinition instance() {
+ return INSTANCE;
+ }
+
+
+ /**
+ * Enforce singleton usage
+ */
+ private EclipseLinkOrmXml1_2Definition() {
+ super();
+ }
+
+ @Override
+ protected OrmXmlContextNodeFactory buildContextNodeFactory() {
+ return new EclipseLinkOrmXml1_1ContextNodeFactory();
+ }
+
+ public JpaResourceType getResourceType() {
+ return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
index b5c1ff1e1f..55a8eca5d7 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
@@ -47,6 +47,7 @@ import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkVar
import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmXmlDefinition;
import org.eclipse.jpt.eclipselink.core.internal.context.persistence.EclipseLinkPersistenceXmlDefinition;
import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.EclipseLinkOrmXml1_1Definition;
+import org.eclipse.jpt.eclipselink.core.internal.v1_2.context.orm.EclipseLinkOrmXml1_2Definition;
import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.orm.EclipseLinkOrmXml2_0Definition;
import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.persistence.EclipseLink2_0PersistenceXmlDefinition;
@@ -176,6 +177,7 @@ public class EclipseLink2_0JpaPlatformProvider
GenericOrmXml2_0Definition.instance(),
EclipseLinkOrmXmlDefinition.instance(),
EclipseLinkOrmXml1_1Definition.instance(),
+ EclipseLinkOrmXml1_2Definition.instance(),
EclipseLinkOrmXml2_0Definition.instance()};
}
} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntityMappings.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntityMappings.java
index b70b62f310..4581dbc96e 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntityMappings.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntityMappings.java
@@ -27,6 +27,7 @@ import org.eclipse.jpt.core.resource.orm.XmlNamedQuery;
import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator;
import org.eclipse.jpt.core.resource.orm.XmlTableGenerator;
import org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_2.EclipseLink1_2;
import org.eclipse.jpt.eclipselink.core.resource.orm.v2_0.EclipseLink2_0;
import org.eclipse.wst.common.internal.emf.resource.Translator;
@@ -451,6 +452,7 @@ public class XmlEntityMappings extends org.eclipse.jpt.core.resource.orm.XmlEnti
Map<String, String> map = new HashMap<String, String>();
map.put(EclipseLink.SCHEMA_VERSION, EclipseLink.SCHEMA_LOCATION);
map.put(EclipseLink1_1.SCHEMA_VERSION, EclipseLink1_1.SCHEMA_LOCATION);
+ map.put(EclipseLink1_2.SCHEMA_VERSION, EclipseLink1_2.SCHEMA_LOCATION);
map.put(EclipseLink2_0.SCHEMA_VERSION, EclipseLink2_0.SCHEMA_LOCATION);
return map;
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/v1_2/EclipseLink1_2.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/v1_2/EclipseLink1_2.java
new file mode 100644
index 0000000000..115b1c205c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/v1_2/EclipseLink1_2.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.jpt.eclipselink.core.resource.orm.v1_2;
+
+import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLink;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1;
+
+@SuppressWarnings("nls")
+public interface EclipseLink1_2
+ extends EclipseLink1_1
+{
+ String SCHEMA_NAMESPACE = EclipseLink.SCHEMA_NAMESPACE;
+ String SCHEMA_LOCATION = "http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_1_2.xsd";
+ String SCHEMA_VERSION = "1.2";
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF
index 3f9a32eaca..4dc14541d5 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF
@@ -41,7 +41,6 @@ Export-Package: org.eclipse.jpt.eclipselink.ui,
org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.java;x-internal:=true,
org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm;x-internal:=true,
org.eclipse.jpt.eclipselink.ui.internal.v1_1.platform;x-internal:=true,
- org.eclipse.jpt.eclipselink.ui.internal.v1_1.structure;x-internal:=true,
org.eclipse.jpt.eclipselink.ui.internal.v2_0.persistence.options,
org.eclipse.jpt.eclipselink.ui.internal.v2_0.platform,
org.eclipse.jpt.eclipselink.ui.internal.wizards;x-internal:=true
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/plugin.xml b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/plugin.xml
index 40eebe346a..3bfe3c6c16 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/plugin.xml
@@ -14,6 +14,11 @@
id="eclipselink1_1.ui"
jpaPlatform="eclipselink1_1"
factoryClass="org.eclipse.jpt.eclipselink.ui.internal.v1_1.platform.EclipseLink1_1JpaPlatformUiFactory"/>
+
+ <jpaPlatformUi
+ id="eclipselink1_2.ui"
+ jpaPlatform="eclipselink1_2"
+ factoryClass="org.eclipse.jpt.eclipselink.ui.internal.v1_2.platform.EclipseLink1_2JpaPlatformUiFactory"/>
<jpaPlatformUi
id="eclipselink2_0.ui"
@@ -79,6 +84,10 @@
</test>
<test
property="org.eclipse.jpt.core.jpaPlatform"
+ value="eclipselink1_2">
+ </test>
+ <test
+ property="org.eclipse.jpt.core.jpaPlatform"
value="eclipselink2_0">
</test>
</or>
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/EclipseLinkOrmXml1_1UiDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/EclipseLinkOrmXml1_1UiDefinition.java
index f42b27b445..269d59a67a 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/EclipseLinkOrmXml1_1UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/EclipseLinkOrmXml1_1UiDefinition.java
@@ -18,7 +18,7 @@ import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicCo
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicMapMappingUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkTransformationMappingUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkVariableOneToOneMappingUiDefinition;
-import org.eclipse.jpt.eclipselink.ui.internal.v1_1.structure.EclipseLink1_1OrmResourceModelStructureProvider;
+import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLinkOrmResourceModelStructureProvider;
import org.eclipse.jpt.ui.ResourceUiDefinition;
import org.eclipse.jpt.ui.details.orm.OrmAttributeMappingUiDefinition;
import org.eclipse.jpt.ui.details.orm.OrmTypeMappingUiDefinition;
@@ -71,7 +71,7 @@ public class EclipseLinkOrmXml1_1UiDefinition extends AbstractOrmXmlResourceUiDe
}
public JpaStructureProvider getStructureProvider() {
- return EclipseLink1_1OrmResourceModelStructureProvider.instance();
+ return EclipseLinkOrmResourceModelStructureProvider.instance();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/structure/EclipseLink1_1OrmResourceModelStructureProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/structure/EclipseLink1_1OrmResourceModelStructureProvider.java
deleted file mode 100644
index 2164b55b21..0000000000
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/structure/EclipseLink1_1OrmResourceModelStructureProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.eclipselink.ui.internal.v1_1.structure;
-
-import org.eclipse.jpt.ui.internal.structure.OrmItemContentProviderFactory;
-import org.eclipse.jpt.ui.internal.structure.OrmItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.ItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.TreeItemContentProviderFactory;
-import org.eclipse.jpt.ui.structure.JpaStructureProvider;
-
-public class EclipseLink1_1OrmResourceModelStructureProvider
- implements JpaStructureProvider
-{
- // singleton
- private static final JpaStructureProvider INSTANCE = new EclipseLink1_1OrmResourceModelStructureProvider();
-
-
- /**
- * Return the singleton
- */
- public static JpaStructureProvider instance() {
- return INSTANCE;
- }
-
-
- /**
- * Enforce singleton usage
- */
- private EclipseLink1_1OrmResourceModelStructureProvider() {
- super();
- }
-
-
- public TreeItemContentProviderFactory getTreeItemContentProviderFactory() {
- return new OrmItemContentProviderFactory();
- }
-
- public ItemLabelProviderFactory getItemLabelProviderFactory() {
- return new OrmItemLabelProviderFactory();
- }
-}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/details/orm/EclipseLinkOrmXml1_2UiDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/details/orm/EclipseLinkOrmXml1_2UiDefinition.java
new file mode 100644
index 0000000000..eb0ba4a1d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/details/orm/EclipseLinkOrmXml1_2UiDefinition.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.ui.internal.v1_2.details.orm;
+
+import java.util.List;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.context.AttributeMapping;
+import org.eclipse.jpt.core.context.TypeMapping;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicCollectionMappingUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicMapMappingUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkTransformationMappingUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkVariableOneToOneMappingUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLinkOrmResourceModelStructureProvider;
+import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.EclipseLinkOrmXml1_1UiFactory;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmAttributeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmTypeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmXmlUiFactory;
+import org.eclipse.jpt.ui.internal.details.orm.AbstractOrmXmlResourceUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmBasicMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddableUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddedIdMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEntityUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmIdMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmManyToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmManyToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmMappedSuperclassUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmOneToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmOneToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmTransientMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmVersionMappingUiDefinition;
+import org.eclipse.jpt.ui.structure.JpaStructureProvider;
+
+public class EclipseLinkOrmXml1_2UiDefinition extends AbstractOrmXmlResourceUiDefinition
+{
+ // singleton
+ private static final ResourceUiDefinition INSTANCE = new EclipseLinkOrmXml1_2UiDefinition();
+
+
+ /**
+ * Return the singleton
+ */
+ public static ResourceUiDefinition instance() {
+ return INSTANCE;
+ }
+
+
+ /**
+ * Enforce singleton usage
+ */
+ private EclipseLinkOrmXml1_2UiDefinition() {
+ super();
+ }
+
+
+ @Override
+ protected OrmXmlUiFactory buildOrmXmlUiFactory() {
+ return new EclipseLinkOrmXml1_1UiFactory();
+ }
+
+ public boolean providesUi(JpaResourceType resourceType) {
+ return resourceType.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE);
+ }
+
+ public JpaStructureProvider getStructureProvider() {
+ return EclipseLinkOrmResourceModelStructureProvider.instance();
+ }
+
+ @Override
+ protected void addOrmAttributeMappingUiDefinitionsTo(List<OrmAttributeMappingUiDefinition<? extends AttributeMapping>> definitions) {
+ definitions.add(OrmIdMappingUiDefinition.instance());
+ definitions.add(OrmEmbeddedIdMappingUiDefinition.instance());
+ definitions.add(OrmBasicMappingUiDefinition.instance());
+ definitions.add(OrmVersionMappingUiDefinition.instance());
+ definitions.add(OrmManyToOneMappingUiDefinition.instance());
+ definitions.add(OrmOneToManyMappingUiDefinition.instance());
+ definitions.add(OrmOneToOneMappingUiDefinition.instance());
+ definitions.add(OrmManyToManyMappingUiDefinition.instance());
+ definitions.add(OrmEmbeddedMappingUiDefinition.instance());
+ definitions.add(OrmTransientMappingUiDefinition.instance());
+
+ definitions.add(OrmEclipseLinkBasicCollectionMappingUiDefinition.instance());
+ definitions.add(OrmEclipseLinkBasicMapMappingUiDefinition.instance());
+ definitions.add(OrmEclipseLinkVariableOneToOneMappingUiDefinition.instance());
+ definitions.add(OrmEclipseLinkTransformationMappingUiDefinition.instance());
+ }
+
+ @Override
+ protected void addOrmTypeMappingUiDefinitionsTo(List<OrmTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
+ definitions.add(OrmEntityUiDefinition.instance());
+ definitions.add(OrmMappedSuperclassUiDefinition.instance());
+ definitions.add(OrmEmbeddableUiDefinition.instance());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiFactory.java
new file mode 100644
index 0000000000..e2e8ce411d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiFactory.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.ui.internal.v1_2.platform;
+
+import org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLinkJpaPlatformUi;
+import org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLinkNavigatorProvider;
+import org.eclipse.jpt.ui.JpaPlatformUi;
+import org.eclipse.jpt.ui.JpaPlatformUiFactory;
+
+public class EclipseLink1_2JpaPlatformUiFactory implements JpaPlatformUiFactory
+{
+
+ /**
+ * Zero arg constructor for extension point
+ */
+ public EclipseLink1_2JpaPlatformUiFactory() {
+ super();
+ }
+
+ public JpaPlatformUi buildJpaPlatformUi() {
+ return new EclipseLinkJpaPlatformUi(
+ new EclipseLinkNavigatorProvider(),
+ EclipseLink1_2JpaPlatformUiProvider.instance()
+ );
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiProvider.java
new file mode 100644
index 0000000000..319a698649
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_2/platform/EclipseLink1_2JpaPlatformUiProvider.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink.ui.internal.v1_2.platform;
+
+import java.util.List;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappingsDetailsProvider;
+import org.eclipse.jpt.eclipselink.ui.internal.details.orm.EclipseLinkOrmXmlUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.persistence.EclipseLinkPersistenceXmlUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.java.EclipseLink1_1JavaResourceUiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.EclipseLinkOrmXml1_1UiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.v1_2.details.orm.EclipseLinkOrmXml1_2UiDefinition;
+import org.eclipse.jpt.ui.JpaPlatformUiProvider;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.details.JpaDetailsProvider;
+import org.eclipse.jpt.ui.internal.AbstractJpaPlatformUiProvider;
+import org.eclipse.jpt.ui.internal.details.java.JavaPersistentAttributeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.java.JavaPersistentTypeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.EntityMappingsDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.OrmPersistentAttributeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.OrmPersistentTypeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.OrmXmlUiDefinition;
+
+public class EclipseLink1_2JpaPlatformUiProvider extends AbstractJpaPlatformUiProvider
+{
+
+ // singleton
+ private static final JpaPlatformUiProvider INSTANCE = new EclipseLink1_2JpaPlatformUiProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static JpaPlatformUiProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure single instance.
+ */
+ private EclipseLink1_2JpaPlatformUiProvider() {
+ super();
+ }
+
+
+ // ********** details providers **********
+
+ @Override
+ protected void addDetailsProvidersTo(List<JpaDetailsProvider> providers) {
+ providers.add(JavaPersistentTypeDetailsProvider.instance());
+ providers.add(JavaPersistentAttributeDetailsProvider.instance());
+ providers.add(EntityMappingsDetailsProvider.instance());
+ providers.add(OrmPersistentTypeDetailsProvider.instance());
+ providers.add(OrmPersistentAttributeDetailsProvider.instance());
+ providers.add(EclipseLinkEntityMappingsDetailsProvider.instance());
+ }
+
+
+ // ********** resource ui definitions **********
+
+ @Override
+ protected void addResourceUiDefinitionsTo(List<ResourceUiDefinition> definitions) {
+ definitions.add(EclipseLink1_1JavaResourceUiDefinition.instance());
+ definitions.add(OrmXmlUiDefinition.instance());
+ definitions.add(EclipseLinkOrmXmlUiDefinition.instance());
+ definitions.add(EclipseLinkOrmXml1_1UiDefinition.instance());
+ definitions.add(EclipseLinkOrmXml1_2UiDefinition.instance());
+ definitions.add(EclipseLinkPersistenceXmlUiDefinition.instance());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiDefinition.java
index 2bd6d906ad..91602d28a0 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiDefinition.java
@@ -18,7 +18,7 @@ import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicCo
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkBasicMapMappingUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkTransformationMappingUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.OrmEclipseLinkVariableOneToOneMappingUiDefinition;
-import org.eclipse.jpt.eclipselink.ui.internal.v1_1.structure.EclipseLink1_1OrmResourceModelStructureProvider;
+import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLinkOrmResourceModelStructureProvider;
import org.eclipse.jpt.ui.ResourceUiDefinition;
import org.eclipse.jpt.ui.details.orm.OrmAttributeMappingUiDefinition;
import org.eclipse.jpt.ui.details.orm.OrmTypeMappingUiDefinition;
@@ -72,8 +72,7 @@ public class EclipseLinkOrmXml2_0UiDefinition extends AbstractOrmXmlResourceUiDe
}
public JpaStructureProvider getStructureProvider() {
- //TODO need a 2_0 structure provider
- return EclipseLink1_1OrmResourceModelStructureProvider.instance();
+ return EclipseLinkOrmResourceModelStructureProvider.instance();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java
index b39c33454a..6651bd1d1b 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java
@@ -51,7 +51,5 @@ public class EclipseLinkPersistenceXml2_0UiDefinition extends AbstractPersistenc
public JpaStructureProvider getStructureProvider() {
return EclipseLinkPersistenceResourceModelStructureProvider.instance();
- //TODO do we need an EclipseLinkPersistence2_0ResourceModelStructureProvider??
-// return Persistence2_0ResourceModelStructureProvider.instance();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/platform/EclipseLink2_0JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/platform/EclipseLink2_0JpaPlatformUiProvider.java
index 5bc5adc270..a0af4c0d3c 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/platform/EclipseLink2_0JpaPlatformUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/platform/EclipseLink2_0JpaPlatformUiProvider.java
@@ -14,6 +14,7 @@ import org.eclipse.jpt.eclipselink.ui.internal.details.orm.EclipseLinkEntityMapp
import org.eclipse.jpt.eclipselink.ui.internal.details.orm.EclipseLinkOrmXmlUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.persistence.EclipseLinkPersistenceXmlUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.EclipseLinkOrmXml1_1UiDefinition;
+import org.eclipse.jpt.eclipselink.ui.internal.v1_2.details.orm.EclipseLinkOrmXml1_2UiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.java.EclipseLink2_0JavaResourceUiDefinition;
import org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.orm.EclipseLinkEntityMappings2_0DetailsProvider;
import org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.orm.EclipseLinkOrmXml2_0UiDefinition;
@@ -78,6 +79,7 @@ public class EclipseLink2_0JpaPlatformUiProvider extends AbstractJpaPlatformUiPr
definitions.add(OrmXml2_0UiDefinition.instance());
definitions.add(EclipseLinkOrmXmlUiDefinition.instance());
definitions.add(EclipseLinkOrmXml1_1UiDefinition.instance());
+ definitions.add(EclipseLinkOrmXml1_2UiDefinition.instance());
definitions.add(EclipseLinkOrmXml2_0UiDefinition.instance());
definitions.add(EclipseLinkPersistenceXmlUiDefinition.instance());
definitions.add(EclipseLinkPersistenceXml2_0UiDefinition.instance());
diff --git a/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
index 3725b25782..14eb73de1b 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
@@ -60,7 +60,6 @@ Export-Package: org.eclipse.jpt.ui,
org.eclipse.jpt.ui.internal.jpa2.persistence.connection;x-internal:=true,
org.eclipse.jpt.ui.internal.jpa2.persistence.options;x-internal:=true,
org.eclipse.jpt.ui.internal.jpa2.platform.generic;x-internal:=true,
- org.eclipse.jpt.ui.internal.jpa2.structure;x-internal:=true,
org.eclipse.jpt.ui.internal.listeners;x-internal:=true,
org.eclipse.jpt.ui.internal.menus;x-internal:=true,
org.eclipse.jpt.ui.internal.navigator;x-internal:=true,
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmXml2_0UiDefinition.java
index 196f6e52dd..5ab8499f46 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmXml2_0UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmXml2_0UiDefinition.java
@@ -33,7 +33,7 @@ import org.eclipse.jpt.ui.internal.details.orm.OrmOneToOneMappingUiDefinition;
import org.eclipse.jpt.ui.internal.details.orm.OrmTransientMappingUiDefinition;
import org.eclipse.jpt.ui.internal.details.orm.OrmVersionMappingUiDefinition;
import org.eclipse.jpt.ui.internal.jpa2.GenericOrmXml2_0UiFactory;
-import org.eclipse.jpt.ui.internal.jpa2.structure.Orm2_0ResourceModelStructureProvider;
+import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider;
import org.eclipse.jpt.ui.structure.JpaStructureProvider;
public class OrmXml2_0UiDefinition extends AbstractOrmXmlResourceUiDefinition
@@ -68,7 +68,7 @@ public class OrmXml2_0UiDefinition extends AbstractOrmXmlResourceUiDefinition
}
public JpaStructureProvider getStructureProvider() {
- return Orm2_0ResourceModelStructureProvider.instance();
+ return OrmResourceModelStructureProvider.instance();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java
index b2b240a889..560815789a 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java
@@ -13,9 +13,9 @@ package org.eclipse.jpt.ui.internal.jpa2.persistence;
import org.eclipse.jpt.core.JpaResourceType;
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.ui.ResourceUiDefinition;
-import org.eclipse.jpt.ui.internal.jpa2.structure.Persistence2_0ResourceModelStructureProvider;
import org.eclipse.jpt.ui.internal.persistence.details.AbstractPersistenceXmlResourceUiDefinition;
import org.eclipse.jpt.ui.internal.persistence.details.PersistenceXmlUiFactory;
+import org.eclipse.jpt.ui.internal.structure.PersistenceResourceModelStructureProvider;
import org.eclipse.jpt.ui.structure.JpaStructureProvider;
public class PersistenceXml2_0UiDefinition extends AbstractPersistenceXmlResourceUiDefinition
@@ -50,6 +50,6 @@ public class PersistenceXml2_0UiDefinition extends AbstractPersistenceXmlResourc
}
public JpaStructureProvider getStructureProvider() {
- return Persistence2_0ResourceModelStructureProvider.instance();
+ return PersistenceResourceModelStructureProvider.instance();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Orm2_0ResourceModelStructureProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Orm2_0ResourceModelStructureProvider.java
deleted file mode 100644
index d93b10cd0d..0000000000
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Orm2_0ResourceModelStructureProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.ui.internal.jpa2.structure;
-
-import org.eclipse.jpt.ui.internal.structure.OrmItemContentProviderFactory;
-import org.eclipse.jpt.ui.internal.structure.OrmItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.ItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.TreeItemContentProviderFactory;
-import org.eclipse.jpt.ui.structure.JpaStructureProvider;
-
-public class Orm2_0ResourceModelStructureProvider
- implements JpaStructureProvider
-{
- // singleton
- private static final JpaStructureProvider INSTANCE = new Orm2_0ResourceModelStructureProvider();
-
-
- /**
- * Return the singleton
- */
- public static JpaStructureProvider instance() {
- return INSTANCE;
- }
-
-
- /**
- * Enforce singleton usage
- */
- private Orm2_0ResourceModelStructureProvider() {
- super();
- }
-
-
- public TreeItemContentProviderFactory getTreeItemContentProviderFactory() {
- return new OrmItemContentProviderFactory();
- }
-
- public ItemLabelProviderFactory getItemLabelProviderFactory() {
- return new OrmItemLabelProviderFactory();
- }
-}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Persistence2_0ResourceModelStructureProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Persistence2_0ResourceModelStructureProvider.java
deleted file mode 100644
index 9723b5ef09..0000000000
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/structure/Persistence2_0ResourceModelStructureProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.ui.internal.jpa2.structure;
-
-import org.eclipse.jpt.ui.internal.structure.PersistenceItemContentProviderFactory;
-import org.eclipse.jpt.ui.internal.structure.PersistenceItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.ItemLabelProviderFactory;
-import org.eclipse.jpt.ui.jface.TreeItemContentProviderFactory;
-import org.eclipse.jpt.ui.structure.JpaStructureProvider;
-
-public class Persistence2_0ResourceModelStructureProvider
- implements JpaStructureProvider
-{
- // singleton
- private static final JpaStructureProvider INSTANCE = new Persistence2_0ResourceModelStructureProvider();
-
-
- /**
- * Return the singleton
- */
- public static JpaStructureProvider instance() {
- return INSTANCE;
- }
-
-
- /**
- * Enforce singelton usage
- */
- private Persistence2_0ResourceModelStructureProvider() {
- super();
- }
-
-
- public TreeItemContentProviderFactory getTreeItemContentProviderFactory() {
- return new PersistenceItemContentProviderFactory();
- }
-
- public ItemLabelProviderFactory getItemLabelProviderFactory() {
- return new PersistenceItemLabelProviderFactory();
- }
-}
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/JptEclipseLinkCoreTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/JptEclipseLinkCoreTests.java
index 56c695d65d..b2d7bc2f4a 100644
--- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/JptEclipseLinkCoreTests.java
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/JptEclipseLinkCoreTests.java
@@ -16,6 +16,7 @@ import org.eclipse.jpt.core.tests.internal.projects.TestJpaProject;
import org.eclipse.jpt.eclipselink.core.tests.internal.context.JptEclipseLinkCoreContextModelTests;
import org.eclipse.jpt.eclipselink.core.tests.internal.resource.JptEclipselinkCoreResourceModelTests;
import org.eclipse.jpt.eclipselink1_1.core.tests.internal.context.JptEclipseLink1_1CoreContextModelTests;
+import org.eclipse.jpt.eclipselink1_2.core.tests.internal.context.JptEclipseLink1_2CoreContextModelTests;
import org.eclipse.jpt.eclipselink2_0.core.tests.internal.context.JptEclipseLink2_0CoreContextModelTests;
/**
@@ -38,6 +39,7 @@ public class JptEclipseLinkCoreTests
suite.addTest(JptEclipselinkCoreResourceModelTests.suite());
suite.addTest(JptEclipseLinkCoreContextModelTests.suite());
suite.addTest(JptEclipseLink1_1CoreContextModelTests.suite());
+ suite.addTest(JptEclipseLink1_2CoreContextModelTests.suite());
suite.addTest(JptEclipseLink2_0CoreContextModelTests.suite());
}
else {
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2ContextModelTestCase.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2ContextModelTestCase.java
new file mode 100644
index 0000000000..5b0cc23539
--- /dev/null
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2ContextModelTestCase.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.eclipselink1_2.core.tests.internal.context;
+
+import org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProperties;
+import org.eclipse.jpt.core.internal.facet.JpaFacetInstallDataModelProperties;
+import org.eclipse.jpt.eclipselink.core.internal.v1_2.EclipseLink1_2JpaPlatformProvider;
+import org.eclipse.jpt.eclipselink.core.tests.internal.context.EclipseLinkContextModelTestCase;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+
+public abstract class EclipseLink1_2ContextModelTestCase extends EclipseLinkContextModelTestCase
+{
+ public static final String JPA_ANNOTATIONS_PACKAGE_NAME = "javax.persistence"; //$NON-NLS-1$
+
+ protected EclipseLink1_2ContextModelTestCase(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IDataModel buildJpaConfigDataModel() {
+ IDataModel dataModel = super.buildJpaConfigDataModel();
+ dataModel.setProperty(JpaFacetDataModelProperties.PLATFORM_ID, EclipseLink1_2JpaPlatformProvider.ID);
+ dataModel.setProperty(JpaFacetInstallDataModelProperties.CREATE_ORM_XML, Boolean.TRUE);
+ return dataModel;
+ }
+}
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2JpaProjectTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2JpaProjectTests.java
new file mode 100644
index 0000000000..57bf306441
--- /dev/null
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/EclipseLink1_2JpaProjectTests.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.eclipselink1_2.core.tests.internal.context;
+
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.internal.operations.JpaFileCreationDataModelProperties;
+import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProperties;
+import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProvider;
+import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
+import org.eclipse.jpt.eclipselink.core.internal.operations.EclipseLinkOrmFileCreationDataModelProvider;
+import org.eclipse.jpt.eclipselink.core.resource.orm.v1_2.EclipseLink1_2;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+
+@SuppressWarnings("nls")
+public class EclipseLink1_2JpaProjectTests extends EclipseLink1_2ContextModelTestCase
+{
+
+ public EclipseLink1_2JpaProjectTests(String name) {
+ super(name);
+ }
+
+ public void testGetDefaultOrmXmlResource() throws Exception {
+ JpaXmlResource resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNotNull(resource);
+ assertEquals(JptCorePlugin.ORM_XML_CONTENT_TYPE, resource.getContentType());
+ assertEquals("src/META-INF/orm.xml", resource.getFile().getProjectRelativePath().toString());
+
+ //delete the orm.xml file and verify it is not returned from getDefaultOrmXmlResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNull(resource);
+
+ //add the orm.xml file with eclipselink 1.2 orm content type
+ createDefaultOrmXmlFileWithEclipseLink1_2ContentType();
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE, resource.getResourceType());
+ assertEquals("src/META-INF/orm.xml", resource.getFile().getProjectRelativePath().toString());
+
+
+ //delete the orm.xml file and verify it is not returned from getDefaultOrmXmlResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNull(resource);
+
+
+ //add the orm.xml file with eclipselink orm content type
+ createDefaultOrmXmlFileWithEclipseLinkContentType();
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE, resource.getContentType());
+ assertEquals("src/META-INF/orm.xml", resource.getFile().getProjectRelativePath().toString());
+
+
+ //delete the orm.xml file and verify it is not returned from getDefaultOrmXmlResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNull(resource);
+
+
+ //add the orm.xml file this time with orm content type
+ createDefaultOrmXmlFile();
+ resource = this.getJpaProject().getDefaultOrmXmlResource();
+ assertNotNull(resource);
+ assertEquals(JptCorePlugin.ORM_XML_CONTENT_TYPE, resource.getContentType());
+ assertEquals("src/META-INF/orm.xml", resource.getFile().getProjectRelativePath().toString());
+ }
+
+ public void testGetDefaultEclipseLinkOrmXmlResource() throws Exception {
+ JpaXmlResource resource = this.getJpaProject().getDefaultEclipseLinkOrmXmlResource();
+ assertNull(resource);
+
+ //add the eclipselink-orm.xml 1.2 file
+ createDefaultEclipseLink1_2OrmXmlFile();
+ resource = this.getJpaProject().getDefaultEclipseLinkOrmXmlResource();
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE, resource.getResourceType());
+ assertEquals("src/META-INF/eclipselink-orm.xml", resource.getFile().getProjectRelativePath().toString());
+
+
+ //delete the eclipselink-orm.xml file and verify it is not returned from getDefaultOrmXmlResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getDefaultEclipseLinkOrmXmlResource();
+ assertNull(resource);
+ }
+
+ private void createDefaultOrmXmlFile() throws Exception {
+ IDataModel config =
+ DataModelFactory.createDataModel(new OrmFileCreationDataModelProvider());
+ config.setProperty(OrmFileCreationDataModelProperties.PROJECT_NAME, getJpaProject().getProject().getName());
+ config.getDefaultOperation().execute(null, null);
+ }
+
+ private void createDefaultOrmXmlFileWithEclipseLinkContentType() throws Exception {
+ IDataModel config =
+ DataModelFactory.createDataModel(new EclipseLinkOrmFileCreationDataModelProvider());
+ config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, getJpaProject().getProject().getName());
+ config.setProperty(JpaFileCreationDataModelProperties.FILE_PATH, JptCorePlugin.DEFAULT_ORM_XML_FILE_PATH);
+ config.getDefaultOperation().execute(null, null);
+ }
+
+ private void createDefaultOrmXmlFileWithEclipseLink1_2ContentType() throws Exception {
+ createEclipseLink1_2OrmXmlFile(JptCorePlugin.DEFAULT_ORM_XML_FILE_PATH);
+ }
+
+ private void createDefaultEclipseLink1_2OrmXmlFile() throws Exception {
+ createEclipseLink1_2OrmXmlFile(JptEclipseLinkCorePlugin.DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH);
+ }
+
+ private void createEclipseLink1_2OrmXmlFile(String filePath) throws Exception {
+ IDataModel config =
+ DataModelFactory.createDataModel(new EclipseLinkOrmFileCreationDataModelProvider());
+ config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, getJpaProject().getProject().getName());
+ config.setProperty(JpaFileCreationDataModelProperties.VERSION, EclipseLink1_2.SCHEMA_VERSION);
+ config.setProperty(JpaFileCreationDataModelProperties.FILE_PATH, filePath);
+ config.getDefaultOperation().execute(null, null);
+ }
+
+ public void testGetMappingFileResource() throws Exception {
+ JpaXmlResource resource = this.getJpaProject().getMappingFileXmlResource(JptEclipseLinkCorePlugin.DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH);
+ assertNull(resource);
+
+ //add the eclipselink-orm.xml 1.2 file
+ createDefaultEclipseLink1_2OrmXmlFile();
+ resource = this.getJpaProject().getMappingFileXmlResource(JptEclipseLinkCorePlugin.DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH);
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE, resource.getResourceType());
+ assertEquals("src/META-INF/eclipselink-orm.xml", resource.getFile().getProjectRelativePath().toString());
+
+ //delete the eclipselink-orm.xml file and verify it is not returned from getMappingFileResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getMappingFileXmlResource(JptEclipseLinkCorePlugin.DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH);
+ assertNull(resource);
+ }
+
+ public void testGetDifferentlyNamedMappingFileResource() throws Exception {
+ JpaXmlResource resource = this.getJpaProject().getMappingFileXmlResource("META-INF/orm2.xml");
+ assertNull(resource);
+
+ //create the orm2.xml file
+ createEclipseLink1_2OrmXmlFile("META-INF/orm2.xml");
+ resource = this.getJpaProject().getMappingFileXmlResource("META-INF/orm2.xml");
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE, resource.getResourceType());
+ assertEquals("src/META-INF/orm2.xml", resource.getFile().getProjectRelativePath().toString());
+
+ //delete the orm2.xml file and verify it is not returned from getMappingFileResource()
+ resource.delete(null);
+ resource = this.getJpaProject().getMappingFileXmlResource("META-INF/orm2.xml");
+ assertNull(resource);
+
+ //add the orm2.xml file back
+ createEclipseLink1_2OrmXmlFile("META-INF/orm2.xml");
+ resource = this.getJpaProject().getMappingFileXmlResource("META-INF/orm2.xml");
+ assertNotNull(resource);
+ assertEquals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_2_RESOURCE_TYPE, resource.getResourceType());
+ assertEquals("src/META-INF/orm2.xml", resource.getFile().getProjectRelativePath().toString());
+ }
+}
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/JptEclipseLink1_2CoreContextModelTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/JptEclipseLink1_2CoreContextModelTests.java
new file mode 100644
index 0000000000..b5e46ef8fa
--- /dev/null
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink1_2/core/tests/internal/context/JptEclipseLink1_2CoreContextModelTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.eclipselink1_2.core.tests.internal.context;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class JptEclipseLink1_2CoreContextModelTests extends TestCase
+{
+ public static Test suite() {
+ TestSuite suite = new TestSuite(JptEclipseLink1_2CoreContextModelTests.class.getName());
+ suite.addTestSuite(EclipseLink1_2JpaProjectTests.class);
+ // suite.addTest(JptEclipseLink1_2CoreOrmContextModelTests.suite());
+ return suite;
+ }
+
+ private JptEclipseLink1_2CoreContextModelTests() {
+ super();
+ throw new UnsupportedOperationException();
+ }
+}

Back to the top