Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfullbright2007-04-25 16:09:37 -0400
committerpfullbright2007-04-25 16:09:37 -0400
commit5a50ff3aeafeb18e74f2ae005e86953fb4e38ceb (patch)
tree5f403b003319df613511081401862c5a1e6781f6
downloadwebtools.dali-5a50ff3aeafeb18e74f2ae005e86953fb4e38ceb.tar.gz
webtools.dali-5a50ff3aeafeb18e74f2ae005e86953fb4e38ceb.tar.xz
webtools.dali-5a50ff3aeafeb18e74f2ae005e86953fb4e38ceb.zip
renamed
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.classpath8
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.cvsignore2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.project28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/build.properties22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/component.xml1
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml258
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/core.ecore529
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel656
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/java.ecore90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel173
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/orm.ecore270
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/plugin.properties36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/plugin.xml187
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd122
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java237
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java39
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java125
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java113
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java92
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java105
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java128
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java209
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java1783
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java132
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java185
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java128
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java337
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java543
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java190
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java645
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java252
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java217
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java47
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java95
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java652
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java917
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java432
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java139
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java787
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java761
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java294
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java626
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java434
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java138
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java238
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java913
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java228
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java448
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java726
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java99
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java543
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java2761
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java343
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java574
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java736
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java477
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java788
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java125
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java509
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java461
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java75
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java97
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java289
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java437
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java293
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java695
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java384
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java559
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java340
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java606
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java83
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java1118
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java262
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java377
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java505
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java4838
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java1904
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java2486
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java404
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java444
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java929
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java451
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java913
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java1690
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java655
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java9394
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java95
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java951
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java533
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java361
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java323
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java699
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java922
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java88
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java82
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java1857
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java285
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java490
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java456
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java507
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java83
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java553
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java240
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java327
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java232
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java398
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java940
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java411
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java451
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java351
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java410
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java983
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java653
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java387
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java71
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java119
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java68
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java431
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java116
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java179
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java77
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java168
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java2284
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java3090
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java168
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java231
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java348
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java278
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java1379
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java877
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java212
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java96
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java357
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java157
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java237
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java75
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java384
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java455
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java140
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java111
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java39
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java169
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java148
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java420
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java72
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java155
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java218
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java77
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java490
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java112
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java91
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java201
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java394
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java103
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java97
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java442
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java331
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java80
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java53
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java102
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java265
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java265
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java303
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java266
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java331
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java238
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java115
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java152
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java44
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java193
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java119
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java235
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java144
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java636
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java163
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java136
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java81
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java134
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java180
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java245
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java386
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java303
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java373
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java8177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java240
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java296
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java984
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java1354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java130
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java130
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java175
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java323
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java53
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java105
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java288
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java117
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java157
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java115
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java124
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java92
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java137
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java176
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java158
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java484
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java81
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java141
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java124
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java106
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java364
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java72
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java145
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java368
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java129
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java194
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java524
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java675
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java54
465 files changed, 123567 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/.classpath b/jpa/plugins/org.eclipse.jpt.core/.classpath
new file mode 100644
index 0000000000..8f257414e6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="property_files"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jpa/plugins/org.eclipse.jpt.core/.cvsignore b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
new file mode 100644
index 0000000000..60463af3fc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
@@ -0,0 +1,2 @@
+bin
+build.xml
diff --git a/jpa/plugins/org.eclipse.jpt.core/.project b/jpa/plugins/org.eclipse.jpt.core/.project
new file mode 100644
index 0000000000..6ab3035c3c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.jpt.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs b/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..00070b73fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Sun Nov 12 15:24:36 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..a265455e0a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
@@ -0,0 +1,54 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-SymbolicName: org.eclipse.jpt.core;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.jpt.core.internal.JpaCorePlugin
+Bundle-ClassPath: .
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.core.filebuffers,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.jdt.core,
+ org.eclipse.jem,
+ org.eclipse.jem.util,
+ org.eclipse.jem.workbench,
+ org.eclipse.jst.j2ee.core,
+ org.eclipse.jpt.db,
+ org.eclipse.jpt.utility,
+ org.eclipse.text,
+ org.eclipse.wst.common.emf,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.common.modulecore,
+ org.eclipse.wst.common.project.facet.core,
+ org.eclipse.wst.sse.core,
+ org.eclipse.wst.validation,
+ org.eclipse.wst.xml.core,
+ org.eclipse.xsd
+Export-Package: org.eclipse.jpt.core.internal,
+ org.eclipse.jpt.core.internal.content.java,
+ org.eclipse.jpt.core.internal.content.java.mappings,
+ org.eclipse.jpt.core.internal.content.java.mappings.util,
+ org.eclipse.jpt.core.internal.content.java.util,
+ org.eclipse.jpt.core.internal.content.orm,
+ org.eclipse.jpt.core.internal.content.orm.resource,
+ org.eclipse.jpt.core.internal.content.orm.util,
+ org.eclipse.jpt.core.internal.content.persistence,
+ org.eclipse.jpt.core.internal.content.persistence.resource,
+ org.eclipse.jpt.core.internal.content.persistence.util,
+ org.eclipse.jpt.core.internal.facet,
+ org.eclipse.jpt.core.internal.jdtutility,
+ org.eclipse.jpt.core.internal.mappings,
+ org.eclipse.jpt.core.internal.mappings.util,
+ org.eclipse.jpt.core.internal.platform,
+ org.eclipse.jpt.core.internal.platform.generic,
+ org.eclipse.jpt.core.internal.prefs,
+ org.eclipse.jpt.core.internal.synch,
+ org.eclipse.jpt.core.internal.util,
+ org.eclipse.jpt.core.internal.validation
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/jpa/plugins/org.eclipse.jpt.core/build.properties b/jpa/plugins/org.eclipse.jpt.core/build.properties
new file mode 100644
index 0000000000..9494ab4dcb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2006 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
+###############################################################################
+javacSource=1.5
+javacTarget=1.5
+source.. = src/,\
+ property_files/
+output.. = bin/
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+src.includes = model/
diff --git a/jpa/plugins/org.eclipse.jpt.core/component.xml b/jpa/plugins/org.eclipse.jpt.core/component.xml
new file mode 100644
index 0000000000..2311024fcd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/component.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.jpt.core"><description url=""></description><component-depends unrestricted="true"></component-depends><plugin id="org.eclipse.jpt.core" fragment="false"/></component> \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml b/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml
new file mode 100644
index 0000000000..0c60c82f8f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles version="10">
+<profile kind="CodeFormatterProfile" name="DaliEMFFormatter" version="10">
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="32"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="48"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="32"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="52"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+</profile>
+</profiles>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/core.ecore b/jpa/plugins/org.eclipse.jpt.core/model/core.ecore
new file mode 100644
index 0000000000..96c4982baa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/core.ecore
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="internal"
+ nsURI="jpt.core.xmi" nsPrefix="jpt.core">
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaModel" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaModel" eSuperTypes="#//JpaEObject #//IJpaModel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="projects" upperBound="-1"
+ eType="#//IJpaProject" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaEObject" abstract="true" interface="true">
+ <eOperations name="getJpaProject" eType="#//IJpaProject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaEObject" abstract="true" eSuperTypes="#//IJpaEObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaProject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getModel" lowerBound="1" eType="#//IJpaModel"/>
+ <eOperations name="getPlatform" ordered="false" unique="false" lowerBound="1"
+ eType="#//IJpaPlatform"/>
+ <eOperations name="setPlatform">
+ <eParameters name="platformId" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDataSource" lowerBound="1" eType="#//IJpaDataSource"/>
+ <eOperations name="setDataSource" ordered="false" unique="false" lowerBound="1">
+ <eParameters name="connectionProfileName" ordered="false" unique="false" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaProject" eSuperTypes="#//JpaEObject #//IJpaProject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="platform" ordered="false"
+ unique="false" lowerBound="1" eType="#//IJpaPlatform" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dataSource" ordered="false"
+ unique="false" eType="#//IJpaDataSource" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="files" upperBound="-1"
+ eType="#//IJpaFile" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaPlatform" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaDataSource" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getConnectionProfileName" ordered="false" unique="false" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaDataSource" eSuperTypes="#//JpaEObject #//IJpaDataSource">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="connectionProfileName"
+ ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaFile" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getContentId" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eOperations name="getContent" eType="#//IJpaRootContentNode"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaFile" eSuperTypes="#//JpaEObject #//IJpaFile">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="contentId" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="content" eType="#//IJpaRootContentNode"
+ containment="true" eOpposite="#//IJpaRootContentNode/jpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaSourceObject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getJpaFile" eType="#//IJpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IXmlEObject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject #//IJpaSourceObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEObject" abstract="true" eSuperTypes="#//JpaEObject #//IXmlEObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaContentNode" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getJpaFile" lowerBound="1" eType="#//IJpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaRootContentNode" abstract="true"
+ interface="true" eSuperTypes="#//IJpaContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="jpaFile" eType="#//IJpaFile"
+ changeable="false" defaultValueLiteral="" eOpposite="#//JpaFile/content"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IPersistentType" abstract="true" interface="true"
+ eSuperTypes="#//IJpaContentNode">
+ <eOperations name="getMapping" lowerBound="1" eType="#//ITypeMapping"/>
+ <eOperations name="parentPersistentType" eType="#//IPersistentType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingKey" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITypeMapping" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getPersistentType" lowerBound="1" eType="#//IPersistentType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tableName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NullTypeMapping" eSuperTypes="#//JpaEObject #//ITypeMapping #//IJpaSourceObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IPersistentAttribute" abstract="true"
+ interface="true" eSuperTypes="#//IJpaContentNode">
+ <eOperations name="getMapping" lowerBound="1" eType="#//IAttributeMapping"/>
+ <eOperations name="typeMapping" lowerBound="1" eType="#//ITypeMapping"/>
+ <eOperations name="getName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingKey" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAttributeMapping" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getPersistentAttribute" lowerBound="1" eType="#//IPersistentAttribute"/>
+ <eOperations name="isDefault" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AccessType">
+ <eLiterals name="Default" literal="Default"/>
+ <eLiterals name="PROPERTY" value="1" literal="Property"/>
+ <eLiterals name="FIELD" value="2" literal="Field"/>
+ </eClassifiers>
+ <eSubpackages name="mappings" nsURI="jpt.core.mappings.xmi" nsPrefix="jpt.core.mappings">
+ <eClassifiers xsi:type="ecore:EClass" name="IMappedSuperclass" abstract="true"
+ interface="true" eSuperTypes="#//ITypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IEntity" abstract="true" interface="true"
+ eSuperTypes="#//ITypeMapping">
+ <eOperations name="discriminatorValueIsAllowed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getSecondaryTables" upperBound="-1" eType="#//mappings/ISecondaryTable"/>
+ <eOperations name="parentEntity" eType="#//mappings/IEntity"/>
+ <eOperations name="rootEntity" eType="#//mappings/IEntity"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="table" lowerBound="1"
+ eType="#//mappings/ITable" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedPrimaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultPrimaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inheritanceStrategy"
+ eType="#//mappings/InheritanceType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultDiscriminatorValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedDiscriminatorValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorValue" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="discriminatorColumn"
+ eType="#//mappings/IDiscriminatorColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerator" eType="#//mappings/ISequenceGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerator" eType="#//mappings/ITableGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeOverrides" upperBound="-1"
+ eType="#//mappings/IAttributeOverride" changeable="false" volatile="true"
+ transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAssociationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAssociationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedQueries" upperBound="-1"
+ eType="#//mappings/INamedQuery" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedNativeQueries" upperBound="-1"
+ eType="#//mappings/INamedNativeQuery" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbeddable" abstract="true" interface="true"
+ eSuperTypes="#//ITypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ITable" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedColumn" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAbstractColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="#//mappings/DefaultFalseBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="insertable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="updatable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="table" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IAbstractColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="255"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IColumnMapping" abstract="true" interface="true">
+ <eOperations name="getColumn" eType="#//mappings/IColumn"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IBasic" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultEagerFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lob" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="enumerated" eType="#//mappings/EnumType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IId" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generatedValue" eType="#//mappings/IGeneratedValue"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerator" eType="#//mappings/ITableGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerator" eType="#//mappings/ISequenceGenerator"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITransient" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IVersion" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbeddedId" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbedded" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping">
+ <eOperations name="embeddable" eType="#//mappings/IEmbeddable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeOverrides" upperBound="-1"
+ eType="#//mappings/IAttributeOverride" changeable="false" volatile="true"
+ transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//IAttributeMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetEntity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTargetEntity"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTargetEntity"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedTargetEntity"
+ eType="#//mappings/IEntity"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INonOwningMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IRelationshipMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappedBy" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IMultiRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/INonOwningMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultLazyFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinTable" lowerBound="1"
+ eType="#//mappings/IJoinTable" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderBy" lowerBound="1"
+ eType="#//mappings/IOrderBy" changeable="false" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IOneToMany" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IManyToMany" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ISingleRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IRelationshipMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultEagerFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IManyToOne" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IOneToOne" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ISingleRelationshipMapping #//mappings/INonOwningMapping"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultEagerFetchType">
+ <eLiterals name="Default" literal="Default (Eager)"/>
+ <eLiterals name="EAGER" value="1" literal="Eager"/>
+ <eLiterals name="LAZY" value="2" literal="Lazy"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultLazyFetchType">
+ <eLiterals name="Default" literal="Default (Lazy)"/>
+ <eLiterals name="LAZY" value="1" literal="Lazy"/>
+ <eLiterals name="EAGER" value="2" literal="Eager"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultFalseBoolean">
+ <eLiterals name="Default" literal="Default (False)"/>
+ <eLiterals name="false" value="1" literal="False"/>
+ <eLiterals name="true" value="2" literal="True"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultTrueBoolean">
+ <eLiterals name="Default" literal="Default (False)"/>
+ <eLiterals name="true" value="1" literal="True"/>
+ <eLiterals name="false" value="2" literal="False"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TemporalType">
+ <eLiterals name="Null" literal=""/>
+ <eLiterals name="DATE" value="1" literal="Date"/>
+ <eLiterals name="TIME" value="2" literal="Time"/>
+ <eLiterals name="TIMESTAMP" value="3" literal="Timestamp"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJoinTable" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ITable">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inverseJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedInverseJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultInverseJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAbstractJoinColumn" abstract="true"
+ interface="true" eSuperTypes="#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="referencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultReferencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJoinColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IAbstractColumn #//mappings/IAbstractJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IOverride" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAttributeOverride" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IOverride #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAssociationOverride" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IOverride">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IDiscriminatorColumn" abstract="true"
+ interface="true" eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorType" eType="#//mappings/DiscriminatorType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="31"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InheritanceType">
+ <eLiterals name="Default" literal="Default (Single Table)"/>
+ <eLiterals name="SINGLE_TABLE" value="1" literal="Single Table"/>
+ <eLiterals name="JOINED" value="2" literal="Joined"/>
+ <eLiterals name="TABLE_PER_CLASS" value="3" literal="Table per Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DiscriminatorType">
+ <eLiterals name="Default" literal="Default (String)"/>
+ <eLiterals name="STRING" value="1" literal="String"/>
+ <eLiterals name="CHAR" value="2" literal="Char"/>
+ <eLiterals name="INTEGER" value="3" literal="Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ISecondaryTable" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IPrimaryKeyJoinColumn" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IAbstractJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IGenerator" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialValue" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedInitialValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultInitialValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="allocationSize" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAllocationSize"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAllocationSize"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITableGenerator" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IGenerator">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="table" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pkColumnName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedPkColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultPkColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueColumnName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedValueColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pkColumnValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedPkColumnValue"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultPkColumnValue"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ISequenceGenerator" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IGenerator">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sequenceName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSequenceName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSequenceName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IGeneratedValue" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="strategy" eType="#//mappings/GenerationType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="generator" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="GenerationType">
+ <eLiterals name="Default" literal="Default (Auto)"/>
+ <eLiterals name="Auto" value="1"/>
+ <eLiterals name="Identity" value="2"/>
+ <eLiterals name="Sequence" value="3"/>
+ <eLiterals name="Table" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="EnumType">
+ <eLiterals name="Default" literal="Default (Ordinal)"/>
+ <eLiterals name="ORDINAL" value="1" literal="Ordinal"/>
+ <eLiterals name="STRING" value="2" literal="String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IOrderBy" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//mappings/OrderingType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="OrderingType">
+ <eLiterals name="NONE" literal="None"/>
+ <eLiterals name="PRIMARY_KEY" value="1" literal="Primary Key"/>
+ <eLiterals name="CUSTOM" value="2" literal="Custom"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IQuery" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="query" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="hints" upperBound="-1"
+ eType="#//mappings/IQueryHint" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedQuery" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject #//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedNativeQuery" abstract="true"
+ interface="true" eSuperTypes="#//IJpaSourceObject #//mappings/IQuery">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resultClass" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resultSetMapping" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IQueryHint" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel b/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel
new file mode 100644
index 0000000000..1869eab0b9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel
@@ -0,0 +1,656 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jpt.core/src"
+ creationCommands="false" creationIcons="false" editDirectory="" editorDirectory=""
+ modelPluginID="org.eclipse.jpt.core" modelName="Core" editPluginClass="" editorPluginClass=""
+ suppressInterfaces="true" codeFormatting="true" testsDirectory="" testSuiteClass=""
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore javaModel.genmodel#//java">
+ <foreignModel>core.ecore</foreignModel>
+ <foreignModel>java.ecore</foreignModel>
+ <foreignModel>orm.ecore</foreignModel>
+ <foreignModel>persistence.ecore</foreignModel>
+ <genPackages prefix="JpaCore" basePackage="org.eclipse.jpt.core" disposableProviderFactory="true"
+ ecorePackage="core.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//AccessType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/PROPERTY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/FIELD"/>
+ </genEnums>
+ <genClasses ecoreClass="core.ecore#//IJpaModel"/>
+ <genClasses ecoreClass="core.ecore#//JpaModel">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaModel/projects"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaEObject">
+ <genOperations ecoreOperation="core.ecore#//IJpaEObject/getJpaProject"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//JpaEObject"/>
+ <genClasses ecoreClass="core.ecore#//IJpaProject">
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getModel"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getPlatform"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/setPlatform">
+ <genParameters ecoreParameter="core.ecore#//IJpaProject/setPlatform/platformId"/>
+ </genOperations>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getDataSource"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/setDataSource">
+ <genParameters ecoreParameter="core.ecore#//IJpaProject/setDataSource/connectionProfileName"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaProject">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/platform"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/dataSource"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/files"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaPlatform"/>
+ <genClasses ecoreClass="core.ecore#//IJpaDataSource">
+ <genOperations ecoreOperation="core.ecore#//IJpaDataSource/getConnectionProfileName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaDataSource">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//JpaDataSource/connectionProfileName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaFile">
+ <genOperations ecoreOperation="core.ecore#//IJpaFile/getContentId"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaFile/getContent"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaFile">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//JpaFile/contentId"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaFile/content"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaSourceObject">
+ <genOperations ecoreOperation="core.ecore#//IJpaSourceObject/getJpaFile"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//IXmlEObject"/>
+ <genClasses image="false" ecoreClass="core.ecore#//XmlEObject"/>
+ <genClasses ecoreClass="core.ecore#//IJpaContentNode">
+ <genOperations ecoreOperation="core.ecore#//IJpaContentNode/getJpaFile"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference core.ecore#//IJpaRootContentNode/jpaFile"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IPersistentType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//IPersistentType/mappingKey"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentType/getMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentType/parentPersistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//ITypeMapping">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//ITypeMapping/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//ITypeMapping/tableName"/>
+ <genOperations ecoreOperation="core.ecore#//ITypeMapping/getPersistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//NullTypeMapping"/>
+ <genClasses ecoreClass="core.ecore#//IPersistentAttribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//IPersistentAttribute/mappingKey"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/getMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/typeMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/getName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IAttributeMapping">
+ <genOperations ecoreOperation="core.ecore#//IAttributeMapping/getPersistentAttribute"/>
+ <genOperations ecoreOperation="core.ecore#//IAttributeMapping/isDefault"/>
+ </genClasses>
+ <nestedGenPackages prefix="JpaCoreMappings" basePackage="org.eclipse.jpt.core.internal"
+ disposableProviderFactory="true" ecorePackage="core.ecore#//mappings">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultEagerFetchType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/EAGER"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/LAZY"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultLazyFetchType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/LAZY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/EAGER"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultFalseBoolean">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/false"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/true"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultTrueBoolean">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/true"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/false"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/TemporalType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/Null"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/DATE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/TIME"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/TIMESTAMP"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/InheritanceType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/SINGLE_TABLE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/JOINED"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/TABLE_PER_CLASS"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DiscriminatorType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/STRING"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/CHAR"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/INTEGER"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/GenerationType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Auto"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Identity"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Sequence"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Table"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/EnumType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/ORDINAL"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/STRING"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/OrderingType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/NONE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/PRIMARY_KEY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/CUSTOM"/>
+ </genEnums>
+ <genClasses ecoreClass="core.ecore#//mappings/IMappedSuperclass"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IEntity">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/defaultName"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/table"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/primaryKeyJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedPrimaryKeyJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultPrimaryKeyJoinColumns"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/inheritanceStrategy"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/defaultDiscriminatorValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/specifiedDiscriminatorValue"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/discriminatorValue"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/discriminatorColumn"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/sequenceGenerator"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/tableGenerator"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/attributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedAttributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultAttributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/associationOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedAssociationOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultAssociationOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/namedQueries"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/namedNativeQueries"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/discriminatorValueIsAllowed"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/getSecondaryTables"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/parentEntity"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/rootEntity"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IEmbeddable"/>
+ <genClasses ecoreClass="core.ecore#//mappings/ITable">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultSchema"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedColumn">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/defaultName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/columnDefinition"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IAbstractColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/unique"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/nullable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/insertable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/updatable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/table"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/specifiedTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/defaultTable"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/length"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/precision"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/scale"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IColumnMapping">
+ <genOperations ecoreOperation="core.ecore#//mappings/IColumnMapping/getColumn"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IBasic">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/fetch"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/optional"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IBasic/column"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/lob"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/temporal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/enumerated"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IId">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IId/column"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/generatedValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IId/temporal"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/tableGenerator"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/sequenceGenerator"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ITransient"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IVersion">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IVersion/column"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IVersion/temporal"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IEmbeddedId"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IEmbedded">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/attributeOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/specifiedAttributeOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/defaultAttributeOverrides"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEmbedded/embeddable"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IRelationshipMapping">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/targetEntity"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/specifiedTargetEntity"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/defaultTargetEntity"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IRelationshipMapping/resolvedTargetEntity"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/INonOwningMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INonOwningMapping/mappedBy"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IMultiRelationshipMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IMultiRelationshipMapping/fetch"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IMultiRelationshipMapping/joinTable"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IMultiRelationshipMapping/orderBy"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IOneToMany"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IManyToMany"/>
+ <genClasses ecoreClass="core.ecore#//mappings/ISingleRelationshipMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISingleRelationshipMapping/fetch"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/defaultJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IManyToOne"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOneToOne"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IJoinTable">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/defaultJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/inverseJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/specifiedInverseJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/defaultInverseJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAbstractJoinColumn">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/referencedColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/specifiedReferencedColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/defaultReferencedColumnName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IJoinColumn"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOverride">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOverride/name"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAttributeOverride">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IAttributeOverride/column"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAssociationOverride">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/defaultJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IDiscriminatorColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/defaultName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/discriminatorType"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/columnDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/defaultLength"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/specifiedLength"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/length"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/ISecondaryTable"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IPrimaryKeyJoinColumn"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IGenerator">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/initialValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/specifiedInitialValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/defaultInitialValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/allocationSize"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/specifiedAllocationSize"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/defaultAllocationSize"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ITableGenerator">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/table"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/pkColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedPkColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultPkColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/valueColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedValueColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultValueColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/pkColumnValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedPkColumnValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultPkColumnValue"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ISequenceGenerator">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/sequenceName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/specifiedSequenceName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/defaultSequenceName"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IGeneratedValue">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGeneratedValue/strategy"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGeneratedValue/generator"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOrderBy">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOrderBy/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOrderBy/type"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IQuery">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQuery/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQuery/query"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IQuery/hints"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedQuery"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedNativeQuery">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedNativeQuery/resultClass"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedNativeQuery/resultSetMapping"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IQueryHint">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQueryHint/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQueryHint/value"/>
+ </genClasses>
+ </nestedGenPackages>
+ </genPackages>
+ <genPackages prefix="JpaJava" basePackage="org.eclipse.jpt.core.internal.content"
+ disposableProviderFactory="true" ecorePackage="java.ecore#/">
+ <genClasses image="false" ecoreClass="java.ecore#//JavaEObject">
+ <genOperations ecoreOperation="java.ecore#//JavaEObject/getJpaFile"/>
+ <genOperations ecoreOperation="java.ecore#//JavaEObject/getRoot"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JpaCompilationUnit">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JpaCompilationUnit/types"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JavaPersistentType">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentType/mapping"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentType/attributes"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute java.ecore#//JavaPersistentType/access"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JavaPersistentAttribute">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentAttribute/defaultMapping"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentAttribute/specifiedMapping"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="java.ecore#//IJavaTypeMapping">
+ <genOperations ecoreOperation="java.ecore#//IJavaTypeMapping/initialize"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="java.ecore#//IJavaAttributeMapping">
+ <genOperations ecoreOperation="java.ecore#//IJavaAttributeMapping/initialize"/>
+ </genClasses>
+ <nestedGenPackages prefix="JpaJavaMappings" basePackage="org.eclipse.jpt.core.internal.content.java"
+ disposableProviderFactory="true" ecorePackage="java.ecore#//mappings">
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaTypeMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEntity">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//mappings/JavaEntity/secondaryTables"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaMappedSuperclass"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbeddable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNullTypeMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaAttributeMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaBasic"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaId"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTransient"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaVersion"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbeddedId"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbedded"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaRelationshipMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaSingleRelationshipMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaManyToOne"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOneToOne"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaMultiRelationshipMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOneToMany"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaManyToMany"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNullAttributeMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/AbstractJavaTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaSecondaryTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaJoinTable"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaNamedColumn"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/AbstractJavaColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaJoinColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaAttributeOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaAssociationOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaDiscriminatorColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaPrimaryKeyJoinColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaGeneratedValue"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTableGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaSequenceGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOrderBy"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaAbstractQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNamedQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNamedNativeQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaQueryHint"/>
+ </nestedGenPackages>
+ </genPackages>
+ <genPackages prefix="Orm" basePackage="org.eclipse.jpt.core.internal.content" disposableProviderFactory="true"
+ ecorePackage="orm.ecore#/">
+ <genClasses ecoreClass="orm.ecore#//XmlRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlRootContentNode/entityMappings"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappingsInternal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/root"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/version"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/description"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/persistenceUnitMetadataInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/packageInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultSchema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultCatalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultAccess"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedAccess"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/access"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/typeMappings"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/persistentTypes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/sequenceGenerators"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/tableGenerators"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/namedQueries"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/namedNativeQueries"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappings">
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//EntityMappings/persistenceUnitMetadata"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappings/package"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappingsForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsForXml/persistenceUnitMetadataForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsForXml/packageForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlTypeMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/defaultAccess"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/specifiedAccess"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/access"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/metadataComplete"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlTypeMapping/persistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlPersistentType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPersistentType/class"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/attributeMappings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/specifiedAttributeMappings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/virtualAttributeMappings"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/persistentAttributes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/specifiedPersistentAttributes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/virtualPersistentAttributes"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlMappedSuperclass"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEntityInternal"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEntityForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntityForXml/tableForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntityForXml/discriminatorColumnForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlEntity">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/secondaryTables"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/specifiedSecondaryTables"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/defaultSecondaryTables"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbeddable"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlAttributeMapping">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlAttributeMapping/persistentAttribute"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlNullAttributeMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlBasic"/>
+ <genClasses ecoreClass="orm.ecore#//XmlId"/>
+ <genClasses ecoreClass="orm.ecore#//XmlTransient"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbedded"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbeddedId"/>
+ <genClasses ecoreClass="orm.ecore#//XmlVersion"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMappingInternal"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMappingForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlMultiRelationshipMappingForXml/joinTableForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlMultiRelationshipMappingForXml/orderByForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOneToMany"/>
+ <genClasses ecoreClass="orm.ecore#//XmlManyToMany"/>
+ <genClasses ecoreClass="orm.ecore#//XmlPersistentAttribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPersistentAttribute/name"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadataInternal">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadataInternal/xmlMappingMetadataCompleteInternal"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadataInternal/persistenceUnitDefaultsInternal"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadata">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadata/xmlMappingMetadataComplete"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadata/persistenceUnitDefaults"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadataForXml">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadataForXml/xmlMappingMetadataCompleteForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadataForXml/persistenceUnitDefaultsForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaultsInternal">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/schemaInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/catalogInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/accessInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/cascadePersistInternal"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaults">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/access"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/cascadePersist"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaultsForXml">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/schemaForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/catalogForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/accessForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/cascadePersistForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlTable"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//AbstractXmlNamedColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlNamedColumn/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlNamedColumn/columnDefinitionForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//AbstractXmlColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/uniqueForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/nullableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/insertableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/updatableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/specifiedTableForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/lengthForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/precisionForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/scaleForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlJoinColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlJoinColumn/specifiedReferencedColumnNameForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//IXmlColumnMapping">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//IXmlColumnMapping/columnForXml"/>
+ <genOperations ecoreOperation="orm.ecore#//IXmlColumnMapping/makeColumnForXmlNonNull"/>
+ <genOperations ecoreOperation="orm.ecore#//IXmlColumnMapping/makeColumnForXmlNull"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlManyToOne"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOneToOne"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlSingleRelationshipMapping"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlRelationshipMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlJoinTable"/>
+ <genClasses ecoreClass="orm.ecore#//AbstractXmlTable">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedCatalogForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedSchemaForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlAttributeOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlAssociationOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlDiscriminatorColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/discriminatorTypeForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/columnDefinitionForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/specifiedLengthForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlSecondaryTable"/>
+ <genClasses ecoreClass="orm.ecore#//XmlPrimaryKeyJoinColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPrimaryKeyJoinColumn/specifiedReferencedColumnNameForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlGeneratedValue"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlSequenceGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlTableGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOrderBy"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//AbstractXmlQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlNamedQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlNamedNativeQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlQueryHint"/>
+ </genPackages>
+ <genPackages prefix="Persistence" basePackage="org.eclipse.jpt.core.internal.content"
+ disposableProviderFactory="true" ecorePackage="persistence.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="persistence.ecore#//PersistenceUnitTransactionType">
+ <genEnumLiterals ecoreEnumLiteral="persistence.ecore#//PersistenceUnitTransactionType/JTA"/>
+ <genEnumLiterals ecoreEnumLiteral="persistence.ecore#//PersistenceUnitTransactionType/RESOURCE_LOCAL"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="persistence.ecore#//PersistenceUnitTransactionTypeObject"/>
+ <genDataTypes ecoreDataType="persistence.ecore#//Version"/>
+ <genClasses ecoreClass="persistence.ecore#//PersistenceXmlRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceXmlRootContentNode/persistence"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Persistence">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//Persistence/persistenceUnits"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Persistence/version"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference persistence.ecore#//Persistence/root"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//PersistenceUnit">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/description"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/provider"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/jtaDataSource"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/nonJtaDataSource"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/mappingFiles"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/jarFiles"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/classes"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/excludeUnlistedClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/properties"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/transactionType"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//MappingFileRef">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//MappingFileRef/fileName"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//JavaClassRef">
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//JavaClassRef/javaClass"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Properties">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//Properties/properties"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Property">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Property/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Property/value"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/java.ecore b/jpa/plugins/org.eclipse.jpt.core/model/java.ecore
new file mode 100644
index 0000000000..605cc31a9a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/java.ecore
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="java"
+ nsURI="jpt.java.xmi" nsPrefix="org.eclipse.jpt.core.content.java">
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEObject" abstract="true" eSuperTypes="core.ecore#//JpaEObject core.ecore#//IJpaSourceObject">
+ <eOperations name="getJpaFile" eType="ecore:EClass core.ecore#//IJpaFile"/>
+ <eOperations name="getRoot" eType="ecore:EClass core.ecore#//IJpaRootContentNode"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaCompilationUnit" eSuperTypes="#//JavaEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+ eType="#//JavaPersistentType" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPersistentType" eSuperTypes="#//JavaEObject core.ecore#//IPersistentType">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" lowerBound="1"
+ eType="#//IJavaTypeMapping" defaultValueLiteral="" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//JavaPersistentAttribute" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" defaultValueLiteral=""/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPersistentAttribute" eSuperTypes="#//JavaEObject core.ecore#//IPersistentAttribute">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultMapping" lowerBound="1"
+ eType="#//IJavaAttributeMapping" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedMapping" lowerBound="1"
+ eType="#//IJavaAttributeMapping" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJavaTypeMapping" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//ITypeMapping">
+ <eOperations name="initialize"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJavaAttributeMapping" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IAttributeMapping">
+ <eOperations name="initialize"/>
+ </eClassifiers>
+ <eSubpackages name="mappings" nsURI="jpt.core.java.mappings.xmi" nsPrefix="jpt.core.java.mappings">
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTypeMapping" abstract="true" eSuperTypes="#//JavaEObject #//IJavaTypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEntity" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IEntity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryTables" upperBound="-1"
+ eType="ecore:EClass core.ecore#//mappings/ISecondaryTable" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaMappedSuperclass" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IMappedSuperclass"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbeddable" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IEmbeddable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNullTypeMapping" eSuperTypes="#//mappings/JavaTypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAttributeMapping" abstract="true"
+ eSuperTypes="#//JavaEObject #//IJavaAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaBasic" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IBasic"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaId" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTransient" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/ITransient"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaVersion" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IVersion"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbeddedId" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IEmbeddedId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbedded" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IEmbedded"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSingleRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaRelationshipMapping core.ecore#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaManyToOne" eSuperTypes="#//mappings/JavaSingleRelationshipMapping core.ecore#//mappings/IManyToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOneToOne" eSuperTypes="#//mappings/JavaSingleRelationshipMapping core.ecore#//mappings/IOneToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaMultiRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaRelationshipMapping core.ecore#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOneToMany" eSuperTypes="#//mappings/JavaMultiRelationshipMapping core.ecore#//mappings/IOneToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaManyToMany" eSuperTypes="#//mappings/JavaMultiRelationshipMapping core.ecore#//mappings/IManyToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNullAttributeMapping" eSuperTypes="#//mappings/JavaAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractJavaTable" abstract="true"
+ eSuperTypes="#//JavaEObject core.ecore#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTable" eSuperTypes="#//mappings/AbstractJavaTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSecondaryTable" eSuperTypes="#//mappings/AbstractJavaTable core.ecore#//mappings/ISecondaryTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaJoinTable" eSuperTypes="#//mappings/AbstractJavaTable core.ecore#//mappings/IJoinTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedColumn" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/INamedColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractJavaColumn" abstract="true"
+ eSuperTypes="#//mappings/JavaNamedColumn core.ecore#//mappings/IAbstractColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaColumn" eSuperTypes="#//mappings/AbstractJavaColumn core.ecore#//mappings/IColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaJoinColumn" eSuperTypes="#//mappings/AbstractJavaColumn core.ecore#//mappings/IJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOverride" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/IOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAttributeOverride" eSuperTypes="#//mappings/JavaOverride core.ecore#//mappings/IAttributeOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAssociationOverride" eSuperTypes="#//mappings/JavaOverride core.ecore#//mappings/IAssociationOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaDiscriminatorColumn" eSuperTypes="#//JavaEObject core.ecore#//mappings/IDiscriminatorColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPrimaryKeyJoinColumn" eSuperTypes="#//JavaEObject core.ecore#//mappings/IPrimaryKeyJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaGeneratedValue" eSuperTypes="#//JavaEObject core.ecore#//mappings/IGeneratedValue"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaGenerator" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/IGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTableGenerator" eSuperTypes="#//mappings/JavaGenerator core.ecore#//mappings/ITableGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSequenceGenerator" eSuperTypes="#//mappings/JavaGenerator core.ecore#//mappings/ISequenceGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOrderBy" eSuperTypes="#//JavaEObject core.ecore#//mappings/IOrderBy"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAbstractQuery" abstract="true"
+ eSuperTypes="#//JavaEObject core.ecore#//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedQuery" eSuperTypes="#//mappings/JavaAbstractQuery core.ecore#//mappings/INamedQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedNativeQuery" eSuperTypes="#//mappings/JavaAbstractQuery core.ecore#//mappings/INamedNativeQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaQueryHint" eSuperTypes="#//JavaEObject core.ecore#//mappings/IQueryHint"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore
new file mode 100644
index 0000000000..87cfd4f59e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="java"
+ nsURI="java.xmi" nsPrefix="org.eclipse.jem.java">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Changes to synch up with Java3e:&#xD;&#xA;- deleted JavaElement, BodyElement which didn't add anything useful&#xD;&#xA;- deleted NestedClass and the association which described nesting, contents can be used instead&#xD;&#xA;- deleted extends/extendedBy which is replaced with MOF subtype/supertype&#xD;&#xA;- deleted the clumsy main diagram&#xD;&#xA;- moved the MOF inheritance details to the MOF binding diagram&#xD;&#xA;- deleted &quot;final&quot; on JavaParameter, don't know what that was supposed to be&#xD;&#xA;- deleted the Category junk&#xD;&#xA;- changed the Block-typed attributes on Field, Method, Initializer to be associations to Block&#xD;&#xA;&#xD;&#xA;Outstanding questions/issues:&#xD;&#xA;- JavaParameterKind should go away if we get the base Parameter kind fixed up&#xD;&#xA;"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaClass" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eOperations name="isNested" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getField" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return an Field with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldExtended" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value=" Return an Field with the passed name from this JavaClass or any supertypes.&#xD;&#xA;&#xD;&#xA;Return null if a Field named fieldName is not found."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldNamed" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return an Field with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all fields, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethod" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the method of this name and these parameters. It will not look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMethodElementSignatures" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a List of Strings that represent MethodElement signatures from most general to most specific."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethodExtended" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the method of this name and these parameters. It will look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMethodsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all methods, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOnlySpecificMethods" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a List of Methods that begins with @aMethodNamePrefix and is not included in the @excludedNames list. If @aMethodNamePrefix is null, all methods will be returned.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eParameters name="aMethodNamePrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="excludedNames" eType="#//JTypeList"/>
+ </eOperations>
+ <eOperations name="getPublicMethod" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a method matching the name, and non-return parameters with fully qualified types matching all the types in the list, if it exists. It will not look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getPublicMethods" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all methods, it will not go up the supertype hierarchy."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getPublicMethodsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all public methods, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getPublicMethodsNamed" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Returns a filtered list on the methods of this class, having a name equal to that of the parameter."/>
+ </eAnnotations>
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getSupertype" eType="#//JavaClass"/>
+ <eOperations name="implementsInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Test whether the receiver implements the passed interface (or one of its supertypes)."/>
+ </eAnnotations>
+ <eParameters name="interfaceType" eType="#//JavaClass"/>
+ </eOperations>
+ <eOperations name="infoString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a string showing our details."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="inheritsFrom" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tests whether this class inherits from the passed in class."/>
+ </eAnnotations>
+ <eParameters name="javaClass" eType="#//JavaClass"/>
+ </eOperations>
+ <eOperations name="isExistingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Does this type exist."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this an interface."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setSupertype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the supertype."/>
+ </eAnnotations>
+ <eParameters name="javaclass" eType="#//JavaClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//TypeKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="implementsInterfaces" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classImport" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageImports" upperBound="-1"
+ eType="#//JavaPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fields" upperBound="-1"
+ eType="#//Field" containment="true" eOpposite="#//Field/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="methods" upperBound="-1"
+ eType="#//Method" containment="true" eOpposite="#//Method/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializers" upperBound="-1"
+ eType="#//Initializer" containment="true" eOpposite="#//Initializer/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredClasses" upperBound="-1"
+ eType="#//JavaClass" eOpposite="#//JavaClass/declaringClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaringClass" eType="#//JavaClass"
+ eOpposite="#//JavaClass/declaredClasses"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaPackage" eType="#//JavaPackage"
+ changeable="false" volatile="true" transient="true" eOpposite="#//JavaPackage/javaClasses"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
+ eType="#//JavaEvent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="allEvents" upperBound="-1"
+ eType="#//JavaEvent" volatile="true" transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Initializer">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/initializers"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaParameter" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EParameter">
+ <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this parameter type an array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isReturn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this a return parameter."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getJavaType" eType="#//JTypeJavaHelpers"/>
+ <eOperations name="getQualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterKind" eType="#//JavaParameterKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Method" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EOperation">
+ <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return the java class that this method is defined in."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethodElementSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a String with the the method name and its parameters. e.g. &lt;code> setFirstName(java.lang.String) &lt;/code> .&#xD;&#xA; "/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getParameter" eType="#//JavaParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a Parameter with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="parameterName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getReturnType" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the return type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setReturnType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the return type"/>
+ </eAnnotations>
+ <eParameters name="type" eType="#//JTypeJavaHelpers"/>
+ </eOperations>
+ <eOperations name="getSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Replicate the functionality of java.lang.reflect.Method.toString().&#xD;&#xA;&#xD;&#xA;Returns a string describing this Method. The string is formatted as the method access modifiers, if any, followed by the method return type, followed by a space, followed by the class declaring the method, followed by a period, followed by the method name, followed by a parenthesized, comma-separated list of the method's formal parameter types. If the method throws checked exceptions, the parameter list is followed by a space, followed by the word throws followed by a comma-separated list of the thrown exception types.&#xD;&#xA;&#xD;&#xA;For example:&#xD;&#xA;&#xD;&#xA; public boolean java.lang.Object.equals(java.lang.Object)&#xD;&#xA;&#xD;&#xA;The access modifiers are placed in canonical order as specified by &quot;The Java Language Specification&quot;. This is public, &lt;tt>protected&lt;/tt> or &lt;tt>private&lt;/tt> first, and then other modifiers in the following order: &lt;tt>abstract&lt;/tt>, &lt;tt>static&lt;/tt>, &lt;tt>final&lt;/tt>, &lt;tt>synchronized&lt;/tt> &lt;tt>native&lt;/tt>.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isGenerated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Returns true if the method is system generated.&#xD;&#xA;This is usually determined by the @generated tag in the comment."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setIsGenerated">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the isGenerated flag."/>
+ </eAnnotations>
+ <eParameters name="generated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="isVoid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this a void return type method."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="native" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="constructor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+ eType="#//JavaParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaExceptions" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/methods"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Field" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ETypedElement">
+ <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the class that this field is within."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this field an array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/fields"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializer" eType="#//Block"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TypeKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UNDEFINED=1 CLASS=2 INTERFACE=3 EXCEPTION=4"/>
+ </eAnnotations>
+ <eLiterals name="UNDEFINED"/>
+ <eLiterals name="CLASS" value="1"/>
+ <eLiterals name="INTERFACE" value="2"/>
+ <eLiterals name="EXCEPTION" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//Block" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Block"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Statement" eSuperTypes="#//Block"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPackage" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClasses" upperBound="-1"
+ eType="#//JavaClass" changeable="false" volatile="true" transient="true" eOpposite="#//JavaClass/javaPackage"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JavaVisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PACKAGE=1&#xD;&#xA;PUBLIC=2&#xD;&#xA;PRIVATE=3&#xD;&#xA;PROTECTED=4"/>
+ </eAnnotations>
+ <eLiterals name="PUBLIC"/>
+ <eLiterals name="PRIVATE" value="1"/>
+ <eLiterals name="PROTECTED" value="2"/>
+ <eLiterals name="PACKAGE" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JavaParameterKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="IN=0&#xD;&#xA;OUT=1&#xD;&#xA;INOUT=2&#xD;&#xA;RETURN=3"/>
+ </eAnnotations>
+ <eLiterals name="IN"/>
+ <eLiterals name="OUT" value="1"/>
+ <eLiterals name="INOUT" value="2"/>
+ <eLiterals name="RETURN" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaDataType" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eOperations name="getDefaultValueString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return the default string representing the default value of the primitive."/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Describes a Java Array type&#xD;&#xA; For multi-dimensional arrays, it is unlikely that the component type will be&#xD;&#xA; specified directly. This would require instantiating a chain of component types&#xD;&#xA; such as String[][][][]->String[][][]->String[][]->String[]->String.&#xD;&#xA;&#xD;&#xA; The component type relationship will be computed if the finalComponentType&#xD;&#xA; and array dimensions is specified.&#xD;&#xA; &#xD;&#xA; For this reason, the preferred way to create is through the JavaRefFactory factory method:&#xD;&#xA; createArrayType(JavaClass finalComponentType, int dimensions)"/>
+ </eAnnotations>
+ <eOperations name="getFinalComponentType" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the final component type for this Array Type.&#xD;&#xA;&#xD;&#xA;In order to ensure a unique instance, we will resolve this type using reflection. It turns out to be most efficient to just do this by trimming the name."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getComponentTypeAsHelper" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the component type of this array. &#xD;&#xA;&#xD;&#xA;If this is a multi-dimensional array, the component type will be the nested array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isPrimitiveArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this an array of java primitives"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setComponentType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the component type."/>
+ </eAnnotations>
+ <eParameters name="helperComponentType" eType="#//JTypeJavaHelpers"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrayDimensions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="componentType" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="JTypeJavaHelpers" instanceClassName="org.eclipse.jem.java.JavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This interface is a common interface between JavaClass and JavaDataType plus some common helper methods."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="JTypeList" instanceClassName="java.util.List">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="java.util.List type"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEvent" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel
new file mode 100644
index 0000000000..f21ce09e58
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jpt.core/model"
+ editDirectory="/org.eclipse.jem.edit/src" editorDirectory="/org.eclipse.jem.editor/src"
+ modelPluginID="" modelName="Java" modelPluginClass="" editPluginClass="java.provider.JavaEditPlugin"
+ editorPluginClass="java.presentation.JavaEditorPlugin" updateClasspath="false"
+ booleanFlagsField="eFlags" booleanFlagsReservedBits="8" importerID="org.eclipse.emf.importer.ecore"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+ <foreignModel>javaModel.ecore</foreignModel>
+ <genPackages prefix="JavaRef" basePackage="org.eclipse.jem" classPackageSuffix="internal.impl"
+ ecorePackage="javaModel.ecore#/">
+ <genEnums ecoreEnum="javaModel.ecore#//TypeKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/UNDEFINED"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/CLASS"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/INTERFACE"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/EXCEPTION"/>
+ </genEnums>
+ <genEnums ecoreEnum="javaModel.ecore#//JavaVisibilityKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PUBLIC"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PRIVATE"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PROTECTED"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PACKAGE"/>
+ </genEnums>
+ <genEnums ecoreEnum="javaModel.ecore#//JavaParameterKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/IN"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/OUT"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/INOUT"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/RETURN"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="javaModel.ecore#//JTypeJavaHelpers"/>
+ <genDataTypes ecoreDataType="javaModel.ecore#//JTypeList"/>
+ <genClasses ecoreClass="javaModel.ecore#//JavaClass">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/kind"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/public"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/final"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/implementsInterfaces"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/classImport"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/packageImports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/fields"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/methods"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/initializers"/>
+ <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/declaredClasses"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/declaringClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/javaPackage"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/events"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/allEvents"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isNested"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getField">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getField/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldExtended">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getFieldExtended/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldNamed">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getFieldNamed/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethod">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethod/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethod/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodElementSignatures"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodExtended">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethodExtended/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethodExtended/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getOnlySpecificMethods">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getOnlySpecificMethods/aMethodNamePrefix"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getOnlySpecificMethods/excludedNames"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethod">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethod/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethod/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethods"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethodsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethodsNamed">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethodsNamed/name"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getSupertype"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/implementsInterface">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/implementsInterface/interfaceType"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/infoString"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/inheritsFrom">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/inheritsFrom/javaClass"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isExistingType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isInterface"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/setSupertype">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/setSupertype/javaclass"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Initializer">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Initializer/isStatic"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Initializer/javaClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Initializer/source"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaParameter">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaParameter/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaParameter/parameterKind"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/isArray"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/isReturn"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/getJavaType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/getQualifiedName"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Method">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/abstract"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/native"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/synchronized"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/constructor"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/static"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/javaVisibility"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Method/parameters"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/javaExceptions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/javaClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/source"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getContainingJavaClass"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getMethodElementSignature"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getParameter">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/getParameter/parameterName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getReturnType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/setReturnType">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/setReturnType/type"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getSignature"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/isGenerated"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/setIsGenerated">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/setIsGenerated/generated"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/isVoid"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Field">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/static"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/javaVisibility"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/transient"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/volatile"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Field/javaClass"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Field/initializer"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Field/getContainingJavaClass"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Field/isArray"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Block">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Block/source"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Block/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Block/contents"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Comment"/>
+ <genClasses ecoreClass="javaModel.ecore#//Statement"/>
+ <genClasses ecoreClass="javaModel.ecore#//JavaPackage">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaPackage/javaClasses"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaDataType">
+ <genOperations ecoreOperation="javaModel.ecore#//JavaDataType/getDefaultValueString"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//ArrayType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//ArrayType/arrayDimensions"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//ArrayType/componentType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/getFinalComponentType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/getComponentTypeAsHelper"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/isPrimitiveArray"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/setComponentType">
+ <genParameters ecoreParameter="javaModel.ecore#//ArrayType/setComponentType/helperComponentType"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaEvent"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore b/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore
new file mode 100644
index 0000000000..2d3a575788
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="orm"
+ nsURI="jpt.orm.xmi" nsPrefix="org.eclipse.jpt.core.content.orm">
+ <eClassifiers xsi:type="ecore:EClass" name="XmlRootContentNode" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entityMappings" ordered="false"
+ unique="false" lowerBound="1" eType="#//EntityMappingsInternal" resolveProxies="false"
+ eOpposite="#//EntityMappingsInternal/root"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappingsInternal" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaContentNode #//EntityMappingsForXml #//EntityMappings">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="root" ordered="false" unique="false"
+ lowerBound="1" eType="#//XmlRootContentNode" defaultValueLiteral="" resolveProxies="false"
+ eOpposite="#//XmlRootContentNode/entityMappings"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadataInternal"
+ lowerBound="1" eType="#//PersistenceUnitMetadataInternal" changeable="false"
+ defaultValueLiteral="" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="packageInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeMappings" upperBound="-1"
+ eType="#//XmlTypeMapping" defaultValueLiteral="" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentTypes" upperBound="-1"
+ eType="#//XmlPersistentType" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerators" upperBound="-1"
+ eType="#//XmlSequenceGenerator" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerators" upperBound="-1"
+ eType="#//XmlTableGenerator" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedQueries" upperBound="-1"
+ eType="#//XmlNamedQuery" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedNativeQueries" upperBound="-1"
+ eType="#//XmlNamedNativeQuery" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappings" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadata"
+ eType="#//PersistenceUnitMetadata" changeable="false" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="package" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappingsForXml" abstract="true"
+ interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadataForXml"
+ eType="#//PersistenceUnitMetadataForXml" volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="packageForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTypeMapping" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//ITypeMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="metadataComplete" eType="ecore:EEnum core.ecore#//mappings/DefaultFalseBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentType" lowerBound="1"
+ eType="#//XmlPersistentType" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPersistentType" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IPersistentType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="class" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeMappings" upperBound="-1"
+ eType="#//XmlAttributeMapping" changeable="false" volatile="true" transient="true"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeMappings"
+ upperBound="-1" eType="#//XmlAttributeMapping" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="virtualAttributeMappings"
+ upperBound="-1" eType="#//XmlAttributeMapping" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentAttributes" upperBound="-1"
+ eType="#//XmlPersistentAttribute" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedPersistentAttributes"
+ upperBound="-1" eType="#//XmlPersistentAttribute" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="virtualPersistentAttributes"
+ upperBound="-1" eType="#//XmlPersistentAttribute" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMappedSuperclass" eSuperTypes="#//XmlTypeMapping core.ecore#//mappings/IMappedSuperclass"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntityInternal" eSuperTypes="#//XmlTypeMapping #//XmlEntityForXml #//XmlEntity"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntityForXml" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableForXml" eType="#//XmlTable"
+ volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="discriminatorColumnForXml"
+ eType="#//XmlDiscriminatorColumn" volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntity" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//mappings/IEntity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryTables" upperBound="-1"
+ eType="ecore:EClass core.ecore#//mappings/ISecondaryTable" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedSecondaryTables"
+ upperBound="-1" eType="ecore:EClass core.ecore#//mappings/ISecondaryTable"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultSecondaryTables"
+ upperBound="-1" eType="ecore:EClass core.ecore#//mappings/ISecondaryTable"
+ containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbeddable" eSuperTypes="#//XmlTypeMapping core.ecore#//mappings/IEmbeddable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAttributeMapping" abstract="true"
+ eSuperTypes="core.ecore#//XmlEObject core.ecore#//IAttributeMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentAttribute" lowerBound="1"
+ eType="#//XmlPersistentAttribute" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNullAttributeMapping" eSuperTypes="#//XmlAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlBasic" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IBasic #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlId" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IId #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTransient" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/ITransient"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbedded" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IEmbedded"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbeddedId" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IEmbeddedId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlVersion" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IVersion #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMappingInternal"
+ abstract="true" eSuperTypes="#//XmlRelationshipMapping core.ecore#//mappings/IMultiRelationshipMapping #//XmlMultiRelationshipMappingForXml #//XmlMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMappingForXml" abstract="true"
+ interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinTableForXml" eType="#//XmlJoinTable"
+ volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderByForXml" eType="#//XmlOrderBy"
+ volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOneToMany" eSuperTypes="#//XmlMultiRelationshipMappingInternal core.ecore#//mappings/IOneToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlManyToMany" eSuperTypes="#//XmlMultiRelationshipMappingInternal core.ecore#//mappings/IManyToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPersistentAttribute" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IPersistentAttribute">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadataInternal" eSuperTypes="core.ecore#//XmlEObject #//PersistenceUnitMetadataForXml #//PersistenceUnitMetadata">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataCompleteInternal"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaultsInternal"
+ lowerBound="1" eType="#//PersistenceUnitDefaultsInternal" changeable="false"
+ defaultValueLiteral="" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadata" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataComplete"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaults"
+ eType="#//PersistenceUnitDefaults" changeable="false" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadataForXml" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataCompleteForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaultsForXml"
+ eType="#//PersistenceUnitDefaultsForXml" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaultsInternal" eSuperTypes="core.ecore#//XmlEObject #//PersistenceUnitDefaults #//PersistenceUnitDefaultsForXml">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalogInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessInternal" eType="ecore:EEnum core.ecore#//AccessType"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersistInternal"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaults" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ volatile="true" defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersist" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaultsForXml" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalogForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessForXml" eType="ecore:EEnum core.ecore#//AccessType"
+ volatile="true" defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersistForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlNamedColumn" abstract="true"
+ eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinitionForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlColumn" abstract="true" eSuperTypes="#//AbstractXmlNamedColumn core.ecore#//mappings/IAbstractColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uniqueForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultFalseBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="insertableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="updatableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTableForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlColumn" eSuperTypes="#//AbstractXmlColumn core.ecore#//mappings/IColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lengthForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true" defaultValueLiteral="255"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="precisionForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="scaleForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlJoinColumn" eSuperTypes="#//AbstractXmlColumn core.ecore#//mappings/IJoinColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnNameForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IXmlColumnMapping" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//mappings/IColumnMapping">
+ <eOperations name="makeColumnForXmlNonNull"/>
+ <eOperations name="makeColumnForXmlNull"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="columnForXml" eType="#//XmlColumn"
+ volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlManyToOne" eSuperTypes="#//XmlSingleRelationshipMapping core.ecore#//mappings/IManyToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOneToOne" eSuperTypes="#//XmlSingleRelationshipMapping core.ecore#//mappings/IOneToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSingleRelationshipMapping" abstract="true"
+ eSuperTypes="#//XmlRelationshipMapping core.ecore#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlRelationshipMapping" abstract="true"
+ eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlJoinTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/IJoinTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlTable" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/ITable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalogForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchemaForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOverride" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAttributeOverride" eSuperTypes="#//XmlOverride core.ecore#//mappings/IAttributeOverride #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAssociationOverride" eSuperTypes="#//XmlOverride core.ecore#//mappings/IAssociationOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlDiscriminatorColumn" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IDiscriminatorColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorTypeForXml"
+ eType="ecore:EEnum core.ecore#//mappings/DiscriminatorType" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinitionForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedLengthForXml"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSecondaryTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/ISecondaryTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPrimaryKeyJoinColumn" eSuperTypes="#//AbstractXmlNamedColumn core.ecore#//mappings/IPrimaryKeyJoinColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnNameForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlGeneratedValue" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IGeneratedValue"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlGenerator" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSequenceGenerator" eSuperTypes="#//XmlGenerator core.ecore#//mappings/ISequenceGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTableGenerator" eSuperTypes="#//XmlGenerator core.ecore#//mappings/ITableGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOrderBy" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IOrderBy"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlQuery" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNamedQuery" eSuperTypes="#//AbstractXmlQuery core.ecore#//mappings/INamedQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNamedNativeQuery" eSuperTypes="#//AbstractXmlQuery core.ecore#//mappings/INamedNativeQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlQueryHint" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IQueryHint"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore b/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore
new file mode 100644
index 0000000000..628ffd690f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="persistence"
+ nsURI="persistence.xmi" nsPrefix="org.eclipse.jpt.core.content.persistence">
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceXmlRootContentNode" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistence" eType="#//Persistence"
+ eOpposite="#//Persistence/root"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Persistence" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnits" upperBound="-1"
+ eType="#//PersistenceUnit" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" unique="false"
+ lowerBound="1" eType="#//Version"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="root" ordered="false" unique="false"
+ lowerBound="1" eType="#//PersistenceXmlRootContentNode" resolveProxies="false"
+ eOpposite="#//PersistenceXmlRootContentNode/persistence"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnit" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="provider" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jtaDataSource" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nonJtaDataSource" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mappingFiles" unique="false"
+ upperBound="-1" eType="#//MappingFileRef" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jarFiles" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classes" unique="false"
+ upperBound="-1" eType="#//JavaClassRef" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="excludeUnlistedClasses"
+ unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+ defaultValueLiteral="false" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" eType="#//Properties"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transactionType" unique="false"
+ eType="#//PersistenceUnitTransactionType" defaultValueLiteral="JTA" unsettable="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingFileRef" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaClassRef" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass javaModel.ecore#//JavaClass"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Properties" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+ eType="#//Property" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PersistenceUnitTransactionType">
+ <eLiterals name="JTA"/>
+ <eLiterals name="RESOURCE_LOCAL" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PersistenceUnitTransactionTypeObject"
+ instanceClassName="org.eclipse.emf.common.util.Enumerator"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Version" instanceClassName="java.lang.String"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.properties b/jpa/plugins/org.eclipse.jpt.core/plugin.properties
new file mode 100644
index 0000000000..92b7c44540
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.properties
@@ -0,0 +1,36 @@
+###############################################################################
+# Copyright (c) 2006 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
+###############################################################################
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = Java Persistence API Tools - Core
+providerName = Eclipse.org
+
+JPA_PLATFORM="JPA Platform"
+JPA_PROBLEM_MARKER=JPA Problem Marker
+JPA_FILE_CONTENT=JPA File Content
+
+GENERIC_PLATFORM_LABEL=Generic
+
+JPA_FACET_LABEL=Java Persistence
+JPA_FACET_DESCRIPTION=Adds support for writing persistent meta-data using Java Persistence Architecture.
+JPA_PRESET_LABEL=Utility JPA project with Java 5.0
+JPA_TEMPLATE_LABEL=JPA Project
+JPA_VALIDATOR=JPA Validator
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
new file mode 100644
index 0000000000..31e7a5ebd3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+ <extension-point
+ id="jpaPlatform" name="%JPA_PLATFORM" schema="schema/jpaPlatform.exsd"/>
+
+
+ <extension
+ point="org.eclipse.core.resources.markers"
+ id="jpaProblemMarker"
+ name="%JPA_PROBLEM_MARKER">
+ <persistent value="true"/>
+
+ <!-- Can't use text marker until we have specific models for each input type (XML, java)
+ <super type="org.eclipse.core.resources.textmarker"/>
+ -->
+
+ <super type="org.eclipse.wst.validation.problemmarker"/>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+
+ <factory
+ class="org.eclipse.jpt.core.internal.JpaProjectAdapterFactory"
+ adaptableType="org.eclipse.core.resources.IProject">
+ <adapter type="org.eclipse.jpt.core.internal.IJpaProject"/>
+ </factory>
+
+ <factory
+ class="org.eclipse.jpt.core.internal.JpaProjectAdapterFactory"
+ adaptableType="org.eclipse.jdt.core.IJavaProject">
+ <adapter type="org.eclipse.jpt.core.internal.IJpaProject"/>
+ </factory>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.contentTypes">
+
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
+ file-names="orm.xml"
+ id="org.eclipse.jpt.core.content.orm"
+ name="ORM XML Content"
+ priority="normal">
+ Only allowing file names of orm.xml. Extenders will have to specify a different file name.
+ Limitation with WTP translators for registering files names instead of content types
+ </content-type>
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
+ file-names="persistence.xml"
+ id="org.eclipse.jpt.core.content.persistence"
+ name="Persistence XML Content"
+ priority="normal">
+ Only allowing file names of persistence.xml.
+ </content-type>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+
+ <initializer
+ class="org.eclipse.jpt.core.internal.prefs.JpaPreferenceInitializer"/>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.jpt.core.jpaPlatform">
+
+ <jpaPlatform
+ id="generic"
+ label="%GENERIC_PLATFORM_LABEL"
+ class="org.eclipse.jpt.core.internal.platform.generic.GenericPlatform"/>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.facets">
+
+ <project-facet id="jpt.jpa">
+ <label>%JPA_FACET_LABEL</label>
+ <description>%JPA_FACET_DESCRIPTION</description>
+ </project-facet>
+
+ <project-facet-version facet="jpt.jpa" version="1.0">
+ <constraint>
+ <and>
+ <requires facet="jst.java" version="[5.0"/>
+ <or>
+ <requires facet="jst.utility" version="[1.0"/>
+ <requires facet="jst.appclient" version="[1.2"/>
+ <requires facet="jst.ejb" version="[1.1"/>
+ <requires facet="jst.connector" version="[1.0"/>
+ <requires facet="jst.web" version="[2.2"/>
+ </or>
+ </and>
+ </constraint>
+ </project-facet-version>
+
+ <preset id="jpt.jpa.preset">
+ <label>%JPA_PRESET_LABEL</label>
+ <facet id="jst.java" version="5.0"/>
+ <facet id="jst.utility" version="1.0"/>
+ <facet id="jpt.jpa" version="1.0"/>
+ </preset>
+
+ <template id="jpt.jpa.template">
+ <label>%JPA_TEMPLATE_LABEL</label>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.utility"/>
+ <fixed facet="jpt.jpa"/>
+ <preset id="jpt.jpa.preset"/>
+ </template>
+
+ <action facet="jpt.jpa" type="INSTALL" id="jpt.jpa.install">
+ <config-factory class="org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProvider"/>
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetInstallDelegate"/>
+ </action>
+
+ <action facet="jpt.jpa" type="UNINSTALL" id="jpt.jpa.uninstall">
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetUninstallDelegate"/>
+ </action>
+
+ <event-handler facet="jpt.jpa" type="POST_INSTALL">
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetPostInstallDelegate"/>
+ </event-handler>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.runtimes">
+
+ <supported>
+ <runtime-component any="true"/>
+ <facet id="jpt.jpa"/>
+ </supported>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.validation.validator"
+ id="jpaValidator"
+ name="%JPA_VALIDATOR">
+
+ <validator>
+ <enablement>
+ <and>
+ <test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jpt.jpa"/>
+ </and>
+ </enablement>
+
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="orm.xml"/>
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="persistence.xml"/>
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="*.java"/>
+
+ <run class="org.eclipse.jpt.core.internal.validation.JpaValidator"/>
+ <helper class="org.eclipse.jpt.core.internal.validation.JpaHelper"/>
+
+ <markerId markerIdValue="jpaProblemMarker"/>
+
+
+ <!-- don't know what this does
+ <dependentValidator depValValue="true"/>
+ -->
+
+ </validator>
+
+ </extension>
+
+
+</plugin>
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
new file mode 100644
index 0000000000..8a59a2cb7d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2007 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
+###############################################################################
+
+VALIDATE_PLATFORM_NOT_SPECIFIED=Platform must be specified
+VALIDATE_CONNECTION_NOT_SPECIFIED=Connection must be specified
+VALIDATE_CONNECTION_NOT_CONNECTED=Connection must be active to get data source specific help and validation.
+SYNCHRONIZE_CLASSES_JOB=Synchronizing classes
+SYNCHRONIZING_CLASSES_TASK=Synchronizing classes ...
+INVALID_PERSISTENCE_XML_CONTENT=Invalid persistence.xml content
+ERROR_WRITING_FILE=Could not write to persistence.xml \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
new file mode 100644
index 0000000000..bcec2fa7f6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
@@ -0,0 +1,55 @@
+###############################################################################
+# Copyright (c) 2007 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
+###############################################################################
+
+PROJECT_NO_CONNECTION=No connection specified for project. No data-specific validation will be performed.
+PROJECT_INACTIVE_CONNECTION=Connection \"{0}\" is not active. No validation will be done against the data source.
+PROJECT_NO_PERSISTENCE_XML=No persistence.xml file in project
+PROJECT_MULTIPLE_PERSISTENCE_XML=Multiple persistence.xml files in project
+PERSISTENCE_XML_INVALID_CONTENT=Invalid content (no root node)
+PERSISTENCE_NO_PERSISTENCE_UNIT=No persistence unit defined
+PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS=Multiple persistence units defined
+PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE=Unspecified mapping file
+PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE=Mapping file \"{0}\" cannot be resolved
+PERSISTENCE_UNIT_INVALID_MAPPING_FILE=Mapping file \"{0}\" does not have ORM content
+PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE=Duplicate mapping file \"{0}\"
+PERSISTENCE_UNIT_UNSPECIFIED_CLASS=Unspecified class
+PERSISTENCE_UNIT_NONEXISTENT_CLASS=Class \"{0}\" cannot be resolved
+PERSISTENCE_UNIT_INVALID_CLASS=Class \"{0}\" is not annotated as a persistent class
+PERSISTENCE_UNIT_DUPLICATE_CLASS=Duplicate class \"{0}\"
+ENTITY_MAPPINGS_MULTIPLE_METADATA=Metadata for persistence unit \"{0}\" specified in multiple mapping files
+PERSISTENT_TYPE_UNSPECIFIED_CLASS=Unspecified class
+PERSISTENT_TYPE_UNRESOLVED_CLASS=Class \"{0}\" cannot be resolved
+ENTITY_NO_ID=Entity \"{0}\" has no Id or EmbeddedId
+PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME=Unspecified name
+PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME=Attribute \"{0}\" in class \"{1}\" cannot be resolved
+PERSISTENT_ATTRIBUTE_INVALID_MAPPING=Attribute \"{0}\" has invalid mapping type in this context
+TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for table \"{1}\"
+TABLE_UNRESOLVED_NAME=Table \"{0}\" cannot be resolved
+JOIN_TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for join table \"{1}\"
+VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA=In virtual attribute \"{0}\", schema \"{1}\" cannot be resolved for join table \"{2}\"
+JOIN_TABLE_UNRESOLVED_NAME=Join table \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME=In virtual attribute \"{0}\",, join table \"{1}\" cannot be resolved
+COLUMN_UNRESOLVED_TABLE=Table \"{0}\" for column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE=In virtual attribute \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE=In virtual attribute override \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
+COLUMN_UNRESOLVED_NAME=Column \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME=In virtual attribute override \"{0}\", column \"{1}\" cannot be resolved
+JOIN_COLUMN_UNRESOLVED_TABLE=Table \"{0}\" for join column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE=In virtual attribute \"{0}\", table \"{1}\" for join column \"{2}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE=In virtual association override \"{0}\", table \"{1}\" for join column \"{2}\" cannot be resolved
+JOIN_COLUMN_UNRESOLVED_NAME=Join column \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", join column \"{1}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME=In virtual association override \"{0}\", join column \"{1}\" cannot be resolved
+JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=Referenced column \"{0}\" in join column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", referenced column \"{1}\" in join column \"{2}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=In virtual association override \"{0}\", referenced column \"{1}\" in join column \"{2}\" cannot be resolved
+GENERATED_VALUE_UNRESOLVED_GENERATOR=No generator named \"{0}\" is defined in persistence unit
diff --git a/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd b/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd
new file mode 100644
index 0000000000..dbdb3ec6f5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd
@@ -0,0 +1,122 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jpt.core">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.jpt.core" id="jpaPlatform" name="JPA Platform"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="jpaPlatform" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="jpaPlatform">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+ An translatable string representation of the platform.
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.jpt.core.internal.IJpaPlatform"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java
new file mode 100644
index 0000000000..fd74cc97d5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java
@@ -0,0 +1,237 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AccessType.java,v 1.1 2007/04/25 20:09:35 pfullbright Exp $
+ */
+package org.eclipse.jpt.core.internal;
+
+import static org.eclipse.jpt.core.internal.AccessType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.AccessType.FIELD_VALUE;
+import static org.eclipse.jpt.core.internal.AccessType.PROPERTY_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Access Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @model
+ * @generated
+ */
+public enum AccessType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default"),
+ /**
+ * The '<em><b>PROPERTY</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PROPERTY_VALUE
+ * @generated
+ * @ordered
+ */
+ PROPERTY(1, "PROPERTY", "Property"),
+ /**
+ * The '<em><b>FIELD</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FIELD_VALUE
+ * @generated
+ * @ordered
+ */
+ FIELD(2, "FIELD", "Field");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>PROPERTY</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>PROPERTY</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PROPERTY
+ * @model literal="Property"
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY_VALUE = 1;
+
+ /**
+ * The '<em><b>FIELD</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>FIELD</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIELD
+ * @model literal="Field"
+ * @generated
+ * @ordered
+ */
+ public static final int FIELD_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Access Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final AccessType[] VALUES_ARRAY = new AccessType[] {
+ DEFAULT, PROPERTY, FIELD,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Access Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<AccessType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ AccessType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ AccessType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case PROPERTY_VALUE :
+ return PROPERTY;
+ case FIELD_VALUE :
+ return FIELD;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private AccessType(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+} //AccessType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java
new file mode 100644
index 0000000000..82dc9123c7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAttribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAttributeMapping extends IJpaSourceObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IPersistentAttribute getPersistentAttribute();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ boolean isDefault();
+
+ /**
+ * Return a unique key for the IPersistentAttributeMapping. If this is defined in
+ * an extension they should be equal.
+ */
+ String getKey();
+
+ /**
+ * If the mapping is for a primary key column, return the column's name,
+ * otherwise return null.
+ */
+ String primaryKeyColumnName();
+
+ /**
+ * Return the mapping for the attribute mapping's attribute's type.
+ */
+ ITypeMapping typeMapping();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
new file mode 100644
index 0000000000..e6fdeefa45
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaContentNode extends IJpaSourceObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return a unique identifier for all of this class of content nodes
+ */
+ Object getId();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java
new file mode 100644
index 0000000000..e1ed7f74d9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 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.core.internal;
+
+public interface IJpaCoreConstants
+{
+ /**
+ * Possible configuration option
+ */
+ public static final String JPA_PLATFORM = JpaCorePlugin.PLUGIN_ID + ".platform"; //$NON-NLS-1$
+
+ /**
+ * Possible configuration option
+ */
+ public static final String DATA_SOURCE_CONNECTION_NAME = JpaCorePlugin.PLUGIN_ID + ".dataSource.connectionName"; //$NON-NLS-1$
+
+ /**
+ * Name of META-INF directory
+ */
+ public static final String META_INF = "META-INF";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
new file mode 100644
index 0000000000..889ff5109f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.core.internal;
+
+import org.eclipse.jpt.db.internal.Connection;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Data Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaDataSource extends IJpaEObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" unique="false" required="true" ordered="false"
+ * @generated
+ */
+ String getConnectionProfileName();
+
+ Connection getConnection();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java
new file mode 100644
index 0000000000..ac28dc1c7d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistence Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaEObject extends EObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ IJpaProject getJpaProject();
+
+ /**
+ * Return the resource that most directly contains this object
+ */
+ IResource getResource();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java
new file mode 100644
index 0000000000..842ec08a00
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.core.resources.IFile;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistence File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaFile extends IJpaEObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ IJpaRootContentNode getContent();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ String getContentId();
+
+ /**
+ * Return the IFile associated with this JPA file
+ */
+ IFile getFile();
+
+ /**
+ * Return the content node corresponding to the given offset in the source.
+ * This may (and often will) be <code>null</code>.
+ */
+ IJpaContentNode getContentNode(int offset);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java
new file mode 100644
index 0000000000..846217ebc7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.core.resources.IFile;
+
+/**
+ * A JpaProject corresponds to an IProject and containts of JpaFiles.
+ * A JpaFile corresponds to a file resource in the project and contains
+ * an IJpaRootContentNode. Specify an IJpaFileContentProvider for each
+ * file contentType to be included in the JpaProject.
+ *
+ * See IJpaPlatform
+ *
+ */
+public interface IJpaFileContentProvider
+{
+ /**
+ * Create the IJpaRootContentNode for the given IFile.
+ * This will be set on the corresponding JpaFile in the JpaProject.
+ * The file passed in will have a contentType that matches
+ * the one returned by the contentType() method.
+ */
+ IJpaRootContentNode buildRootContent(IFile file);
+
+ /**
+ * Return the contentType of the file to be included in the JpaProject.
+ * This contentType should correspond to one specified through the
+ * org.eclipse.core.runtime.contentTypes extension point.
+ * @return
+ */
+ String contentType();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java
new file mode 100644
index 0000000000..343ded1f2c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaModel extends EObject
+{
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given IProject
+ * with an IJpaProject.
+ */
+ IJpaProject getJpaProject(IProject project) throws CoreException;
+
+ /**
+ * Returns a (non-modifiable) Iterator on all the IJpaProjects in the model.
+ */
+ Iterator<IJpaProject> jpaProjects();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
new file mode 100644
index 0000000000..41f5632d9b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.platform.IContext;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * This interface is to be implemented by a JPA vendor to provide extensions to
+ * the core JPA model. The core JPA model will provide functinality for JPA
+ * spec annotations in java and the orm.xml mapping file.
+ * The org.eclipse.jpt.core.genericPlatform extension supplies
+ * IJpaFileContentProvider for those file types. As another vendor option you
+ * will have to supply those IJpaFileContentProviders as well or different ones
+ * as necessary.
+ *
+ * See the org.eclipse.jpt.core.jpaPlatform extension point
+ */
+public interface IJpaPlatform
+{
+ /**
+ * Get the ID for this platform
+ */
+ String getId();
+
+ /**
+ * Set the ID for this platform
+ *
+ * *************
+ * * IMPORTANT * For INTERNAL use only!!
+ * *************
+ */
+ void setId(String theId);
+
+ /**
+ * Get the IJpaProject for this platform
+ */
+ IJpaProject getProject();
+
+ /**
+ * Set the IJpaProject on this platform
+ */
+ void setProject(IJpaProject jpaProject);
+
+ /**
+ * Return a collection of IJpaFileContentProviders. These will be used to
+ * determine which files will be read from an IProject based on contentType.
+ * These contentProviders should have unique contentTypes.
+ * @return
+ */
+ Collection<IJpaFileContentProvider> jpaFileContentProviders();
+
+ /**
+ * Build a project context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildProjectContext();
+
+ /**
+ * Build a type context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildJavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping);
+
+ /**
+ * Build an attribute context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildJavaAttributeContext(IContext parentContext, IJavaAttributeMapping attributeMapping);
+
+ /**
+ * Resynchronize intra-model connections given the context hierarchy the
+ * IJpaPlatform built in buildContextHierarchy().
+ * This will be called each time an update to the jpa model occurs. If an
+ * update occurs while the resynch() job is in process, another resynch()
+ * will be started upon completion.
+ * @param contextHierarchy
+ */
+ void resynch(IContext contextHierarchy);
+
+ /**
+ * Adds validation messages to the growing list of messages
+ */
+ void addToMessages(List<IMessage> messages);
+ /**
+ * Returns the IGeneratorRepository for the persistence unit of the
+ * given IPersistentType. A NullGeneratorRepository should be returned
+ * if the IPersistentType is not part of a persistence unit
+ * @param persistentType
+ * @return
+ */
+ // IGeneratorRepository generatorRepository(IPersistentType persistentType);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
new file mode 100644
index 0000000000..cb8490c3c5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Project</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaProject extends IJpaEObject
+{
+ /**
+ * Return the IProject associated with this JPA project
+ */
+ IProject getProject();
+
+ /**
+ * Return the IJavaProject associated with the JPA project
+ */
+ IJavaProject getJavaProject();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaModel getModel();
+
+ IJpaPlatform getPlatform();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model platformIdRequired="true" platformIdOrdered="false"
+ * @generated
+ */
+ void setPlatform(String platformId);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaDataSource getDataSource();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model connectionProfileNameUnique="false" connectionProfileNameRequired="true" connectionProfileNameOrdered="false"
+ * @generated
+ */
+ void setDataSource(String connectionProfileName);
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile.
+ * Returns <code>null</code> if unable to associate the given IFile
+ * with an IJpaFile.
+ */
+ IJpaFile getJpaFile(IFile file) throws CoreException;
+
+ /**
+ * Return a Collection of IJpaFiles for the given contentType.
+ * The contentType should match that given in the IJpaFileContentProvider
+ */
+ Collection<IJpaFile> jpaFiles(String contentType);
+
+ /**
+ * Returns a (non-modifiable) Iterator on all the IJpaFiles in the project.
+ */
+ Iterator<IJpaFile> jpaFiles();
+
+ /**
+ * Return a JavaPersistentType for the IType, if it exists, null otherwise.
+ */
+ JavaPersistentType findJavaPersistentType(IType type);
+
+ /**
+ * Reconnect the model together, recalculating default values as needed
+ */
+ void resynch();
+
+ /**
+ * Returns all the validation messages for this project
+ */
+ Iterator<IMessage> validationMessages();
+
+ ConnectionProfile connectionProfile();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java
new file mode 100644
index 0000000000..763e65e7ca
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.jdt.core.ElementChangedEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Root Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaRootContentNode extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Jpa File</b></em>' container reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Jpa File</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jpa File</em>' container reference.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode_JpaFile()
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent
+ * @model opposite="content" changeable="false"
+ * @generated
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return the content node corresponding to the given offset in the source.
+ * This may (and often will) be <code>null</code>.
+ */
+ IJpaContentNode getContentNode(int offset);
+
+ /**
+ * Handle java change as befits this file content
+ */
+ void handleJavaElementChangedEvent(ElementChangedEvent event);
+
+ /**
+ * Dispose before removed from model
+ */
+ void dispose();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java
new file mode 100644
index 0000000000..4cb58e7ee8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.core.internal;
+
+/**
+ * A JPA object that can be mapped to a source location, contained within a
+ * JPA file.
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaSourceObject extends IJpaEObject
+{
+ /**
+ * Return the JPA file containing this object.
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return the source location for this object.
+ */
+ ITextRange getTextRange();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java
new file mode 100644
index 0000000000..f219fb0a6e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+public interface IMappingKeys
+{
+ String ENTITY_TYPE_MAPPING_KEY = "entity";
+ String MAPPED_SUPERCLASS_TYPE_MAPPING_KEY = "mappedSuperclass";
+ String EMBEDDABLE_TYPE_MAPPING_KEY = "embeddable";
+ String NULL_TYPE_MAPPING_KEY = null;
+
+ String BASIC_ATTRIBUTE_MAPPING_KEY = "basic";
+ String ID_ATTRIBUTE_MAPPING_KEY = "id";
+ String MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY = "manyToMany";
+ String MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY = "manyToOne";
+ String ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY = "oneToOne";
+ String ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY = "oneToMany";
+ String EMBEDDED_ATTRIBUTE_MAPPING_KEY = "embedded";
+ String EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY = "embeddedId";
+ String TRANSIENT_ATTRIBUTE_MAPPING_KEY = "transient";
+ String VERSION_ATTRIBUTE_MAPPING_KEY = "version";
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
new file mode 100644
index 0000000000..39bfb346f1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistent Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey <em>Mapping Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IPersistentAttribute extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute_MappingKey()
+ * @model required="true" changeable="false"
+ * @generated
+ */
+ String getMappingKey();
+
+ void setMappingKey(String value, boolean default_);
+
+ /**
+ * Returns an iterator on all mapping keys that are available for this attribute.
+ */
+ Iterator candidateMappingKeys();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IAttributeMapping getMapping();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true"
+ * @generated
+ */
+ ITypeMapping typeMapping();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Return the java Attribute that this IPersistentAttribute is associated with
+ * @return
+ */
+ Attribute getAttribute();
+
+ String defaultKey();
+
+ /**
+ * If the attribute is mapped to a primary key column, return the
+ * column's name, otherwise return null.
+ */
+ String primaryKeyColumnName();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java
new file mode 100644
index 0000000000..324f0c79b6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistent Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IPersistentType extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see #setMappingKey(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType_MappingKey()
+ * @model required="true"
+ * @generated
+ */
+ String getMappingKey();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping Key</em>' attribute.
+ * @see #getMappingKey()
+ * @generated
+ */
+ void setMappingKey(String value);
+
+ /**
+ * Returns an iterator on all mapping keys that are available for this type.
+ */
+ Iterator<String> candidateMappingKeys();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ ITypeMapping getMapping();
+
+ /**
+ * Return the parent IPersistentType from the inheritance hierarchy.
+ * If the java inheritance parent is not a IPersistentType then continue
+ * up the hierarchy. Return null if this persistentType is the root
+ * persistent type.
+ * @model
+ * @generated
+ */
+ IPersistentType parentPersistentType();
+
+ /**
+ * Return a read-only iterator of the contained IPersistentAttributes
+ * @return
+ */
+ Iterator<IPersistentAttribute> attributes();
+
+ /**
+ * Return a read-only iterator of the all the IPersistentAttributes
+ * in the hierarchy
+ * @return
+ */
+ Iterator<IPersistentAttribute> allAttributes();
+
+ Iterator<IPersistentType> inheritanceHierarchy();
+
+ /**
+ * Return the corresponding JDT IType, if it resolves to a single IType
+ */
+ IType findJdtType();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java
new file mode 100644
index 0000000000..9636f5078f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 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.core.internal;
+
+/**
+ * A text range defines the offset into and length of a piece of text
+ * <p>
+ * This interface is not intended to be implemented by clients.
+ * </p>
+ */
+public interface ITextRange
+{
+
+ /**
+ * Returns the length of the text.
+ *
+ * @return the length of the text
+ */
+ int getLength();
+
+ /**
+ * Returns the offset of the text.
+ *
+ * @return the offset of the text
+ */
+ int getOffset();
+
+ /**
+ * Retruns the line number in the text
+ *
+ * @return line number
+ */
+ int getLineNumber();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java
new file mode 100644
index 0000000000..8329aac842
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>I Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.ITypeMapping#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.ITypeMapping#getTableName <em>Table Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ITypeMapping extends IJpaSourceObject
+{
+ /**
+ * Return a unique key for the ITypeMapping. If this is defined in
+ * an extension they should be equal.
+ * @return
+ */
+ String getKey();
+
+ IPersistentType getPersistentType();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getTableName();
+
+ /**
+ * Return the type mapping's "associated" tables, which includes the
+ * primary table and the collection of secondary tables.
+ */
+ Iterator<ITable> associatedTables();
+
+ /**
+ * Return the type mapping's "associated" tables, which includes the
+ * primary table and the collection of secondary tables, as well as all
+ * inherited "associated" tables.
+ */
+ Iterator<ITable> associatedTablesIncludingInherited();
+
+ /**
+ * Return the names of the type mapping's "associated" tables,
+ * which includes the primary table and the collection of secondary
+ * tables, as well as the names of all the inherited "associated" tables.
+ */
+ Iterator<String> associatedTableNamesIncludingInherited();
+
+ /**
+ * return the resolved primary db table
+ */
+ Table primaryDbTable();
+
+ /**
+ * return the resolved associated db table with the passed in name
+ */
+ Table dbTable(String tableName);
+
+ /**
+ * Return whether the specified table is invalid for any annotations
+ * associated with the type mapping.
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * Return an Iterator of attribute names. The attributes must be BasicMappings or IdMappings
+ * found in any MappedSuperclass in the inheritance hierarchy
+ */
+ Iterator<String> overridableAttributeNames();
+
+ /**
+ * Return an Iterator of attribute names. The attributes must be OneToOneMappings or ManyToOneMappings
+ * found in any MappedSuperclass in the inheritance hierarchy
+ */
+ Iterator<String> overridableAssociationNames();
+
+ /**
+ * Return whether the given attribute mapping key is valid for this particular
+ * type mapping
+ * (for example, id's are not valid for an embeddable type mapping)
+ */
+ boolean attributeMappingKeyAllowed(String attributeMappingKey);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java
new file mode 100644
index 0000000000..9e10d438d8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IXml EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IXmlEObject extends IJpaEObject, IJpaSourceObject
+{
+ boolean isAllFeaturesUnset();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java
new file mode 100644
index 0000000000..38235cd132
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage
+ * @generated
+ */
+public class JpaCoreFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCoreFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JpaCoreFactory init() {
+ try {
+ JpaCoreFactory theJpaCoreFactory = (JpaCoreFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.core.xmi");
+ if (theJpaCoreFactory != null) {
+ return theJpaCoreFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JpaCoreFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case JpaCorePackage.JPA_MODEL :
+ return createJpaModel();
+ case JpaCorePackage.JPA_PROJECT :
+ return createJpaProject();
+ case JpaCorePackage.JPA_DATA_SOURCE :
+ return createJpaDataSource();
+ case JpaCorePackage.JPA_FILE :
+ return createJpaFile();
+ case JpaCorePackage.NULL_TYPE_MAPPING :
+ return createNullTypeMapping();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCorePackage.ACCESS_TYPE :
+ return createAccessTypeFromString(eDataType, initialValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCorePackage.ACCESS_TYPE :
+ return convertAccessTypeToString(eDataType, instanceValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaModel createJpaModel() {
+ JpaModel jpaModel = new JpaModel();
+ return jpaModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaProject createJpaProject() {
+ JpaProject jpaProject = new JpaProject();
+ return jpaProject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaDataSource createJpaDataSource() {
+ JpaDataSource jpaDataSource = new JpaDataSource();
+ return jpaDataSource;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaFile createJpaFile() {
+ JpaFile jpaFile = new JpaFile();
+ return jpaFile;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullTypeMapping createNullTypeMapping() {
+ NullTypeMapping nullTypeMapping = new NullTypeMapping();
+ return nullTypeMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AccessType createAccessTypeFromString(EDataType eDataType, String initialValue) {
+ AccessType result = AccessType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertAccessTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCorePackage getJpaCorePackage() {
+ return (JpaCorePackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static JpaCorePackage getPackage() {
+ return JpaCorePackage.eINSTANCE;
+ }
+} //JpaCoreFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java
new file mode 100644
index 0000000000..c003a6c600
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class JpaCoreMessages extends NLS
+{
+ private static final String BUNDLE_NAME = "jpa_core"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, JpaCoreMessages.class);
+ }
+
+ public static String VALIDATE_PLATFORM_NOT_SPECIFIED;
+
+ public static String VALIDATE_CONNECTION_NOT_SPECIFIED;
+
+ public static String VALIDATE_CONNECTION_NOT_CONNECTED;
+
+ public static String SYNCHRONIZE_CLASSES_JOB;
+
+ public static String SYNCHRONIZING_CLASSES_TASK;
+
+ public static String INVALID_PERSISTENCE_XML_CONTENT;
+
+ public static String ERROR_WRITING_FILE;
+
+
+ private JpaCoreMessages() {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java
new file mode 100644
index 0000000000..32aa468216
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java
@@ -0,0 +1,1783 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaCoreFactory
+ * @model kind="package"
+ * @generated
+ */
+public class JpaCorePackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "internal";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.core.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "jpt.core";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCorePackage eINSTANCE = org.eclipse.jpt.core.internal.JpaCorePackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @generated
+ */
+ public static final int IJPA_MODEL = 0;
+
+ /**
+ * The number of structural features of the '<em>IJpa Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_MODEL_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @generated
+ */
+ public static final int IJPA_EOBJECT = 2;
+
+ /**
+ * The number of structural features of the '<em>IJpa EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_EOBJECT_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @generated
+ */
+ public static final int JPA_EOBJECT = 3;
+
+ /**
+ * The number of structural features of the '<em>Jpa EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_EOBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @generated
+ */
+ public static final int JPA_MODEL = 1;
+
+ /**
+ * The feature id for the '<em><b>Projects</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_MODEL__PROJECTS = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Jpa Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_MODEL_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @generated
+ */
+ public static final int XML_EOBJECT = 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @generated
+ */
+ public static final int IJPA_PROJECT = 4;
+
+ /**
+ * The number of structural features of the '<em>IJpa Project</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_PROJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @generated
+ */
+ public static final int JPA_PROJECT = 5;
+
+ /**
+ * The feature id for the '<em><b>Platform</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__PLATFORM = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Data Source</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__DATA_SOURCE = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Files</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__FILES = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Jpa Project</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaPlatform()
+ * @generated
+ */
+ public static final int IJPA_PLATFORM = 6;
+
+ /**
+ * The number of structural features of the '<em>IJpa Platform</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_PLATFORM_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @generated
+ */
+ public static final int IJPA_DATA_SOURCE = 7;
+
+ /**
+ * The number of structural features of the '<em>IJpa Data Source</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_DATA_SOURCE_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @generated
+ */
+ public static final int JPA_DATA_SOURCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Connection Profile Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Jpa Data Source</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_DATA_SOURCE_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @generated
+ */
+ public static final int IJPA_FILE = 9;
+
+ /**
+ * The number of structural features of the '<em>IJpa File</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_FILE_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @generated
+ */
+ public static final int JPA_FILE = 10;
+
+ /**
+ * The feature id for the '<em><b>Content Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE__CONTENT_ID = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE__CONTENT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Jpa File</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @generated
+ */
+ public static final int IJPA_SOURCE_OBJECT = 11;
+
+ /**
+ * The number of structural features of the '<em>IJpa Source Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_SOURCE_OBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @generated
+ */
+ public static final int IXML_EOBJECT = 12;
+
+ /**
+ * The number of structural features of the '<em>IXml EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IXML_EOBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Xml EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EOBJECT_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @generated
+ */
+ public static final int IJPA_CONTENT_NODE = 14;
+
+ /**
+ * The number of structural features of the '<em>IJpa Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_CONTENT_NODE_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @generated
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE = 15;
+
+ /**
+ * The feature id for the '<em><b>Jpa File</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE__JPA_FILE = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IJpa Root Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @generated
+ */
+ public static final int IPERSISTENT_TYPE = 16;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_TYPE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IPersistent Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_TYPE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @generated
+ */
+ public static final int ITYPE_MAPPING = 17;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING__NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING__TABLE_NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IType Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @generated
+ */
+ public static final int NULL_TYPE_MAPPING = 18;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING__NAME = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING__TABLE_NAME = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Null Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @generated
+ */
+ public static final int IPERSISTENT_ATTRIBUTE = 19;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_ATTRIBUTE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IPersistent Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_ATTRIBUTE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @generated
+ */
+ public static final int IATTRIBUTE_MAPPING = 20;
+
+ /**
+ * The number of structural features of the '<em>IAttribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IATTRIBUTE_MAPPING_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @generated
+ */
+ public static final int ACCESS_TYPE = 21;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaProjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaProjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaPlatformEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaDataSourceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaDataSourceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaFileEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaFileEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaSourceObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iXmlEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaRootContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iPersistentTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iPersistentAttributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum accessTypeEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JpaCorePackage() {
+ super(eNS_URI, JpaCoreFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JpaCorePackage init() {
+ if (isInited)
+ return (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ // Obtain or create and register package
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JpaCorePackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theJpaCorePackage.freeze();
+ return theJpaCorePackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Model</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @generated
+ */
+ public EClass getIJpaModel() {
+ return iJpaModelEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Model</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @generated
+ */
+ public EClass getJpaModel() {
+ return jpaModelEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.JpaModel#getProjects <em>Projects</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Projects</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaModel#getProjects()
+ * @see #getJpaModel()
+ * @generated
+ */
+ public EReference getJpaModel_Projects() {
+ return (EReference) jpaModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public EClass getIJpaEObject() {
+ return iJpaEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public EClass getJpaEObject() {
+ return jpaEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @generated
+ */
+ public EClass getXmlEObject() {
+ return xmlEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Project</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @generated
+ */
+ public EClass getIJpaProject() {
+ return iJpaProjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Project</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @generated
+ */
+ public EClass getJpaProject() {
+ return jpaProjectEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Platform</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getPlatform()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_Platform() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getDataSource()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_DataSource() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.JpaProject#getFiles <em>Files</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Files</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getFiles()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_Files() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Platform</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @generated
+ */
+ public EClass getIJpaPlatform() {
+ return iJpaPlatformEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @generated
+ */
+ public EClass getIJpaDataSource() {
+ return iJpaDataSourceEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @generated
+ */
+ public EClass getJpaDataSource() {
+ return jpaDataSourceEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Connection Profile Name</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName()
+ * @see #getJpaDataSource()
+ * @generated
+ */
+ public EAttribute getJpaDataSource_ConnectionProfileName() {
+ return (EAttribute) jpaDataSourceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @generated
+ */
+ public EClass getIJpaFile() {
+ return iJpaFileEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @generated
+ */
+ public EClass getJpaFile() {
+ return jpaFileEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Content Id</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContentId()
+ * @see #getJpaFile()
+ * @generated
+ */
+ public EAttribute getJpaFile_ContentId() {
+ return (EAttribute) jpaFileEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent()
+ * @see #getJpaFile()
+ * @generated
+ */
+ public EReference getJpaFile_Content() {
+ return (EReference) jpaFileEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Source Object</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public EClass getIJpaSourceObject() {
+ return iJpaSourceObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IXml EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @generated
+ */
+ public EClass getIXmlEObject() {
+ return iXmlEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public EClass getIJpaContentNode() {
+ return iJpaContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Root Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public EClass getIJpaRootContentNode() {
+ return iJpaRootContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Jpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile()
+ * @see #getIJpaRootContentNode()
+ * @generated
+ */
+ public EReference getIJpaRootContentNode_JpaFile() {
+ return (EReference) iJpaRootContentNodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IPersistent Type</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @generated
+ */
+ public EClass getIPersistentType() {
+ return iPersistentTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mapping Key</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentType#getMappingKey()
+ * @see #getIPersistentType()
+ * @generated
+ */
+ public EAttribute getIPersistentType_MappingKey() {
+ return (EAttribute) iPersistentTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IType Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public EClass getITypeMapping() {
+ return iTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.ITypeMapping#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping#getName()
+ * @see #getITypeMapping()
+ * @generated
+ */
+ public EAttribute getITypeMapping_Name() {
+ return (EAttribute) iTypeMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.ITypeMapping#getTableName <em>Table Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Table Name</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping#getTableName()
+ * @see #getITypeMapping()
+ * @generated
+ */
+ public EAttribute getITypeMapping_TableName() {
+ return (EAttribute) iTypeMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @generated
+ */
+ public EClass getNullTypeMapping() {
+ return nullTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IPersistent Attribute</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @generated
+ */
+ public EClass getIPersistentAttribute() {
+ return iPersistentAttributeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey <em>Mapping Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mapping Key</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey()
+ * @see #getIPersistentAttribute()
+ * @generated
+ */
+ public EAttribute getIPersistentAttribute_MappingKey() {
+ return (EAttribute) iPersistentAttributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAttribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public EClass getIAttributeMapping() {
+ return iAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Access Type</em>'.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @generated
+ */
+ public EEnum getAccessType() {
+ return accessTypeEEnum;
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public JpaCoreFactory getJpaCoreFactory() {
+ return (JpaCoreFactory) getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+ // Create classes and their features
+ iJpaModelEClass = createEClass(IJPA_MODEL);
+ jpaModelEClass = createEClass(JPA_MODEL);
+ createEReference(jpaModelEClass, JPA_MODEL__PROJECTS);
+ iJpaEObjectEClass = createEClass(IJPA_EOBJECT);
+ jpaEObjectEClass = createEClass(JPA_EOBJECT);
+ iJpaProjectEClass = createEClass(IJPA_PROJECT);
+ jpaProjectEClass = createEClass(JPA_PROJECT);
+ createEReference(jpaProjectEClass, JPA_PROJECT__PLATFORM);
+ createEReference(jpaProjectEClass, JPA_PROJECT__DATA_SOURCE);
+ createEReference(jpaProjectEClass, JPA_PROJECT__FILES);
+ iJpaPlatformEClass = createEClass(IJPA_PLATFORM);
+ iJpaDataSourceEClass = createEClass(IJPA_DATA_SOURCE);
+ jpaDataSourceEClass = createEClass(JPA_DATA_SOURCE);
+ createEAttribute(jpaDataSourceEClass, JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME);
+ iJpaFileEClass = createEClass(IJPA_FILE);
+ jpaFileEClass = createEClass(JPA_FILE);
+ createEAttribute(jpaFileEClass, JPA_FILE__CONTENT_ID);
+ createEReference(jpaFileEClass, JPA_FILE__CONTENT);
+ iJpaSourceObjectEClass = createEClass(IJPA_SOURCE_OBJECT);
+ iXmlEObjectEClass = createEClass(IXML_EOBJECT);
+ xmlEObjectEClass = createEClass(XML_EOBJECT);
+ iJpaContentNodeEClass = createEClass(IJPA_CONTENT_NODE);
+ iJpaRootContentNodeEClass = createEClass(IJPA_ROOT_CONTENT_NODE);
+ createEReference(iJpaRootContentNodeEClass, IJPA_ROOT_CONTENT_NODE__JPA_FILE);
+ iPersistentTypeEClass = createEClass(IPERSISTENT_TYPE);
+ createEAttribute(iPersistentTypeEClass, IPERSISTENT_TYPE__MAPPING_KEY);
+ iTypeMappingEClass = createEClass(ITYPE_MAPPING);
+ createEAttribute(iTypeMappingEClass, ITYPE_MAPPING__NAME);
+ createEAttribute(iTypeMappingEClass, ITYPE_MAPPING__TABLE_NAME);
+ nullTypeMappingEClass = createEClass(NULL_TYPE_MAPPING);
+ iPersistentAttributeEClass = createEClass(IPERSISTENT_ATTRIBUTE);
+ createEAttribute(iPersistentAttributeEClass, IPERSISTENT_ATTRIBUTE__MAPPING_KEY);
+ iAttributeMappingEClass = createEClass(IATTRIBUTE_MAPPING);
+ // Create enums
+ accessTypeEEnum = createEEnum(ACCESS_TYPE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+ // Obtain other dependent packages
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ // Add subpackages
+ getESubpackages().add(theJpaCoreMappingsPackage);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ jpaModelEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaModelEClass.getESuperTypes().add(this.getIJpaModel());
+ jpaEObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iJpaProjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaProjectEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaProjectEClass.getESuperTypes().add(this.getIJpaProject());
+ iJpaDataSourceEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaDataSourceEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaDataSourceEClass.getESuperTypes().add(this.getIJpaDataSource());
+ iJpaFileEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaFileEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaFileEClass.getESuperTypes().add(this.getIJpaFile());
+ iJpaSourceObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iXmlEObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iXmlEObjectEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ xmlEObjectEClass.getESuperTypes().add(this.getJpaEObject());
+ xmlEObjectEClass.getESuperTypes().add(this.getIXmlEObject());
+ iJpaContentNodeEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ iJpaRootContentNodeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iPersistentTypeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iTypeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ nullTypeMappingEClass.getESuperTypes().add(this.getJpaEObject());
+ nullTypeMappingEClass.getESuperTypes().add(this.getITypeMapping());
+ nullTypeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ iPersistentAttributeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iAttributeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ // Initialize classes and features; add operations and parameters
+ initEClass(iJpaModelEClass, IJpaModel.class, "IJpaModel", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(jpaModelEClass, JpaModel.class, "JpaModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJpaModel_Projects(), this.getIJpaProject(), null, "projects", null, 0, -1, JpaModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaEObjectEClass, IJpaEObject.class, "IJpaEObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaEObjectEClass, this.getIJpaProject(), "getJpaProject", 0, 1);
+ initEClass(jpaEObjectEClass, JpaEObject.class, "JpaEObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaProjectEClass, IJpaProject.class, "IJpaProject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaProjectEClass, this.getIJpaModel(), "getModel", 1, 1);
+ addEOperation(iJpaProjectEClass, this.getIJpaPlatform(), "getPlatform", 1, 1);
+ EOperation op = addEOperation(iJpaProjectEClass, null, "setPlatform");
+ addEParameter(op, theEcorePackage.getEString(), "platformId", 1, 1);
+ addEOperation(iJpaProjectEClass, this.getIJpaDataSource(), "getDataSource", 1, 1);
+ op = addEOperation(iJpaProjectEClass, null, "setDataSource");
+ addEParameter(op, theEcorePackage.getEString(), "connectionProfileName", 1, 1);
+ initEClass(jpaProjectEClass, JpaProject.class, "JpaProject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJpaProject_Platform(), this.getIJpaPlatform(), null, "platform", null, 1, 1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getJpaProject_DataSource(), this.getIJpaDataSource(), null, "dataSource", null, 0, 1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getJpaProject_Files(), this.getIJpaFile(), null, "files", null, 0, -1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaPlatformEClass, IJpaPlatform.class, "IJpaPlatform", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaDataSourceEClass, IJpaDataSource.class, "IJpaDataSource", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaDataSourceEClass, theEcorePackage.getEString(), "getConnectionProfileName", 1, 1);
+ initEClass(jpaDataSourceEClass, JpaDataSource.class, "JpaDataSource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJpaDataSource_ConnectionProfileName(), ecorePackage.getEString(), "connectionProfileName", null, 1, 1, JpaDataSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(iJpaFileEClass, IJpaFile.class, "IJpaFile", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaFileEClass, ecorePackage.getEString(), "getContentId", 1, 1);
+ addEOperation(iJpaFileEClass, this.getIJpaRootContentNode(), "getContent", 0, 1);
+ initEClass(jpaFileEClass, JpaFile.class, "JpaFile", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJpaFile_ContentId(), ecorePackage.getEString(), "contentId", null, 1, 1, JpaFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJpaFile_Content(), this.getIJpaRootContentNode(), this.getIJpaRootContentNode_JpaFile(), "content", null, 0, 1, JpaFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaSourceObjectEClass, IJpaSourceObject.class, "IJpaSourceObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaSourceObjectEClass, this.getIJpaFile(), "getJpaFile", 0, 1);
+ initEClass(iXmlEObjectEClass, IXmlEObject.class, "IXmlEObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEObjectEClass, XmlEObject.class, "XmlEObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaContentNodeEClass, IJpaContentNode.class, "IJpaContentNode", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaContentNodeEClass, this.getIJpaFile(), "getJpaFile", 1, 1);
+ initEClass(iJpaRootContentNodeEClass, IJpaRootContentNode.class, "IJpaRootContentNode", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIJpaRootContentNode_JpaFile(), this.getIJpaFile(), this.getJpaFile_Content(), "jpaFile", "", 0, 1, IJpaRootContentNode.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iPersistentTypeEClass, IPersistentType.class, "IPersistentType", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIPersistentType_MappingKey(), ecorePackage.getEString(), "mappingKey", null, 1, 1, IPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iPersistentTypeEClass, this.getITypeMapping(), "getMapping", 1, 1);
+ addEOperation(iPersistentTypeEClass, this.getIPersistentType(), "parentPersistentType", 0, 1);
+ initEClass(iTypeMappingEClass, ITypeMapping.class, "ITypeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getITypeMapping_Name(), ecorePackage.getEString(), "name", null, 0, 1, ITypeMapping.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITypeMapping_TableName(), ecorePackage.getEString(), "tableName", null, 0, 1, ITypeMapping.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ addEOperation(iTypeMappingEClass, this.getIPersistentType(), "getPersistentType", 1, 1);
+ initEClass(nullTypeMappingEClass, NullTypeMapping.class, "NullTypeMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iPersistentAttributeEClass, IPersistentAttribute.class, "IPersistentAttribute", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIPersistentAttribute_MappingKey(), ecorePackage.getEString(), "mappingKey", null, 1, 1, IPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iPersistentAttributeEClass, this.getIAttributeMapping(), "getMapping", 1, 1);
+ addEOperation(iPersistentAttributeEClass, this.getITypeMapping(), "typeMapping", 1, 1);
+ addEOperation(iPersistentAttributeEClass, theEcorePackage.getEString(), "getName", 0, 1);
+ initEClass(iAttributeMappingEClass, IAttributeMapping.class, "IAttributeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iAttributeMappingEClass, this.getIPersistentAttribute(), "getPersistentAttribute", 1, 1);
+ addEOperation(iAttributeMappingEClass, theEcorePackage.getEBoolean(), "isDefault", 0, 1);
+ // Initialize enums and add enum literals
+ initEEnum(accessTypeEEnum, AccessType.class, "AccessType");
+ addEEnumLiteral(accessTypeEEnum, AccessType.DEFAULT);
+ addEEnumLiteral(accessTypeEEnum, AccessType.PROPERTY);
+ addEEnumLiteral(accessTypeEEnum, AccessType.FIELD);
+ // Create resource
+ createResource(eNS_URI);
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @generated
+ */
+ public static final EClass IJPA_MODEL = eINSTANCE.getIJpaModel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @generated
+ */
+ public static final EClass JPA_MODEL = eINSTANCE.getJpaModel();
+
+ /**
+ * The meta object literal for the '<em><b>Projects</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_MODEL__PROJECTS = eINSTANCE.getJpaModel_Projects();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @generated
+ */
+ public static final EClass IJPA_EOBJECT = eINSTANCE.getIJpaEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @generated
+ */
+ public static final EClass JPA_EOBJECT = eINSTANCE.getJpaEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @generated
+ */
+ public static final EClass XML_EOBJECT = eINSTANCE.getXmlEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @generated
+ */
+ public static final EClass IJPA_PROJECT = eINSTANCE.getIJpaProject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @generated
+ */
+ public static final EClass JPA_PROJECT = eINSTANCE.getJpaProject();
+
+ /**
+ * The meta object literal for the '<em><b>Platform</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__PLATFORM = eINSTANCE.getJpaProject_Platform();
+
+ /**
+ * The meta object literal for the '<em><b>Data Source</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__DATA_SOURCE = eINSTANCE.getJpaProject_DataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Files</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__FILES = eINSTANCE.getJpaProject_Files();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaPlatform()
+ * @generated
+ */
+ public static final EClass IJPA_PLATFORM = eINSTANCE.getIJpaPlatform();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @generated
+ */
+ public static final EClass IJPA_DATA_SOURCE = eINSTANCE.getIJpaDataSource();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @generated
+ */
+ public static final EClass JPA_DATA_SOURCE = eINSTANCE.getJpaDataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Connection Profile Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME = eINSTANCE.getJpaDataSource_ConnectionProfileName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @generated
+ */
+ public static final EClass IJPA_FILE = eINSTANCE.getIJpaFile();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @generated
+ */
+ public static final EClass JPA_FILE = eINSTANCE.getJpaFile();
+
+ /**
+ * The meta object literal for the '<em><b>Content Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JPA_FILE__CONTENT_ID = eINSTANCE.getJpaFile_ContentId();
+
+ /**
+ * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_FILE__CONTENT = eINSTANCE.getJpaFile_Content();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @generated
+ */
+ public static final EClass IJPA_SOURCE_OBJECT = eINSTANCE.getIJpaSourceObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @generated
+ */
+ public static final EClass IXML_EOBJECT = eINSTANCE.getIXmlEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @generated
+ */
+ public static final EClass IJPA_CONTENT_NODE = eINSTANCE.getIJpaContentNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @generated
+ */
+ public static final EClass IJPA_ROOT_CONTENT_NODE = eINSTANCE.getIJpaRootContentNode();
+
+ /**
+ * The meta object literal for the '<em><b>Jpa File</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJPA_ROOT_CONTENT_NODE__JPA_FILE = eINSTANCE.getIJpaRootContentNode_JpaFile();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @generated
+ */
+ public static final EClass IPERSISTENT_TYPE = eINSTANCE.getIPersistentType();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IPERSISTENT_TYPE__MAPPING_KEY = eINSTANCE.getIPersistentType_MappingKey();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @generated
+ */
+ public static final EClass ITYPE_MAPPING = eINSTANCE.getITypeMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITYPE_MAPPING__NAME = eINSTANCE.getITypeMapping_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Table Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITYPE_MAPPING__TABLE_NAME = eINSTANCE.getITypeMapping_TableName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @generated
+ */
+ public static final EClass NULL_TYPE_MAPPING = eINSTANCE.getNullTypeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @generated
+ */
+ public static final EClass IPERSISTENT_ATTRIBUTE = eINSTANCE.getIPersistentAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IPERSISTENT_ATTRIBUTE__MAPPING_KEY = eINSTANCE.getIPersistentAttribute_MappingKey();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @generated
+ */
+ public static final EClass IATTRIBUTE_MAPPING = eINSTANCE.getIAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @generated
+ */
+ public static final EEnum ACCESS_TYPE = eINSTANCE.getAccessType();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java
new file mode 100644
index 0000000000..4613850c82
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jpt.core.internal.content.orm.OrmInit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceInit;
+import org.osgi.framework.BundleContext;
+
+public class JpaCorePlugin extends Plugin
+{
+ private static JpaCorePlugin INSTANCE;
+
+ /**
+ * The plug-in identifier of the persistence support
+ * (value <code>"org.eclipse.jpt.core"</code>).
+ */
+ public final static String PLUGIN_ID = "org.eclipse.jpt.core"; //$NON-NLS-1$
+
+ /**
+ * The identifier for the JPA facet
+ * (value <code>"jpt.jpa"</code>).
+ */
+ public final static String FACET_ID = "jpt.jpa"; //$NON-NLS-1$
+
+ /**
+ * Value of the content-type for orm.xml mappings files. Use this value to retrieve
+ * the ORM xml content type from the content type manager, and to add new
+ * orm.xml-like extensions to this content type.
+ *
+ * @see org.eclipse.core.runtime.content.IContentTypeManager#getContentType(String)
+ */
+ public static final String ORM_XML_CONTENT_TYPE = PLUGIN_ID + ".content.orm"; //$NON-NLS-1$
+
+ public static final String PERSISTENCE_XML_CONTENT_TYPE = PLUGIN_ID + ".content.persistence"; //$NON-NLS-1$
+
+ public static final String JAVA_CONTENT_TYPE = JavaCore.JAVA_SOURCE_CONTENT_TYPE;
+
+ /**
+ * Returns the singular IJpaModel corresponding to the current workspace.
+ *
+ * @return the singular IJpaModel corresponding to the current workspace.
+ */
+ public static IJpaModel getJpaModel() {
+ return JpaModelManager.instance().getJpaModel();
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject,
+ * or <code>null</code> if unable to associate the given project with an
+ * IJpaProject.
+ *
+ * @param project the given project
+ * @return the IJpaProject corresponding to the given project,
+ * or <code>null</code> if unable to associate the given project with an
+ * IJpaProject
+ */
+ public static IJpaProject getJpaProject(IProject project) {
+ return JpaModelManager.instance().getJpaProject(project);
+ }
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile,
+ * or <code>null</code> if unable to associate the given file with an
+ * IJpaFile.
+ *
+ * @param file the given file
+ * @return the IJpaFile corresponding to the given file,
+ * or <code>null</code> if unable to associate the given file with an
+ * IJpaFile
+ */
+ public static IJpaFile getJpaFile(IFile file) {
+ return JpaModelManager.instance().getJpaFile(file);
+ }
+
+ /**
+ * Returns the singleton DaliPlugin
+ */
+ public static JpaCorePlugin getPlugin() {
+ return INSTANCE;
+ }
+
+ public static void log(IStatus status) {
+ INSTANCE.getLog().log(status);
+ }
+
+ public static void log(String msg) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null));
+ }
+
+ public static void log(Throwable throwable) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, throwable.getLocalizedMessage(), throwable));
+ }
+
+
+ public JpaCorePlugin() {
+ super();
+ INSTANCE = this;
+ }
+
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ JpaModelManager.instance().startup();
+ OrmInit.init();
+ PersistenceInit.init();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ try {
+ JpaModelManager.instance().shutdown();
+ }
+ finally {
+ super.stop(context);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
new file mode 100644
index 0000000000..70a2254409
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.core.internal;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.db.internal.Connection;
+import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Data Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaDataSource extends JpaEObject implements IJpaDataSource
+{
+ /**
+ * The default value of the '{@link #getConnectionProfileName() <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectionProfileName()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONNECTION_PROFILE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getConnectionProfileName() <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectionProfileName()
+ * @generated
+ * @ordered
+ */
+ protected String connectionProfileName = CONNECTION_PROFILE_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaDataSource() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_DATA_SOURCE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Connection Profile Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connection Profile Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connection Profile Name</em>' attribute.
+ * @see #setConnectionProfileName(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource_ConnectionProfileName()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ public String getConnectionProfileName() {
+ return connectionProfileName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connection Profile Name</em>' attribute.
+ * @see #getConnectionProfileName()
+ * @generated
+ */
+ public void setConnectionProfileName(String newConnectionProfileName) {
+ String oldConnectionProfileName = connectionProfileName;
+ connectionProfileName = newConnectionProfileName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME, oldConnectionProfileName, connectionProfileName));
+ }
+
+ public Connection getConnection() {
+ return ConnectionProfileRepository.instance().getConnectionWithProfileNamed(getConnectionProfileName());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ return getConnectionProfileName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ setConnectionProfileName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ setConnectionProfileName(CONNECTION_PROFILE_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ return CONNECTION_PROFILE_NAME_EDEFAULT == null ? connectionProfileName != null : !CONNECTION_PROFILE_NAME_EDEFAULT.equals(connectionProfileName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (connectionProfileName: ");
+ result.append(connectionProfileName);
+ result.append(')');
+ return result.toString();
+ }
+} // JpaDataSource
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java
new file mode 100644
index 0000000000..3ac5a1f76d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JpaEObject extends EObjectImpl implements IJpaEObject
+{
+ /**
+ * Sets of "insignificant" feature ids, keyed by class.
+ * This is built up lazily, as the objects are modified.
+ */
+ private static final Map<Class<? extends JpaEObject>, Set<Integer>> insignificantFeatureIdSets = new Hashtable<Class<? extends JpaEObject>, Set<Integer>>();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaEObject() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_EOBJECT;
+ }
+
+ public IJpaProject getJpaProject() {
+ IJpaEObject container = (IJpaEObject) this.eContainer();
+ return (container == null) ? null : container.getJpaProject();
+ }
+
+ public IResource getResource() {
+ return this.getJpaProject().getProject();
+ }
+
+ // ********** change notification **********
+ /**
+ * override to prevent notification when the object's state is unchanged
+ */
+ @Override
+ public void eNotify(Notification notification) {
+ if (!notification.isTouch()) {
+ super.eNotify(notification);
+ this.featureChanged(notification.getFeatureID(this.getClass()));
+ }
+ }
+
+ protected void featureChanged(int featureId) {
+ if (this.featureIsSignificant(featureId)) {
+ IJpaProject project = this.getJpaProject();
+ // check that the model is fully initialized
+ if (project != null) {
+ project.resynch();
+ }
+ }
+ }
+
+ protected boolean featureIsSignificant(int featureId) {
+ return !this.featureIsInsignificant(featureId);
+ }
+
+ protected boolean featureIsInsignificant(int featureId) {
+ return this.insignificantFeatureIds().contains(featureId);
+ }
+
+ /**
+ * Return a set of the object's "insignificant" feature ids.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If you need instance-based calculation of your "insignificant" aspects,
+ * override this method. If class-based calculation is sufficient,
+ * override #addInsignificantFeatureIdsTo(Set).
+ */
+ protected Set<Integer> insignificantFeatureIds() {
+ synchronized (insignificantFeatureIdSets) {
+ Set<Integer> insignificantFeatureIds = insignificantFeatureIdSets.get(this.getClass());
+ if (insignificantFeatureIds == null) {
+ insignificantFeatureIds = new HashSet<Integer>();
+ this.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ insignificantFeatureIdSets.put(this.getClass(), insignificantFeatureIds);
+ }
+ return insignificantFeatureIds;
+ }
+ }
+
+ /**
+ * Add the object's "insignificant" feature ids to the specified set.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If class-based calculation of your "insignificant" features is sufficient,
+ * override this method. If you need instance-based calculation,
+ * override #insignificantFeatureIds().
+ */
+ protected void addInsignificantFeatureIdsTo(Set<Integer> insignificantFeatureIds) {
+ // when you override this method, don't forget to include:
+ // super.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java
new file mode 100644
index 0000000000..08c07ef2d3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.ElementChangedEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaFile extends JpaEObject implements IJpaFile
+{
+ /**
+ * The default value of the '{@link #getContentId() <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentId()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTENT_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContentId() <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentId()
+ * @generated
+ * @ordered
+ */
+ protected String contentId = CONTENT_ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContent()
+ * @generated
+ * @ordered
+ */
+ protected IJpaRootContentNode content;
+
+ /**
+ * The IFile associated with this JPA file
+ */
+ protected IFile file;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaFile() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_FILE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Content Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content Id</em>' attribute.
+ * @see #setContentId(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile_ContentId()
+ * @model required="true"
+ * @generated
+ */
+ public String getContentId() {
+ return contentId;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content Id</em>' attribute.
+ * @see #getContentId()
+ * @generated
+ */
+ public void setContentId(String newContentId) {
+ String oldContentId = contentId;
+ contentId = newContentId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT_ID, oldContentId, contentId));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Content</b></em>' containment reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content</em>' containment reference.
+ * @see #setContent(IJpaRootContentNode)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile_Content()
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile
+ * @model opposite="jpaFile" containment="true"
+ * @generated
+ */
+ public IJpaRootContentNode getContent() {
+ return content;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContent(IJpaRootContentNode newContent, NotificationChain msgs) {
+ IJpaRootContentNode oldContent = content;
+ content = newContent;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT, oldContent, newContent);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content</em>' containment reference.
+ * @see #getContent()
+ * @generated
+ */
+ public void setContent(IJpaRootContentNode newContent) {
+ if (newContent != content) {
+ NotificationChain msgs = null;
+ if (content != null)
+ msgs = ((InternalEObject) content).eInverseRemove(this, JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE, IJpaRootContentNode.class, msgs);
+ if (newContent != null)
+ msgs = ((InternalEObject) newContent).eInverseAdd(this, JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE, IJpaRootContentNode.class, msgs);
+ msgs = basicSetContent(newContent, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT, newContent, newContent));
+ }
+
+ /**
+ * @see IJpaFile#getFile()
+ */
+ public IFile getFile() {
+ return file;
+ }
+
+ void setFile(IFile theFile) {
+ file = theFile;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of file before it is removed
+ */
+ void dispose() {
+ getContent().dispose();
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ getContent().handleJavaElementChangedEvent(event);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ if (content != null)
+ msgs = ((InternalEObject) content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_FILE__CONTENT, null, msgs);
+ return basicSetContent((IJpaRootContentNode) otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ return basicSetContent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ return getContentId();
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ return getContent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ setContentId((String) newValue);
+ return;
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ setContent((IJpaRootContentNode) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ setContentId(CONTENT_ID_EDEFAULT);
+ return;
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ setContent((IJpaRootContentNode) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ return CONTENT_ID_EDEFAULT == null ? contentId != null : !CONTENT_ID_EDEFAULT.equals(contentId);
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ return content != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contentId: ");
+ result.append(contentId);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ return getContent().getContentNode(offset);
+ }
+
+ @Override
+ public IResource getResource() {
+ return file;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java
new file mode 100644
index 0000000000..054f61261d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.core.internal;
+
+import java.io.IOException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+
+public class JpaFileContentRegistry
+{
+ private JpaFileContentRegistry() {
+ super();
+ }
+
+ public static IJpaFile getFile(IJpaProject jpaProject, IFile file) {
+ //attempting to get the contentType based on the file contents.
+ //have to check the file contents instead of just the file name
+ //because for xml we base it on the rootElement name
+ IContentType contentType = null;
+ try {
+ contentType = (file == null) ?
+ null :
+ Platform.getContentTypeManager().findContentTypeFor(file.getContents(), file.getName());
+ }
+ catch (IOException e) {
+ JpaCorePlugin.log(e);
+ }
+ catch (CoreException e) {
+ JpaCorePlugin.log(e);
+ }
+ if (contentType == null) {
+ return null;
+ }
+ String contentTypeId = contentType.getId();
+ IJpaRootContentNode content = buildContent(jpaProject, file, contentTypeId);
+
+ if (content == null) {
+ return null;
+ }
+ JpaFile jpaFile = JpaCoreFactory.eINSTANCE.createJpaFile();
+ jpaFile.setFile(file);
+ jpaFile.setContentId(contentTypeId);
+ jpaFile.setContent(content);
+
+ return jpaFile;
+ }
+
+ private static IJpaRootContentNode buildContent(IJpaProject jpaProject, IFile file, String contentTypeId) {
+ for (IJpaFileContentProvider provider : jpaProject.getPlatform().jpaFileContentProviders()) {
+ if (provider.contentType().equals(contentTypeId)) {
+ return provider.buildRootContent(file);
+ }
+ }
+ return null;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java
new file mode 100644
index 0000000000..2bf6b6e688
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaModel#getProjects <em>Projects</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaModel extends JpaEObject implements IJpaModel
+{
+ /**
+ * The cached value of the '{@link #getProjects() <em>Projects</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProjects()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJpaProject> projects;
+
+ /**
+ * Flag to indicate whether the model has been filled with projects
+ */
+ private boolean filled = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaModel() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_MODEL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Projects</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaProject}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Projects</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Projects</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel_Projects()
+ * @model type="org.eclipse.jpt.core.internal.IJpaProject" containment="true"
+ * @generated
+ */
+ public EList<IJpaProject> getProjects() {
+ if (projects == null) {
+ projects = new EObjectContainmentEList<IJpaProject>(IJpaProject.class, this, JpaCorePackage.JPA_MODEL__PROJECTS);
+ }
+ return projects;
+ }
+
+ /**
+ * @see IJpaModel#getJpaProject(IProject)
+ */
+ public synchronized IJpaProject getJpaProject(IProject project) {
+ for (IJpaProject jpaProject : getProjects()) {
+ if (jpaProject.getProject().equals(project)) {
+ return jpaProject;
+ }
+ }
+ if (!this.filled) {
+ try {
+ return JpaModelManager.instance().createJpaProject(project);
+ }
+ catch (CoreException ce) {
+ JpaCorePlugin.log(ce.getStatus());
+ return null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @see IJpaModel#jpaProjects()
+ */
+ public Iterator<IJpaProject> jpaProjects() {
+ return new ReadOnlyIterator<IJpaProject>(getProjects().iterator());
+ }
+
+ @Override
+ public IResource getResource() {
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Initialize model with workspace resources
+ */
+ void fill() throws CoreException {
+ if (filled)
+ return;
+ IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+ public boolean visit(IResourceProxy resourceProxy) throws CoreException {
+ if (!resourceProxy.isAccessible()) {
+ return false;
+ }
+ switch (resourceProxy.getType()) {
+ case IResource.ROOT :
+ return true;
+ case IResource.PROJECT :
+ JpaModelManager.instance().fillJpaProject((IProject) resourceProxy.requestResource());
+ default :
+ return false;
+ }
+ }
+ };
+ ResourcesPlugin.getWorkspace().getRoot().accept(visitor, IResource.NONE);
+ filled = true;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of model
+ */
+ void dispose() {
+ for (Iterator<IJpaProject> stream = new CloneIterator<IJpaProject>(getProjects()); stream.hasNext();) {
+ disposeProject((JpaProject) stream.next());
+ }
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose project and remove it
+ */
+ void disposeProject(JpaProject jpaProject) {
+ jpaProject.dispose();
+ getProjects().remove(jpaProject);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ for (Iterator<IJpaProject> stream = getProjects().iterator(); stream.hasNext();) {
+ ((JpaProject) stream.next()).handleEvent(event);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ return ((InternalEList<?>) getProjects()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ return getProjects();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ getProjects().clear();
+ getProjects().addAll((Collection<? extends IJpaProject>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ getProjects().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ return projects != null && !projects.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
new file mode 100644
index 0000000000..ef7317dcf1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
@@ -0,0 +1,543 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IElementChangedListener;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jpt.core.internal.prefs.JpaPreferenceConstants;
+import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+
+public class JpaModelManager
+{
+ private static JpaModelManager INSTANCE;
+
+
+ /**
+ * Returns the singleton JpaModelManager
+ */
+ public final static JpaModelManager instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new JpaModelManager();
+ }
+ return INSTANCE;
+ }
+
+
+ /**
+ * Unique handle onto the JpaModel
+ */
+ JpaModel model;
+
+ /**
+ * Processes resource changes
+ */
+ private IResourceChangeListener resourceChangeListener;
+
+ /**
+ * Process element changes
+ */
+ private IElementChangedListener elementChangeListener;
+
+ /**
+ * Process changes to preferences
+ */
+ private IPropertyChangeListener preferencesListener;
+
+
+ private JpaModelManager() {
+ super();
+ model = JpaCoreFactory.eINSTANCE.createJpaModel();
+ resourceChangeListener = new ResourceChangeListener();
+ elementChangeListener = new ElementChangeListener();
+ preferencesListener = new PreferencesListener();
+ }
+
+ public void startup() {
+ try {
+ buildWorkspace();
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener);
+ JavaCore.addElementChangedListener(elementChangeListener);
+ JpaCorePlugin.getPlugin().getPluginPreferences().addPropertyChangeListener(preferencesListener);
+ }
+ catch (RuntimeException re) {
+ JpaCorePlugin.log(re);
+ shutdown();
+ }
+ }
+
+ public void shutdown() {
+ JpaCorePlugin.getPlugin().getPluginPreferences().removePropertyChangeListener(preferencesListener);
+ JavaCore.removeElementChangedListener(elementChangeListener);
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+ model.dispose();
+ }
+
+ private void buildWorkspace() {
+ Job workspaceBuildJob = new WorkspaceBuildJob();
+ workspaceBuildJob.schedule(5000L); //temporary delay for bundle init problem
+ }
+
+ /**
+ * Return the workspace-wide IJpaModel
+ *
+ * This IJpaProject may not be fully filled (it may not have all the correct
+ * projects added) if retrieved soon after it is created (e.g. workspace opening,
+ * project opening, facet installation ...) To ensure it is fully filled in
+ * those cases, you may instead use getFilledJpaModel().
+ * @see getFilledJpaModel()
+ */
+ public IJpaModel getJpaModel() {
+ return model;
+ }
+
+ /**
+ * Return the workspace-wide IJpaModel
+ *
+ * This IJpaModel will be fully filled (it will have all the correct projects added).
+ * @see getJpaProject(IProject)
+ */
+ public IJpaModel getFilledJpaModel()
+ throws CoreException {
+ model.fill();
+ return model;
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given project
+ * with an IJpaProject.
+ *
+ * This IJpaProject may not be fully filled (it may not have all the correct
+ * files added) if retrieved soon after it is created (e.g. workspace opening,
+ * project opening, facet installation ...) To ensure it is fully filled in
+ * those cases, you may instead use getFilledJpaProject(IProject).
+ * @see getFilledJpaProject(IProject)
+ */
+ public synchronized IJpaProject getJpaProject(IProject project) {
+ if (project == null) {
+ return null;
+ }
+
+ return model.getJpaProject(project);
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given project
+ * with an IJpaProject.
+ *
+ * This IJpaProject will be fully filled (it will have all the correct files added).
+ * @see getJpaProject(IProject)
+ */
+ public synchronized IJpaProject getFilledJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+
+ return jpaProject;
+ }
+
+ /**
+ * INTERNAL ONLY
+ *
+ * Fills the IJpaProject associated with the IProject, if it exists
+ */
+ public synchronized void fillJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Create an IJpaProject without files filled in
+ */
+ public synchronized IJpaProject createJpaProject(IProject project)
+ throws CoreException {
+ if (FacetedProjectFramework.hasProjectFacet(project, JpaCorePlugin.FACET_ID)) {
+ JpaProject jpaProject = JpaCoreFactory.eINSTANCE.createJpaProject();
+ jpaProject.setProject(project);
+ model.getProjects().add(jpaProject);
+ return jpaProject;
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Create an IJpaProject with files filled in
+ */
+ public synchronized IJpaProject createFilledJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) createJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+
+ return jpaProject;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose the IJpaProject
+ */
+ public void disposeJpaProject(IJpaProject jpaProject) {
+ model.disposeProject((JpaProject) jpaProject);
+ }
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile.
+ * Returns <code>null</code> if unable to associate the given file
+ * with an IJpaFile.
+ */
+ public synchronized IJpaFile getJpaFile(IFile file) {
+ if (file == null) {
+ return null;
+ }
+
+ IProject project = file.getProject();
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+ if (jpaProject == null) {
+ return null;
+ }
+
+ return jpaProject.getJpaFile(file);
+ }
+
+
+
+ private class WorkspaceBuildJob extends Job
+ {
+ WorkspaceBuildJob() {
+ // TODO - Internationalize (? It *is* a system job ...)
+ super("Initializing JPA Model ...");
+ setSystem(true);
+ setPriority(SHORT);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+
+ try {
+ workspace.run(
+ new IWorkspaceRunnable() {
+ public void run(IProgressMonitor progress) throws CoreException {
+ model.fill();
+ }
+ },
+ monitor);
+ }
+ catch (CoreException ce) {
+ return ce.getStatus();
+ }
+ return Status.OK_STATUS;
+ }
+
+ }
+
+
+ private static class ResourceChangeListener
+ implements IResourceChangeListener
+ {
+ ThreadLocal<ResourceChangeProcessor> resourceChangeProcessors = new ThreadLocal<ResourceChangeProcessor>();
+
+ ResourceChangeListener() {
+ super();
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ getResourceChangeProcessor().resourceChanged(event);
+ }
+
+ public ResourceChangeProcessor getResourceChangeProcessor() {
+ ResourceChangeProcessor processor = this.resourceChangeProcessors.get();
+ if (processor == null) {
+ processor = new ResourceChangeProcessor();
+ this.resourceChangeProcessors.set(processor);
+ }
+ return processor;
+ }
+ }
+
+
+ private static class ResourceChangeProcessor
+ {
+ private JpaModel model;
+
+ ResourceChangeProcessor() {
+ model = JpaModelManager.instance().model;
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getSource() instanceof IWorkspace) {
+ IResource resource = event.getResource();
+ IResourceDelta delta = event.getDelta();
+
+ switch (event.getType()){
+ case IResourceChangeEvent.PRE_DELETE :
+ try {
+ if ((resource.getType() == IResource.PROJECT)
+ && (FacetedProjectFramework.hasProjectFacet(
+ (IProject) resource, JpaCorePlugin.FACET_ID))) {
+ projectBeingDeleted((IProject) resource);
+ }
+ }
+ catch (CoreException e) {
+ // project doesn't exist or is not open: ignore
+ }
+ return;
+
+ case IResourceChangeEvent.POST_CHANGE :
+ if (isApplicable(delta)) { // avoid changing due to SYNC or MARKER deltas
+ checkForProjectsBeingAddedOrRemoved(delta);
+ checkForFilesBeingAddedOrRemoved(delta);
+ }
+ return;
+
+ case IResourceChangeEvent.PRE_CLOSE :
+ return;
+ }
+ }
+ }
+
+ /**
+ * Process the given delta and look for files being added, removed, or changed
+ */
+ private void checkForFilesBeingAddedOrRemoved(IResourceDelta delta) {
+ IResource resource = delta.getResource();
+ boolean processChildren = false;
+
+ switch (resource.getType()) {
+ case IResource.ROOT :
+ processChildren = true;
+ break;
+
+ case IResource.PROJECT :
+ IProject project = (IProject) resource;
+
+ try {
+ if (FacetedProjectFramework.hasProjectFacet(project, JpaCorePlugin.FACET_ID)) {
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ if (jpaProject != null) {
+ // sometimes we receive events before the project
+ // has been fully initialized
+ jpaProject.synchInternalResources(delta);
+ }
+ }
+ }
+ catch (CoreException ex) {
+ // we can't do anything anyway
+ }
+ break;
+ }
+ if (processChildren) {
+ IResourceDelta[] children = delta.getAffectedChildren();
+ for (int i = 0; i < children.length; i++) {
+ checkForFilesBeingAddedOrRemoved(children[i]);
+ }
+ }
+
+ }
+
+ /**
+ * Process the given delta and look for projects being added, opened, or closed.
+ * Note that projects being deleted are checked in deletingProject(IProject).
+ */
+ private void checkForProjectsBeingAddedOrRemoved(IResourceDelta delta) {
+ IResource resource = delta.getResource();
+ boolean processChildren = false;
+
+ switch (resource.getType()) {
+ case IResource.ROOT :
+ processChildren = true;
+ break;
+
+ case IResource.PROJECT :
+ // NB: No need to check project's facet as if the project is not a jpa project:
+ // - if the project is added or changed this is a noop for projectsBeingDeleted
+ // - if the project is closed, it has already lost its jpa facet
+ IProject project = (IProject) resource;
+
+ // could be problems here ...
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ // shouldn't have to do anything - model should be created with facet
+ break;
+
+ case IResourceDelta.REMOVED :
+ // not really sure what should be done here ...
+ break;
+
+ case IResourceDelta.CHANGED :
+ if ((delta.getFlags() & IResourceDelta.OPEN) != 0) {
+ if (project.isOpen() && jpaProject == null) {
+ try {
+ JpaModelManager.instance().createFilledJpaProject(project);
+ }
+ catch (CoreException ce) {
+ JpaCorePlugin.log(ce);
+ }
+ }
+ else {
+ model.disposeProject(jpaProject);
+ }
+ }
+ else if ((delta.getFlags() & IResourceDelta.DESCRIPTION) != 0) {
+ // again, not sure ...
+ }
+ else {
+ // ...
+ }
+ break;
+ }
+ break;
+ }
+ if (processChildren) {
+ IResourceDelta[] children = delta.getAffectedChildren();
+ for (int i = 0; i < children.length; i++) {
+ checkForProjectsBeingAddedOrRemoved(children[i]);
+ }
+ }
+ }
+
+ /**
+ * The platform project is being deleted. Remove jpa info.
+ */
+ private void projectBeingDeleted(IProject project) {
+ // could be problems here ...
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ model.disposeProject(jpaProject);
+ }
+
+ /**
+ * Returns whether a given delta contains some information relevant to
+ * the JPA model,
+ * in particular it will not consider SYNC or MARKER only deltas.
+ */
+ private boolean isApplicable(IResourceDelta rootDelta) {
+ if (rootDelta != null) {
+ // use local exception to quickly escape from delta traversal
+ class FoundRelevantDeltaException extends RuntimeException {
+ private static final long serialVersionUID = 7137113252936111022L; // backward compatible
+ // only the class name is used (to differentiate from other RuntimeExceptions)
+ }
+ try {
+ rootDelta.accept(
+ new IResourceDeltaVisitor() {
+ public boolean visit(IResourceDelta delta) {
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ case IResourceDelta.REMOVED :
+ throw new FoundRelevantDeltaException();
+ case IResourceDelta.CHANGED :
+ // if any flag is set but SYNC or MARKER, this delta should be considered
+ if (delta.getAffectedChildren().length == 0 // only check leaf delta nodes
+ && (delta.getFlags() & ~(IResourceDelta.SYNC | IResourceDelta.MARKERS)) != 0) {
+ throw new FoundRelevantDeltaException();
+ }
+ }
+ return true;
+ }
+ }
+ );
+ }
+ catch(FoundRelevantDeltaException e) {
+ return true;
+ }
+ catch(CoreException e) { // ignore delta if not able to traverse
+ }
+ }
+ return false;
+ }
+ }
+
+
+ private static class ElementChangeListener
+ implements IElementChangedListener
+ {
+ ThreadLocal<ElementChangeProcessor> elementChangeProcessors = new ThreadLocal<ElementChangeProcessor>();
+
+ ElementChangeListener() {
+ super();
+ }
+
+ public void elementChanged(ElementChangedEvent event) {
+ getElementChangeProcessor().elementChanged(event);
+ }
+
+ public ElementChangeProcessor getElementChangeProcessor() {
+ ElementChangeProcessor processor = this.elementChangeProcessors.get();
+ if (processor == null) {
+ processor = new ElementChangeProcessor();
+ this.elementChangeProcessors.set(processor);
+ }
+ return processor;
+ }
+ }
+
+
+ private static class ElementChangeProcessor
+ {
+ ElementChangeProcessor() {
+ super();
+ }
+ public void elementChanged(ElementChangedEvent event) {
+ JpaModelManager.instance().model.handleEvent(event);
+ }
+ }
+
+
+ private static class PreferencesListener
+ implements IPropertyChangeListener
+ {
+ PreferencesListener() {
+ super();
+ }
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty() == JpaPreferenceConstants.PREF_DEFAULT_JPA_LIB) {
+ try {
+ JavaCore.setClasspathVariable("DEFAULT_JPA_LIB", new Path((String) event.getNewValue()), null);
+ }
+ catch (JavaModelException jme) {
+ JpaCorePlugin.log(jme);
+ }
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java
new file mode 100644
index 0000000000..603da2472d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+public class JpaPlatformRegistry
+{
+ public static final JpaPlatformRegistry INSTANCE = new JpaPlatformRegistry();
+
+ private static final String EXTENSION_ID =
+ "jpaPlatform"; //$NON-NLS-1$
+
+ private static final String EL_PLATFORM =
+ "jpaPlatform"; //$NON-NLS-1$
+
+ private static final String AT_ID =
+ "id"; //$NON-NLS-1$
+
+ private static final String AT_LABEL =
+ "label"; //$NON-NLS-1$
+
+ private static final String AT_CLASS =
+ "class"; //$NON-NLS-1$
+
+ // key: String jpaPlatform id value: IConfigurationElement class descriptor
+ private Map<String, IConfigurationElement> jpaPlatforms;
+
+
+ /* (non Java doc)
+ * restrict access
+ */
+ private JpaPlatformRegistry() {
+ buildJpaPlatforms();
+ }
+
+
+ private void buildJpaPlatforms() {
+ this.jpaPlatforms = new HashMap<String, IConfigurationElement>();
+
+ for (Iterator<IConfigurationElement> stream = allConfigElements(); stream.hasNext(); ) {
+ buildJpaPlatform(stream.next());
+ }
+ }
+
+ private void buildJpaPlatform(IConfigurationElement configElement) {
+ if (! configElement.getName().equals(EL_PLATFORM)) {
+ return;
+ }
+
+ String platformId = configElement.getAttribute(AT_ID);
+ String platformLabel = configElement.getAttribute(AT_LABEL);
+ String platformClass = configElement.getAttribute(AT_CLASS);
+
+ if ((platformId == null) || (platformLabel == null) || (platformClass == null)) {
+ if (platformId == null) {
+ reportMissingAttribute(configElement, AT_ID);
+ }
+ if (platformLabel == null) {
+ reportMissingAttribute(configElement, AT_LABEL);
+ }
+ if (platformClass == null) {
+ reportMissingAttribute(configElement, AT_CLASS);
+ }
+ return;
+ }
+
+ if (this.jpaPlatforms.containsKey(platformId)) {
+ IConfigurationElement otherConfigElement = this.jpaPlatforms.get(platformId);
+ reportDuplicatePlatform(configElement, otherConfigElement);
+ }
+
+ this.jpaPlatforms.put(platformId, configElement);
+ }
+
+ /**
+ * Return a new IJpaPlatform for the given id.
+ * NB: This should only be done when instantiating a platform for a given
+ * IJpaProject, either when creating the project, or when changing the
+ * platform.
+ */
+ public IJpaPlatform getJpaPlatform(String id) {
+ IConfigurationElement registeredConfigElement = this.jpaPlatforms.get(id);
+
+ if (registeredConfigElement == null) {
+ return null;
+ }
+
+ try {
+ IJpaPlatform platform =
+ (IJpaPlatform) registeredConfigElement.createExecutableExtension(AT_CLASS);
+ platform.setId(id);
+ return platform;
+ }
+ catch (CoreException ce) {
+ reportFailedInstantiation(registeredConfigElement);
+ return null;
+ }
+ }
+
+ /**
+ * Return an iterator of String ids for all registered JPA platforms.
+ * This does not load any of the platforms' plugin classes.
+ */
+ public Iterator allJpaPlatformIds() {
+ return Collections.unmodifiableMap(jpaPlatforms).keySet().iterator();
+ }
+
+ /**
+ * Return the label for the platform with the given id.
+ * This does not load the platform's plugin classes.
+ */
+ public String getJpaPlatformLabel(String id) {
+ return jpaPlatforms.get(id).getAttribute(AT_LABEL);
+ }
+
+ private Iterator<IConfigurationElement> allConfigElements() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint extensionPoint =
+ registry.getExtensionPoint(JpaCorePlugin.PLUGIN_ID, EXTENSION_ID);
+ IExtension[] extensions = extensionPoint.getExtensions();
+
+ return new CompositeIterator<IConfigurationElement>(
+ new TransformationIterator<IExtension, Iterator<IConfigurationElement>>(CollectionTools.iterator(extensions)) {
+ @Override
+ protected Iterator<IConfigurationElement> transform(IExtension next) {
+ return CollectionTools.iterator(next.getConfigurationElements());
+ }
+ }
+ );
+ }
+
+ // TODO externalize strings
+ private void reportMissingAttribute(IConfigurationElement configElement, String attributeName) {
+ String message =
+ "An extension element \""
+ + configElement.getName()
+ + "\" in plugin \""
+ + configElement.getContributor().getName()
+ + "\" is missing a required attribute \""
+ + attributeName
+ + "\".";
+ JpaCorePlugin.log(message);
+ }
+
+ // TODO externalize strings
+ private void reportDuplicatePlatform(
+ IConfigurationElement oneConfigElement, IConfigurationElement otherConfigElement) {
+ String message =
+ "The plugins \""
+ + oneConfigElement.getContributor().getName()
+ + "\" and \""
+ + otherConfigElement.getContributor().getName()
+ + "\" have registered a duplicate attribute \"id\" "
+ + "for the extension element \"jpaPlatform\".";
+ JpaCorePlugin.log(message);
+ }
+
+ // TODO externalize strings
+ private void reportFailedInstantiation(IConfigurationElement configElement) {
+ String message =
+ "Could not instantiate the class \""
+ + configElement.getAttribute(AT_CLASS)
+ + "\" for the extension element \""
+ + configElement.getName()
+ + "\" in the plugin \""
+ + configElement.getContributor().getName()
+ + "\".";
+ JpaCorePlugin.log(message);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
new file mode 100644
index 0000000000..04ddf525fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
@@ -0,0 +1,645 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.facet.JpaFacetUtils;
+import org.eclipse.jpt.core.internal.platform.IContext;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.PersistenceDbPlugin;
+import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Project</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getFiles <em>Files</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaProject extends JpaEObject implements IJpaProject
+{
+ /**
+ * The IProject associated with this JPA project
+ */
+ protected IProject project;
+
+ /**
+ * The IJpaPlatform associated with this JPA project
+ */
+ protected IJpaPlatform platform;
+
+ /**
+ * The cached value of the '{@link #getDataSource() <em>Data Source</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDataSource()
+ * @generated
+ * @ordered
+ */
+ protected IJpaDataSource dataSource;
+
+ /**
+ * The cached value of the '{@link #getFiles() <em>Files</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFiles()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJpaFile> files;
+
+ /**
+ * Flag to indicate whether this project has been filled with files
+ */
+ private boolean filled = false;
+
+ /**
+ * Flag to indicate that the resynchJob has been scheduled or is running.
+ * This is set to false when that job is completed
+ */
+ boolean resynching = false;
+
+ /**
+ * Flag to indicate that the resynchJob needs to be run. This is
+ * set to true if resynching = true so that the next time the job completes
+ * it will be run again.
+ */
+ boolean needsToResynch = false;
+
+ /**
+ * Job used to reconnect the model parts throughout the project containment hierarchy
+ * @see IJpaProject#resynch()
+ */
+ Job resynchJob;
+
+ private IJobChangeListener resynchJobListener;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected JpaProject() {
+ super();
+ this.resynchJob = buildResynchJob();
+ this.resynchJobListener = buildResynchJobListener();
+ Job.getJobManager().addJobChangeListener(this.resynchJobListener);
+ }
+
+ private Job buildResynchJob() {
+ return new Job("Resynching JPA model ...") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IContext contextHierarchy = getPlatform().buildProjectContext();
+ getPlatform().resynch(contextHierarchy);
+ return Status.OK_STATUS;
+ }
+ };
+ }
+
+ private IJobChangeListener buildResynchJobListener() {
+ return new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ super.done(event);
+ if (event.getJob() == JpaProject.this.resynchJob) {
+ JpaProject.this.resynching = false;
+ if (JpaProject.this.needsToResynch) {
+ resynch();
+ }
+ }
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_PROJECT;
+ }
+
+ /**
+ * @see IJpaProject#getProject()
+ */
+ public IProject getProject() {
+ return project;
+ }
+
+ void setProject(IProject theProject) {
+ project = theProject;
+ }
+
+ public IJavaProject getJavaProject() {
+ return JavaCore.create(getProject());
+ }
+
+ /**
+ * @see IJpaProject#getModel()
+ */
+ public IJpaModel getModel() {
+ return (IJpaModel) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Platform</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Platform</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Platform</em>' reference.
+ * @see #setPlatform(IJpaPlatform)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_Platform()
+ * @model resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public IJpaPlatform getPlatformGen() {
+ return platform;
+ }
+
+ public IJpaPlatform getPlatform() {
+ if (platform == null) {
+ setPlatform(JpaFacetUtils.getPlatform(project));
+ }
+ return getPlatformGen();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Platform</em>' reference.
+ * @see #getPlatform()
+ * @generated
+ */
+ public void setPlatformGen(IJpaPlatform newPlatform) {
+ IJpaPlatform oldPlatform = platform;
+ platform = newPlatform;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__PLATFORM, oldPlatform, platform));
+ }
+
+ public void setPlatform(IJpaPlatform jpaPlatform) {
+ jpaPlatform.setProject(this);
+ setPlatformGen(jpaPlatform);
+ }
+
+ /**
+ * @see IJpaProject#setPlatform(String)
+ */
+ public void setPlatform(String platformId) {
+ setPlatform(JpaPlatformRegistry.INSTANCE.getJpaPlatform(platformId));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Data Source</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data Source</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data Source</em>' containment reference.
+ * @see #setDataSource(IJpaDataSource)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_DataSource()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ public IJpaDataSource getDataSourceGen() {
+ return dataSource;
+ }
+
+ public IJpaDataSource getDataSource() {
+ if (dataSource == null) {
+ setDataSource(JpaFacetUtils.getConnectionName(project));
+ }
+ return getDataSourceGen();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDataSource(IJpaDataSource newDataSource, NotificationChain msgs) {
+ IJpaDataSource oldDataSource = dataSource;
+ dataSource = newDataSource;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__DATA_SOURCE, oldDataSource, newDataSource);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data Source</em>' containment reference.
+ * @see #getDataSource()
+ * @generated
+ */
+ public void setDataSource(IJpaDataSource newDataSource) {
+ if (newDataSource != dataSource) {
+ NotificationChain msgs = null;
+ if (dataSource != null)
+ msgs = ((InternalEObject) dataSource).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_PROJECT__DATA_SOURCE, null, msgs);
+ if (newDataSource != null)
+ msgs = ((InternalEObject) newDataSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_PROJECT__DATA_SOURCE, null, msgs);
+ msgs = basicSetDataSource(newDataSource, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__DATA_SOURCE, newDataSource, newDataSource));
+ }
+
+ /**
+ * @see IJpaProject#setDataSource(String)
+ */
+ public void setDataSource(String connectionProfileName) {
+ JpaDataSource ds = JpaCoreFactory.eINSTANCE.createJpaDataSource();
+ ds.setConnectionProfileName(connectionProfileName);
+ setDataSource(ds);
+ }
+
+ @Override
+ public IJpaProject getJpaProject() {
+ return this;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Files</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaFile}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Files</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Files</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_Files()
+ * @model type="org.eclipse.jpt.core.internal.IJpaFile" containment="true"
+ * @generated
+ */
+ public EList<IJpaFile> getFiles() {
+ if (files == null) {
+ files = new EObjectContainmentEList<IJpaFile>(IJpaFile.class, this, JpaCorePackage.JPA_PROJECT__FILES);
+ }
+ return files;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Fill project with file resources
+ */
+ void fill() throws CoreException {
+ if (filled) {
+ return;
+ }
+ IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+ public boolean visit(IResourceProxy resource) throws CoreException {
+ switch (resource.getType()) {
+ case IResource.PROJECT :
+ case IResource.FOLDER :
+ return true;
+ case IResource.FILE :
+ IFile file = (IFile) resource.requestResource();
+ if (getJpaFileInternal(file) == null) {
+ createJpaFile(file);
+ }
+ default :
+ return false;
+ }
+ }
+ };
+ getProject().accept(visitor, IResource.NONE);
+ resynch();
+ filled = true;
+ }
+
+ /**
+ * @see IJpaProject#getJpaFile(IFile)
+ */
+ public synchronized IJpaFile getJpaFile(IFile file) {
+ IJpaFile jpaFile = getJpaFileInternal(file);
+ if (jpaFile != null) {
+ return jpaFile;
+ }
+ else if (!filled) {
+ return createJpaFile(file);
+ }
+ else {
+ return null;
+ }
+ }
+
+ synchronized IJpaFile getJpaFileInternal(IFile file) {
+ for (IJpaFile next : this.getFiles()) {
+ if (next.getFile().equals(file)) {
+ return next;
+ }
+ }
+ return null;
+ }
+
+ public Iterator<IJpaFile> jpaFiles() {
+ return new ReadOnlyIterator<IJpaFile>(getFiles().iterator());
+ }
+
+ public Collection<IJpaFile> jpaFiles(String contentType) {
+ Collection<IJpaFile> jpaFiles = new ArrayList<IJpaFile>();
+ for (Iterator<IJpaFile> stream = jpaFiles(); stream.hasNext();) {
+ IJpaFile next = stream.next();
+ if (next.getContentId().equals(contentType)) {
+ jpaFiles.add(next);
+ }
+ }
+ return jpaFiles;
+ }
+
+ public JavaPersistentType findJavaPersistentType(IType type) {
+ if (type == null) {
+ return null;
+ }
+ Collection<IJpaFile> persistenceFiles = jpaFiles(JpaCorePlugin.JAVA_CONTENT_TYPE);
+ for (IJpaFile jpaFile : persistenceFiles) {
+ JpaCompilationUnit compilationUnit = (JpaCompilationUnit) jpaFile.getContent();
+ for (JavaPersistentType persistentType : compilationUnit.getTypes()) {
+ if (type.equals(persistentType.getType().jdtType())) {
+ return persistentType;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of project before it is removed
+ */
+ void dispose() {
+ for (Iterator<IJpaFile> stream = new CloneIterator<IJpaFile>(getFiles()); stream.hasNext();) {
+ disposeFile((JpaFile) stream.next());
+ }
+ Job.getJobManager().removeJobChangeListener(this.resynchJobListener);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose file and remove it
+ */
+ void disposeFile(JpaFile jpaFile) {
+ jpaFile.dispose();
+ getFiles().remove(jpaFile);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Synch internal JPA resources.
+ */
+ void synchInternalResources(IResourceDelta delta) throws CoreException {
+ delta.accept(this.buildResourceDeltaVisitor());
+ }
+
+ private IResourceDeltaVisitor buildResourceDeltaVisitor() {
+ return new IResourceDeltaVisitor() {
+ private IResource currentResource = getProject();
+
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ IResource res = delta.getResource();
+ if (res.equals(currentResource))
+ return true;
+ if (res.getType() == IResource.FILE) {
+ IFile file = (IFile) res;
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ if (getJpaFile(file) == null) {
+ createJpaFile(file);
+ JpaProject.this.resynch();//TODO different api for this?
+ }
+ break;
+ case IResourceDelta.REMOVED :
+ JpaFile jpaFile = (JpaFile) getJpaFile(file);
+ if (jpaFile != null) {
+ disposeFile(jpaFile);
+ JpaProject.this.resynch();//TODO different api for this?
+ }
+ break;
+ case IResourceDelta.CHANGED :
+ // shouldn't have to worry, since all changes we're looking for have to do with file name
+ }
+ }
+ return true;
+ }
+ };
+ }
+
+ synchronized IJpaFile createJpaFile(IFile file) {
+ if (!JavaCore.create(getProject()).isOnClasspath(file)) {
+ return null;
+ }
+ IJpaFile jpaFile = JpaFileContentRegistry.getFile(this, file);
+ // PWFTODO
+ // Return a NullPersistenceFile if no content found?
+ if (jpaFile != null) {
+ getFiles().add(jpaFile);
+ return jpaFile;
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ if (filled) {
+ for (Iterator<IJpaFile> stream = jpaFiles(); stream.hasNext();) {
+ ((JpaFile) stream.next()).handleEvent(event);
+ }
+ resynch();
+ }
+ }
+
+ public Iterator<IMessage> validationMessages() {
+ List<IMessage> messages = new ArrayList<IMessage>();
+ getPlatform().addToMessages(messages);
+ return messages.iterator();
+ }
+
+ //leaving this at the JpaProject level for now instead of
+ //passing it on to the JpaModel. We don't currently support
+ //multiple projects having cross-references
+ public void resynch() {
+ if (!this.resynching) {
+ this.resynching = true;
+ this.needsToResynch = false;
+ this.resynchJob.schedule();
+ }
+ else {
+ this.needsToResynch = true;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return basicSetDataSource(null, msgs);
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return ((InternalEList<?>) getFiles()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ return getPlatform();
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return getDataSource();
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return getFiles();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ setPlatform((IJpaPlatform) newValue);
+ return;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ setDataSource((IJpaDataSource) newValue);
+ return;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ getFiles().clear();
+ getFiles().addAll((Collection<? extends IJpaFile>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ setPlatform((IJpaPlatform) null);
+ return;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ setDataSource((IJpaDataSource) null);
+ return;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ getFiles().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ return platform != null;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return dataSource != null;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return files != null && !files.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ public ConnectionProfile connectionProfile() {
+ String profileName = getDataSource().getConnectionProfileName();
+ return PersistenceDbPlugin.getDefault().getConnectionProfileRepository().profileNamed(profileName);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java
new file mode 100644
index 0000000000..e28001002b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 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.core.internal;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.jdt.core.IJavaProject;
+
+public class JpaProjectAdapterFactory
+ implements IAdapterFactory
+{
+ private static Class[] PROPERTIES= new Class[] {
+ IJpaProject.class
+ };
+
+ public Class[] getAdapterList() {
+ return PROPERTIES;
+ }
+
+ public Object getAdapter(Object element, Class key) {
+ IProject project;
+
+ if (element instanceof IProject) {
+ project = (IProject) element;
+ }
+ else if (element instanceof IJavaProject) {
+ project = ((IJavaProject) element).getProject();
+ }
+ else {
+ return null;
+ }
+
+ return JpaCorePlugin.getJpaProject(project);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java
new file mode 100644
index 0000000000..67c901f31e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @model kind="class"
+ * @generated
+ */
+public class NullTypeMapping extends JpaEObject
+ implements ITypeMapping, IJpaSourceObject
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableName()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_NAME_EDEFAULT = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullTypeMapping() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.NULL_TYPE_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return "";
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCoreackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTableName() {
+ return "";
+ }
+
+ public IPersistentType getPersistentType() {
+ throw new UnsupportedOperationException();
+ }
+
+ public IResource getResource() {
+ throw new UnsupportedOperationException("getResource()");
+ }
+
+ /**
+ * @model kind="operation"
+ * @generated NOT
+ */
+ public IJpaFile getJpaFile() {
+ throw new UnsupportedOperationException("getJpaFile()");
+ }
+
+ public ITextRange getTextRange() {
+ throw new UnsupportedOperationException("getTextRange()");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return getName();
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return getTableName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return TABLE_NAME_EDEFAULT == null ? getTableName() != null : !TABLE_NAME_EDEFAULT.equals(getTableName());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaSourceObject.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == ITypeMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return JpaCorePackage.ITYPE_MAPPING__NAME;
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaSourceObject.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == ITypeMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.ITYPE_MAPPING__NAME :
+ return JpaCorePackage.NULL_TYPE_MAPPING__NAME;
+ case JpaCorePackage.ITYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public String getKey() {
+ return IMappingKeys.NULL_TYPE_MAPPING_KEY;
+ }
+
+ public void javaElementChanged(ElementChangedEvent event) {}
+
+ public Iterator associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Table primaryDbTable() {
+ return null;
+ }
+
+ public Table dbTable(String tableName) {
+ return null;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ // it's not so much that all mapping keys are allowed.
+ // it's just that they're not really invalid, per se
+ return true;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java
new file mode 100644
index 0000000000..8ac9ab189e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java
@@ -0,0 +1,217 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.w3c.dom.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlEObject extends JpaEObject implements IXmlEObject
+{
+ protected IDOMNode node;
+
+ /**
+ * Sets of "insignificant" feature ids, keyed by class.
+ * This is built up lazily, as the objects are modified.
+ */
+ private static final Map<Class, Set<Integer>> insignificantXmlFeatureIdSets = new Hashtable<Class, Set<Integer>>();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlEObject() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.XML_EOBJECT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated NOT
+ */
+ public IJpaFile getJpaFile() {
+ IJpaRootContentNode root = getRoot();
+ return (root == null) ? null : root.getJpaFile();
+ }
+
+ @Override
+ public EList eAdapters() {
+ if (this.eAdapters == null) {
+ this.eAdapters = new XmlEAdapterList(this);
+ }
+ return this.eAdapters;
+ }
+
+ public IDOMNode getNode() {
+ return this.node;
+ }
+ protected class XmlEAdapterList extends EAdapterList
+ {
+ public XmlEAdapterList(Notifier notifier) {
+ super(notifier);
+ }
+
+ @Override
+ protected void didAdd(int index, Object newObject) {
+ super.didAdd(index, newObject);
+ try {
+ node = (IDOMNode) ClassTools.executeMethod(newObject, "getNode");
+ }
+ catch (RuntimeException re) {
+ // nothing to do
+ }
+ }
+
+ @Override
+ protected void didRemove(int index, Object oldObject) {
+ super.didRemove(index, oldObject);
+ if ((oldObject instanceof EMF2DOMAdapter) && (((EMF2DOMAdapter) oldObject).getNode() == XmlEObject.this.node)) {
+ XmlEObject.this.node = null;
+ }
+ }
+ }
+
+ public boolean isAllFeaturesUnset() {
+ for (EStructuralFeature feature : eClass().getEAllStructuralFeatures()) {
+ if (xmlFeatureIsInsignificant(feature.getFeatureID())) {
+ continue;
+ }
+ if (feature instanceof EReference) {
+ Object object = eGet(feature);
+ if (object instanceof Collection) {
+ if (eIsSet(feature)) {
+ return false;
+ }
+ }
+ else {
+ XmlEObject eObject = (XmlEObject) eGet(feature);
+ if (eObject != null) {
+ return eObject.isAllFeaturesUnset();
+ }
+ }
+ }
+ else if (eIsSet(feature)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public IJpaRootContentNode getRoot() {
+ XmlEObject container = (XmlEObject) eContainer();
+ return (container == null) ? null : container.getRoot();
+ }
+
+ public IResource getResource() {
+ return getJpaFile().getResource();
+ }
+
+ public ITextRange getTextRange() {
+ return getTextRange(node);
+ }
+
+ protected ITextRange getTextRange(final IDOMNode aNode) {
+ return new ITextRange() {
+ public int getLength() {
+ if (aNode.getNodeType() == Node.ELEMENT_NODE) {
+ return ((IDOMElement) aNode).getStartEndOffset() - aNode.getStartOffset();
+ }
+ return aNode.getLength();
+ }
+
+ public int getLineNumber() {
+ return aNode.getStructuredDocument().getLineOfOffset(getOffset()) + 1;
+ }
+
+ public int getOffset() {
+ return aNode.getStartOffset();
+ }
+ };
+ }
+
+ protected boolean xmlFeatureIsSignificant(int featureId) {
+ return !this.xmlFeatureIsInsignificant(featureId);
+ }
+
+ protected boolean xmlFeatureIsInsignificant(int featureId) {
+ return this.insignificantXmlFeatureIds().contains(featureId);
+ }
+
+ /**
+ * Return a set of the xml object's "insignificant" feature ids.
+ * These are the EMF features that will not be used to determine if all
+ * the features are unset. We use this to determine when to remove
+ * an element from the xml.
+ *
+ * If you need instance-based calculation of your xml "insignificant" aspects,
+ * override this method. If class-based calculation is sufficient,
+ * override #addInsignificantXmlFeatureIdsTo(Set).
+ *
+ * @see isAllFeaturesUnset()
+ */
+ protected Set<Integer> insignificantXmlFeatureIds() {
+ synchronized (insignificantXmlFeatureIdSets) {
+ Set<Integer> insignificantXmlFeatureIds = insignificantXmlFeatureIdSets.get(this.getClass());
+ if (insignificantXmlFeatureIds == null) {
+ insignificantXmlFeatureIds = new HashSet<Integer>();
+ this.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ insignificantXmlFeatureIdSets.put(this.getClass(), insignificantXmlFeatureIds);
+ }
+ return insignificantXmlFeatureIds;
+ }
+ }
+
+ /**
+ * Add the object's "insignificant" feature ids to the specified set.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If class-based calculation of your "insignificant" features is sufficient,
+ * override this method. If you need instance-based calculation,
+ * override #insignificantXmlFeatureIds().
+ */
+ protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
+ // when you override this method, don't forget to include:
+ // super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
new file mode 100644
index 0000000000..47cfb0bd62
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal.content.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJava Attribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaAttributeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJavaAttributeMapping extends IAttributeMapping
+{
+ /**
+ * <!-- begin-user-doc -->
+ * Initialize the model after the AttributeMapping has been
+ * created and added to its container. Some things
+ * can't be accessed. Build anything that doesn't depend
+ * on resources throughout the model being built.
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void initialize();
+
+ void updateFromJava(CompilationUnit astRoot);
+
+ /**
+ * Refresh defaults using the given DefaultsContext
+ * @param defaultsContext
+ */
+ void refreshDefaults(DefaultsContext defaultsContext);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java
new file mode 100644
index 0000000000..ff71764a1f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * Map a string key to an attribute mapping and its corresponding
+ * Java annotation adapter.
+ */
+public interface IJavaAttributeMappingProvider {
+
+ String key();
+
+ boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext);
+
+ IJavaAttributeMapping buildMapping(Attribute attribute);
+
+ DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java
new file mode 100644
index 0000000000..41ff7a5174
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public interface IJavaContentNodes
+{
+ public static final String COMPILATION_UNIT_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.compilationUnit";
+
+ public static final String PERSISTENT_TYPE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.persistentType";
+
+ public static final String PERSISTENT_ATTRIBUTE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.persistentAttribute";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
new file mode 100644
index 0000000000..9229cf05c7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import java.util.List;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJava Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaTypeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJavaTypeMapping extends ITypeMapping
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void initialize();
+
+ void updateFromJava(CompilationUnit astRoot);
+
+ List<String> candidateValuesFor(int pos, CompilationUnit astRoot);
+
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java
new file mode 100644
index 0000000000..9f34675844
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ * Map a string key to a type mapping and its corresponding
+ * Java annotation adapter.
+ */
+public interface IJavaTypeMappingProvider {
+
+ String key();
+
+ IJavaTypeMapping buildMapping(Type type);
+
+ DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java
new file mode 100644
index 0000000000..448f8e2089
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaEObject extends JpaEObject
+ implements IJpaSourceObject
+{
+ protected JavaEObject() {
+ super();
+ this.eAdapters().add(this.buildListener());
+ }
+
+ protected Adapter buildListener() {
+ return new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification notification) {
+ JavaEObject.this.notifyChanged(notification);
+ }
+ };
+ }
+
+ protected void notifyChanged(Notification notification) {
+ // do nothing by default
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JAVA_EOBJECT;
+ }
+
+ public IJpaFile getJpaFile() {
+ return this.getRoot().getJpaFile();
+ }
+
+ public IJpaRootContentNode getRoot() {
+ return ((JavaEObject) this.eContainer()).getRoot();
+ }
+
+ @Override
+ public IResource getResource() {
+ return this.getJpaFile().getResource();
+ }
+
+ /**
+ * All features are "insiginificant". We do a resynch of our java model
+ * when it gets notification from the jdt java model. We had problems
+ * with the java model being in a bad state while doing our resynch.
+ */
+ @Override
+ protected boolean featureIsInsignificant(int featureId) {
+ return true;
+ }
+
+ /**
+ * Convenience method. If the specified element text range is null
+ * return the Java object's text range instead (which is usually the
+ * annotation's text range).
+ */
+ protected ITextRange elementTextRange(ITextRange elementTextRange) {
+ return (elementTextRange != null) ? elementTextRange : this.getTextRange();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java
new file mode 100644
index 0000000000..0a9164b47c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.core.internal.content.java;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public class JavaJpaFileContentProvider implements IJpaFileContentProvider
+{
+ public static JavaJpaFileContentProvider INSTANCE = new JavaJpaFileContentProvider();
+
+ /**
+ * Restrict access
+ */
+ private JavaJpaFileContentProvider() {
+
+ }
+
+ public IJpaRootContentNode buildRootContent(IFile resourceFile) {
+ JpaCompilationUnit content = JpaJavaFactory.eINSTANCE.createJpaCompilationUnit();
+ content.setFile(resourceFile);
+ return content;
+ }
+
+ public String contentType() {
+ return JpaCorePlugin.JAVA_CONTENT_TYPE;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
new file mode 100644
index 0000000000..e603fb9fda
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
@@ -0,0 +1,652 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasicProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedIdProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaIdProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToManyProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOneProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToManyProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOneProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransientProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersionProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Persistent Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping <em>Default Mapping</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping <em>Specified Mapping</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaPersistentAttribute extends JavaEObject
+ implements IPersistentAttribute
+{
+ /**
+ * The default value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPING_KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected String mappingKey = MAPPING_KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultMapping() <em>Default Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultMapping()
+ * @generated
+ * @ordered
+ */
+ protected IJavaAttributeMapping defaultMapping;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedMapping() <em>Specified Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedMapping()
+ * @generated
+ * @ordered
+ */
+ protected IJavaAttributeMapping specifiedMapping;
+
+ private Attribute attribute;
+
+ // TODO move these to a singleton?
+ private IJavaAttributeMappingProvider[] attributeMappingProviders;
+
+ /**
+ * the "null" attribute mapping is used when the attribute is neither
+ * modified with a mapping annotation nor mapped by a "default" mapping
+ */
+ // TODO move this to a singleton?
+ private IJavaAttributeMappingProvider nullAttributeMappingProvider;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaPersistentAttribute() {
+ super();
+ }
+
+ protected JavaPersistentAttribute(Attribute attribute) {
+ super();
+ this.attribute = attribute;
+ this.attributeMappingProviders = this.buildAttributeMappingProviders();
+ this.nullAttributeMappingProvider = this.buildNullAttributeMappingProvider();
+ }
+
+ private IJavaAttributeMappingProvider[] buildAttributeMappingProviders() {
+ ArrayList<IJavaAttributeMappingProvider> providers = new ArrayList<IJavaAttributeMappingProvider>();
+ this.addAttributeMappingProvidersTo(providers);
+ return providers.toArray(new IJavaAttributeMappingProvider[providers.size()]);
+ }
+
+ /**
+ * Override this to specify more or different attribute mapping providers.
+ * The default includes the JPA spec-defined type mappings of
+ * Basic, Id, OneToOne, OneToMany, ManyToOne, ManyToMany, Embeddable, EmbeddedId.
+ */
+ protected void addAttributeMappingProvidersTo(Collection<IJavaAttributeMappingProvider> providers) {
+ providers.add(JavaBasicProvider.instance());
+ providers.add(JavaIdProvider.instance());
+ providers.add(JavaTransientProvider.instance());
+ providers.add(JavaOneToManyProvider.instance());
+ providers.add(JavaManyToOneProvider.instance());
+ providers.add(JavaManyToManyProvider.instance());
+ providers.add(JavaOneToOneProvider.instance());
+ providers.add(JavaEmbeddedProvider.instance());
+ providers.add(JavaEmbeddedIdProvider.instance());
+ providers.add(JavaVersionProvider.instance());
+ }
+
+ protected IJavaAttributeMappingProvider buildNullAttributeMappingProvider() {
+ return JavaNullAttributeMappingProvider.instance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JAVA_PERSISTENT_ATTRIBUTE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIPersistentAttribute_MappingKey()
+ * @model required="true" changeable="false"
+ * @generated
+ */
+ public String getMappingKey() {
+ return mappingKey;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Mapping</em>' containment reference.
+ * @see #setDefaultMapping(IJavaAttributeMapping)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute_DefaultMapping()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public IJavaAttributeMapping getDefaultMapping() {
+ return defaultMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDefaultMapping(IJavaAttributeMapping newDefaultMapping, NotificationChain msgs) {
+ IJavaAttributeMapping oldDefaultMapping = defaultMapping;
+ defaultMapping = newDefaultMapping;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, oldDefaultMapping, newDefaultMapping);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping <em>Default Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Mapping</em>' containment reference.
+ * @see #getDefaultMapping()
+ * @generated
+ */
+ public void setDefaultMapping(IJavaAttributeMapping newDefaultMapping) {
+ if (newDefaultMapping != defaultMapping) {
+ NotificationChain msgs = null;
+ if (defaultMapping != null)
+ msgs = ((InternalEObject) defaultMapping).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, null, msgs);
+ if (newDefaultMapping != null)
+ msgs = ((InternalEObject) newDefaultMapping).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, null, msgs);
+ msgs = basicSetDefaultMapping(newDefaultMapping, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, newDefaultMapping, newDefaultMapping));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Mapping</em>' containment reference.
+ * @see #setSpecifiedMapping(IJavaAttributeMapping)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute_SpecifiedMapping()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public IJavaAttributeMapping getSpecifiedMapping() {
+ return specifiedMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSpecifiedMapping(IJavaAttributeMapping newSpecifiedMapping, NotificationChain msgs) {
+ IJavaAttributeMapping oldSpecifiedMapping = specifiedMapping;
+ specifiedMapping = newSpecifiedMapping;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, oldSpecifiedMapping, newSpecifiedMapping);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping <em>Specified Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Mapping</em>' containment reference.
+ * @see #getSpecifiedMapping()
+ * @generated
+ */
+ public void setSpecifiedMappingGen(IJavaAttributeMapping newSpecifiedMapping) {
+ if (newSpecifiedMapping != specifiedMapping) {
+ NotificationChain msgs = null;
+ if (specifiedMapping != null)
+ msgs = ((InternalEObject) specifiedMapping).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, null, msgs);
+ if (newSpecifiedMapping != null)
+ msgs = ((InternalEObject) newSpecifiedMapping).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, null, msgs);
+ msgs = basicSetSpecifiedMapping(newSpecifiedMapping, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, newSpecifiedMapping, newSpecifiedMapping));
+ }
+
+ /**
+ * This should not be called when updating the persistence model
+ * from the java model, it should only be called when going in the
+ * other direction. This will update the java code appropriately
+ * to the change in mapping in the persistence model.
+ */
+ public void setSpecifiedMapping(IJavaAttributeMapping newMapping) {
+ if (this.specifiedMapping != null) {
+ this.attribute.removeAnnotation(this.annotationAdapterForAttributeMappingKey(this.specifiedMapping.getKey()));
+ }
+ if (newMapping != null) {
+ this.attribute.newMarkerAnnotation(this.annotationAdapterForAttributeMappingKey(newMapping.getKey()));
+ }
+ this.setSpecifiedMappingGen(newMapping);
+ }
+
+ protected void setMappingKeyInternal(String newMappingKey) {
+ String oldMappingKey = mappingKey;
+ mappingKey = newMappingKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY, oldMappingKey, mappingKey));
+ }
+
+ /**
+ * This should not be called when updating the persistence model
+ * from the java model, it should only be called when going in the
+ * other direction. This will update the java code appropriately
+ * to the change in mapping in the persistence model.
+ */
+ public void setMappingKey(String newMappingKey, boolean default_) {
+ if (default_) {
+ setSpecifiedMapping(null);
+ setMappingKeyInternal(newMappingKey);
+ return;
+ }
+ this.setSpecifiedMapping(this.buildMapping(newMappingKey));
+ if (this.specifiedMapping != null) {
+ this.specifiedMapping.initialize();
+ }
+ this.setMappingKeyInternal(newMappingKey);
+ //TODO need to support mapping morphing, copying common settings over
+ //to the new mapping. This can't be done in the same was as XmlAttributeMapping
+ //since we don't know all the possible mapping types
+ }
+
+ public IJavaAttributeMapping getMapping() {
+ return getSpecifiedMapping() != null ? getSpecifiedMapping() : getDefaultMapping();
+ }
+
+ public String getName() {
+ return getAttribute().attributeName();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return basicSetDefaultMapping(null, msgs);
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return basicSetSpecifiedMapping(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return getMappingKey();
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return getDefaultMapping();
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return getSpecifiedMapping();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ setDefaultMapping((IJavaAttributeMapping) newValue);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ setSpecifiedMapping((IJavaAttributeMapping) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ setDefaultMapping((IJavaAttributeMapping) null);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ setSpecifiedMapping((IJavaAttributeMapping) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return MAPPING_KEY_EDEFAULT == null ? mappingKey != null : !MAPPING_KEY_EDEFAULT.equals(mappingKey);
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return defaultMapping != null;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return specifiedMapping != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappingKey: ");
+ result.append(mappingKey);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IPersistentType getPersistentType() {
+ return (IPersistentType) this.eContainer();
+ }
+
+ public ITypeMapping typeMapping() {
+ return this.getPersistentType().getMapping();
+ }
+
+ private IJavaAttributeMappingProvider attributeMappingProviderFor(String attributeMappingKey) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.key() == attributeMappingKey) {
+ return provider;
+ }
+ }
+ throw new IllegalArgumentException("Unsupported attribute mapping key: " + attributeMappingKey);
+ }
+
+ private DeclarationAnnotationAdapter annotationAdapterForAttributeMappingKey(String attributeMappingKey) {
+ return this.attributeMappingProviderFor(attributeMappingKey).declarationAnnotationAdapter();
+ }
+
+ public Iterator<String> candidateMappingKeys() {
+ return new TransformationIterator<IJavaAttributeMappingProvider, String>(new ArrayIterator<IJavaAttributeMappingProvider>(this.attributeMappingProviders)) {
+ protected String transform(IJavaAttributeMappingProvider next) {
+ return next.key();
+ }
+ };
+ }
+
+ public Object getId() {
+ return IJavaContentNodes.PERSISTENT_ATTRIBUTE_ID;
+ }
+
+ public Attribute getAttribute() {
+ return this.attribute;
+ }
+
+ public ITextRange getTextRange() {
+ return this.attribute.textRange();
+ }
+
+ public boolean isFor(IMember member) {
+ return this.attribute.wraps(member);
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ String jpaKey = null;
+ if (this.specifiedMapping != null) {
+ jpaKey = this.specifiedMapping.getKey();
+ }
+ String javaKey = this.javaAttributeMappingKey(astRoot);
+ if (javaKey == null) { // no annotation
+ if (this.specifiedMapping != null) {
+ setSpecifiedMapping(null);
+ }
+ }
+ else if (jpaKey != javaKey) {
+ this.createAndSetMappingFromJava(javaKey);
+ }
+ if (getMapping() != null) {
+ getMapping().updateFromJava(astRoot);
+ }
+ }
+
+ private void createAndSetMappingFromJava(String key) {
+ this.setSpecifiedMappingGen(this.buildMapping(key));
+ this.specifiedMapping.initialize();
+ this.setMappingKeyInternal(this.specifiedMapping.getKey());
+ }
+
+ //A null key means there is no "mapping" annotation on the attribute.
+ //In this case check the attributeMappingProviders for one that the defaultApplies
+ //and create the mapping. If the key is not null then create the mapping
+ //based on the appropriate provider, otherwise return the a nullAttributeMapping
+ private IJavaAttributeMapping buildMapping(String key) {
+ if (key == null) {
+ return null;
+ }
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.key() == key) {
+ return provider.buildMapping(this.attribute);
+ }
+ }
+ return this.nullAttributeMappingProvider.buildMapping(this.attribute);
+ }
+
+ private String javaAttributeMappingKey(CompilationUnit astRoot) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (this.attribute.containsAnnotation(provider.declarationAnnotationAdapter(), astRoot)) {
+ return provider.key();
+ }
+ }
+ return null;
+ }
+
+ public String defaultKey() {
+ if (this.defaultMapping != null) {
+ return this.defaultMapping.getKey();
+ }
+ return null;
+ }
+
+ public String primaryKeyColumnName() {
+ if (getMapping() != null) {
+ return getMapping().primaryKeyColumnName();
+ }
+ return null;
+ }
+
+ public boolean isAttributeMappingDefault() {
+ return this.specifiedMapping == null;
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.defaultApplies(this.attribute, defaultsContext)) {
+ if (getDefaultMapping() != null) {
+ if (getDefaultMapping().getKey() == provider.key()) {
+ return;
+ }
+ }
+ setDefaultMapping(provider.buildMapping(this.attribute));
+ getDefaultMapping().updateFromJava(getAttribute().astRoot());
+ if (getSpecifiedMapping() == null) {
+ setMappingKeyInternal(getDefaultMapping().getKey());
+ }
+ return;
+ }
+ }
+ setDefaultMapping(this.nullAttributeMappingProvider.buildMapping(this.attribute));
+ getDefaultMapping().updateFromJava(getAttribute().astRoot());
+ if (getSpecifiedMapping() == null) {
+ setMappingKeyInternal(getDefaultMapping().getKey());
+ }
+ }
+} // JavaPersistentAttribute
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
new file mode 100644
index 0000000000..9f9f9ef211
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
@@ -0,0 +1,917 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.java;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;