[jbosstools-commits] JBoss Tools SVN: r22942 - in trunk/hibernatetools: plugins/org.jboss.tools.hibernate.jpt.core and 37 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Jun 23 07:53:29 EDT 2010


Author: dgeraskov
Date: 2010-06-23 07:53:25 -0400 (Wed, 23 Jun 2010)
New Revision: 22942

Added:
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmJoinTableJoiningStrategy.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyRelationshipReference.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyRelationshipReference.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlDefinition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneMapping2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneRelationshipReference2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0ContextNodeFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0Definition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlDefinition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0AnnotationDefinitionProvider.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformProvider.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpa2_0PlatformUiProvider.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/HibernateTableComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmEntityComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmIdMappingComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmEntityComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmIdMappingComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiDefinition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaResourceUiDefinition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiDefinition.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/platform/HibernateJpa2_0PlatformUiFactory.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.classpath
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.project
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jdt.core.prefs
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jpt.core.prefs
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.component
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.xml
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.hibernate.eclipse.console.prefs
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/ejb3-persistence.jar
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate-annotations.jar
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate3.jar
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/postgresql-8.4-701.jdbc3.jar
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/MANIFEST.MF
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/orm.xml
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/persistence.xml
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/JustData.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany1.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany2.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/ns/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/ns/NamingStrategy.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/schema.sql
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/testHibernateJpaOrmProject.launch
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaOrmModelTests.java
Removed:
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite2.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateTableComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/orm/details/
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaAllTests.java
Modified:
   trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertiesConstants.java
   trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertyPage.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/plugin.xml
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatform.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformProvider.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJptPlugin.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/NamingStrategyMappingTools.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaGeneratorContainerImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaIdMappingImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaJoinTableJoiningStrategy.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyRelationshipReference.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaQueryContainerImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaGenericGeneratorImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmEntityImpl.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToOneMapping.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlContextNodeFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/plugin.xml
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpaPlatformUiProvider.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateJavaEntityComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateIdMappingComposite.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/HibernateJavaUiFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/orm/HibernateOrmXmlUiFactory.java
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/wizard/GenerateInitWizardPage.java
   trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaModelTests.java
Log:
https://jira.jboss.org/browse/JBIDE-6473
Implement jpa2.0 support in hibernate tools plugins
Fixed some orm-mapping problems

Modified: trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertiesConstants.java
===================================================================
--- trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertiesConstants.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertiesConstants.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -30,5 +30,7 @@
 	public static final String HIBERNATE_CONSOLE_NODE = "org.hibernate.eclipse.console"; //$NON-NLS-1$
 
 	public static final String HIBERNATE_JPA_PLATFORM_ID = "hibernate"; //$NON-NLS-1$
+	
+	public static final String HIBERNATE_JPA2_0_PLATFORM_ID = "hibernate2_0"; //$NON-NLS-1$
 
 }

Modified: trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertyPage.java
===================================================================
--- trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertyPage.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/properties/HibernatePropertyPage.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -284,7 +284,8 @@
 	
 	private boolean isHibernateJpaProject(){
 		JpaProject jpaProject = (JpaProject) getProject().getAdapter(JpaProject.class);
-		return (jpaProject != null) && (jpaProject.getJpaPlatform().getId().equals(HibernatePropertiesConstants.HIBERNATE_JPA_PLATFORM_ID));
+		return (jpaProject != null) && ((jpaProject.getJpaPlatform().getId().equals(HibernatePropertiesConstants.HIBERNATE_JPA_PLATFORM_ID))
+				|| (jpaProject.getJpaPlatform().getId().equals(HibernatePropertiesConstants.HIBERNATE_JPA2_0_PLATFORM_ID)));
 	}
 
 	private IProject getProject() {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/plugin.xml
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/plugin.xml	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/plugin.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -8,6 +8,12 @@
 			default="false"
 			id="hibernate"
 			label="Hibernate">
+		</jpaPlatform>
+		<jpaPlatform 
+			factoryClass="org.jboss.tools.hibernate.jpt.core.internal.jpa2.HibernateJpa2_0PlatformFactory"
+			default="false"
+			id="hibernate2_0"
+			label="Hibernate jpa 2.0">
 		</jpaPlatform>		
 	</extension>
  <extension
@@ -30,9 +36,14 @@
 					<with variable="requestingProjectFacet">
 						<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jpt.jpa" forcePluginActivation="true"/>
 					</with>
-					<with variable="jpaPlatform">
-						<equals value="hibernate"/>
-					</with>
+					<or>
+						<with variable="jpaPlatform">
+							<equals value="hibernate"/>
+						</with>
+						<with variable="jpaPlatform">
+							<equals value="hibernate2_0"/>
+						</with>
+					</or>
 				</and>
 			</enablement>
 		</provider>

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateAbstractJpaFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,152 @@
+package org.jboss.tools.hibernate.jpt.core.internal;
+
+import org.eclipse.jpt.core.JpaProject;
+import org.eclipse.jpt.core.context.java.JavaBaseColumn;
+import org.eclipse.jpt.core.context.java.JavaBasicMapping;
+import org.eclipse.jpt.core.context.java.JavaColumn;
+import org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn;
+import org.eclipse.jpt.core.context.java.JavaEntity;
+import org.eclipse.jpt.core.context.java.JavaGeneratorContainer;
+import org.eclipse.jpt.core.context.java.JavaIdMapping;
+import org.eclipse.jpt.core.context.java.JavaJoinColumn;
+import org.eclipse.jpt.core.context.java.JavaJoinTable;
+import org.eclipse.jpt.core.context.java.JavaJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.core.context.java.JavaManyToManyMapping;
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.context.java.JavaPersistentType;
+import org.eclipse.jpt.core.context.java.JavaQueryContainer;
+import org.eclipse.jpt.core.context.java.JavaSecondaryTable;
+import org.eclipse.jpt.core.internal.AbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedNativeQuery;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedQuery;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.ForeignKeyImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaBasicMappingImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaColumnImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaDiscriminatorColumnImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntityImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaGeneratorContainerImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMappingImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinColumnImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToManyMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaParameter;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaQueryContainerImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaSecondaryTableImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTable;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTableImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedNativeQueryImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedQueryImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.IndexImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormula;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormulaImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGenerator;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGeneratorImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaIndex;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaParameter;
+
+public abstract class HibernateAbstractJpaFactory extends AbstractJpaFactory {
+	
+	// ********** Core Model **********
+	public JpaProject buildJpaProject(JpaProject.Config config){
+		return new HibernateJpaProject(config);
+	}
+
+	// ********** Java Context Model **********
+	@Override
+	public JavaEntity buildJavaEntity(JavaPersistentType parent) {
+		return new HibernateJavaEntityImpl(parent);
+	}
+	
+	@Override
+	public JavaIdMapping buildJavaIdMapping(JavaPersistentAttribute parent) {
+		return new HibernateJavaIdMappingImpl(parent);
+	}
+	
+	public JavaGenericGenerator buildJavaGenericGenerator(JavaJpaContextNode parent) {
+		return new JavaGenericGeneratorImpl(parent);
+	}
+	
+	@Override
+	public JavaDiscriminatorColumn buildJavaDiscriminatorColumn(
+			JavaEntity parent,
+			org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn.Owner owner) {
+		return new HibernateJavaDiscriminatorColumnImpl(parent, owner);
+	}
+	
+	public HibernateNamedQuery buildHibernateJavaNamedQuery(JavaJpaContextNode parent) {
+		return new HibernateNamedQueryImpl(parent);
+	}
+	
+	public HibernateNamedNativeQuery buildHibernateJavaNamedNativeQuery(JavaJpaContextNode parent) {
+		return new HibernateNamedNativeQueryImpl(parent);
+	}
+
+	public JavaParameter buildJavaParameter(JavaGenericGeneratorImpl javaGenericGeneratorImpl) {
+		return new HibernateJavaParameter(javaGenericGeneratorImpl);
+	}
+
+	public JavaDiscriminatorFormula buildJavaDiscriminatorFormula(
+			HibernateJavaEntity hibernateJavaEntity) {
+		return new JavaDiscriminatorFormulaImpl(hibernateJavaEntity);
+	}
+	
+	@Override
+	public JavaColumn buildJavaColumn(JavaJpaContextNode parent, JavaBaseColumn.Owner owner) {
+		return new HibernateJavaColumnImpl(parent, owner);
+	}
+
+	@Override
+	public JavaManyToManyMapping buildJavaManyToManyMapping(
+			JavaPersistentAttribute parent) {
+		//same for jpa2_0 and 1_0
+		return new HibernateJavaManyToManyMapping(parent);
+	}
+	
+	@Override
+	public JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent,
+			org.eclipse.jpt.core.context.java.JavaJoinColumn.Owner owner) {
+		return new HibernateJavaJoinColumnImpl(parent, owner);
+	}
+	
+	@Override
+	public JavaSecondaryTable buildJavaSecondaryTable(JavaEntity parent) {
+		return new HibernateJavaSecondaryTableImpl(parent);
+	}
+	
+	@Override
+	public JavaJoinTable buildJavaJoinTable(JavaJoinTableJoiningStrategy parent) {
+		return new HibernateJavaJoinTableImpl(parent);
+	}
+	
+	@Override
+	public HibernateJavaTable buildJavaTable(JavaEntity parent) {
+		return new HibernateJavaTableImpl(parent);
+	}
+	
+	@Override
+	public JavaBasicMapping buildJavaBasicMapping(JavaPersistentAttribute parent) {
+		return new HibernateJavaBasicMappingImpl(parent);
+	}
+	
+	@Override
+	public JavaQueryContainer buildJavaQueryContainer(JavaJpaContextNode parent) {
+		return new HibernateJavaQueryContainerImpl(parent);
+	}
+	
+	@Override
+	public JavaGeneratorContainer buildJavaGeneratorContainer(JavaJpaContextNode parent) {
+		return new HibernateJavaGeneratorContainerImpl(parent);
+	}
+	
+	public JavaIndex buildIndex(JavaJpaContextNode parent) {
+		return new IndexImpl(parent);
+	}
+
+	public ForeignKey buildForeignKey(JavaJpaContextNode parent) {
+		return new ForeignKeyImpl(parent);
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -10,147 +10,31 @@
   ******************************************************************************/
 package org.jboss.tools.hibernate.jpt.core.internal;
 
-import org.eclipse.jpt.core.JpaProject;
-import org.eclipse.jpt.core.context.java.JavaBaseColumn;
-import org.eclipse.jpt.core.context.java.JavaBasicMapping;
-import org.eclipse.jpt.core.context.java.JavaColumn;
-import org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn;
 import org.eclipse.jpt.core.context.java.JavaEmbeddable;
-import org.eclipse.jpt.core.context.java.JavaEntity;
-import org.eclipse.jpt.core.context.java.JavaGeneratorContainer;
-import org.eclipse.jpt.core.context.java.JavaIdMapping;
-import org.eclipse.jpt.core.context.java.JavaJoinColumn;
-import org.eclipse.jpt.core.context.java.JavaJoinTable;
-import org.eclipse.jpt.core.context.java.JavaJoinTableJoiningStrategy;
-import org.eclipse.jpt.core.context.java.JavaJpaContextNode;
-import org.eclipse.jpt.core.context.java.JavaManyToManyMapping;
 import org.eclipse.jpt.core.context.java.JavaManyToOneMapping;
 import org.eclipse.jpt.core.context.java.JavaOneToManyMapping;
 import org.eclipse.jpt.core.context.java.JavaOneToOneMapping;
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.context.java.JavaPersistentType;
-import org.eclipse.jpt.core.context.java.JavaQueryContainer;
-import org.eclipse.jpt.core.context.java.JavaSecondaryTable;
-import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping;
-import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping;
-import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping;
-import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping;
-import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
-import org.eclipse.jpt.core.internal.AbstractJpaFactory;
-import org.eclipse.jpt.core.resource.orm.XmlManyToMany;
-import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
-import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
-import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedNativeQuery;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedQuery;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.ForeignKeyImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaBasicMappingImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaColumnImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaDiscriminatorColumnImpl;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEmbeddable;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntityImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaGeneratorContainerImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMappingImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinColumnImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToManyMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToOneMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToManyMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToOneMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaParameter;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaQueryContainerImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaSecondaryTableImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTable;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTableImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedNativeQueryImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateNamedQueryImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.IndexImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormula;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaDiscriminatorFormulaImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGenerator;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGeneratorImpl;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaIndex;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaParameter;
-import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmManyToManyMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmManyToOneMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmOneToManyMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmOneToOneMapping;
 
 
 /**
  * @author Dmitry Geraskov
  *
  */
-public class HibernateJpaFactory extends AbstractJpaFactory {
+public class HibernateJpaFactory extends HibernateAbstractJpaFactory {
 	
-	// ********** Core Model **********
-	public JpaProject buildJpaProject(JpaProject.Config config){
-		return new HibernateJpaProject(config);
-	}
+	// ********** Hibernate Specific **********
 
-	// ********** Java Context Model **********
-	@Override
-	public JavaEntity buildJavaEntity(JavaPersistentType parent) {
-		return new HibernateJavaEntityImpl(parent);
-	}
-	
-	@Override
-	public JavaIdMapping buildJavaIdMapping(JavaPersistentAttribute parent) {
-		return new HibernateJavaIdMappingImpl(parent);
-	}
-	
-	public JavaGenericGenerator buildJavaGenericGenerator(JavaJpaContextNode parent) {
-		return new JavaGenericGeneratorImpl(parent);
-	}
-	
-	@Override
-	public JavaDiscriminatorColumn buildJavaDiscriminatorColumn(
-			JavaEntity parent,
-			org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn.Owner owner) {
-		return new HibernateJavaDiscriminatorColumnImpl(parent, owner);
-	}
-	
-	public HibernateNamedQuery buildHibernateJavaNamedQuery(JavaJpaContextNode parent) {
-		return new HibernateNamedQueryImpl(parent);
-	}
-	
-	public HibernateNamedNativeQuery buildHibernateJavaNamedNativeQuery(JavaJpaContextNode parent) {
-		return new HibernateNamedNativeQueryImpl(parent);
-	}
-
-	public JavaParameter buildJavaParameter(JavaGenericGeneratorImpl javaGenericGeneratorImpl) {
-		return new HibernateJavaParameter(javaGenericGeneratorImpl);
-	}
-
-	public JavaDiscriminatorFormula buildJavaDiscriminatorFormula(
-			HibernateJavaEntity hibernateJavaEntity) {
-		return new JavaDiscriminatorFormulaImpl(hibernateJavaEntity);
-	}
-	
 	public JavaEmbeddable buildJavaEmbeddable(JavaPersistentType parent) {
 		return new HibernateJavaEmbeddable(parent);
 	}
 	
 	@Override
-	public JavaColumn buildJavaColumn(JavaJpaContextNode parent, JavaBaseColumn.Owner owner) {
-		return new HibernateJavaColumnImpl(parent, owner);
-	}
-	
-	@Override
-	public JavaOneToManyMapping buildJavaOneToManyMapping(
-			JavaPersistentAttribute parent) {
-		return new HibernateJavaOneToManyMapping(parent);
-	}
-	
-	@Override
-	public JavaManyToManyMapping buildJavaManyToManyMapping(
-			JavaPersistentAttribute parent) {
-		return new HibernateJavaManyToManyMapping(parent);
-	}
-	
-	@Override
 	public JavaManyToOneMapping buildJavaManyToOneMapping(
 			JavaPersistentAttribute parent) {
 		return new HibernateJavaManyToOneMapping(parent);
@@ -163,67 +47,9 @@
 	}
 	
 	@Override
-	public JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent,
-			org.eclipse.jpt.core.context.java.JavaJoinColumn.Owner owner) {
-		return new HibernateJavaJoinColumnImpl(parent, owner);
+	public JavaOneToManyMapping buildJavaOneToManyMapping(
+			JavaPersistentAttribute parent) {
+		return new HibernateJavaOneToManyMapping(parent);
 	}
-	
-	@Override
-	public JavaSecondaryTable buildJavaSecondaryTable(JavaEntity parent) {
-		return new HibernateJavaSecondaryTableImpl(parent);
-	}
-	
-	@Override
-	public JavaJoinTable buildJavaJoinTable(JavaJoinTableJoiningStrategy parent) {
-		return new HibernateJavaJoinTableImpl(parent);
-	}
-	
-	@Override
-	public HibernateJavaTable buildJavaTable(JavaEntity parent) {
-		return new HibernateJavaTableImpl(parent);
-	}
-	
-	public JavaBasicMapping buildJavaBasicMapping(JavaPersistentAttribute parent) {
-		return new HibernateJavaBasicMappingImpl(parent);
-	}
-	
-	public JavaQueryContainer buildJavaQueryContainer(JavaJpaContextNode parent) {
-		return new HibernateJavaQueryContainerImpl(parent);
-	}
-	
-	public JavaGeneratorContainer buildJavaGeneratorContainer(JavaJpaContextNode parent) {
-		return new HibernateJavaGeneratorContainerImpl(parent);
-	}
-	
-	// ********** ORM Context Model **********
-	
-	
-	@SuppressWarnings("unchecked")
-	public OrmManyToManyMapping buildOrmManyToManyMapping(OrmPersistentAttribute parent, XmlManyToMany resourceMapping) {
-		return new HibernateOrmManyToManyMapping(parent, resourceMapping);
-	}
-	
-	@SuppressWarnings("unchecked")
-	public OrmManyToOneMapping buildOrmManyToOneMapping(OrmPersistentAttribute parent, XmlManyToOne resourceMapping) {
-		return new HibernateOrmManyToOneMapping(parent, resourceMapping);
-	}
-	
-	@SuppressWarnings("unchecked")
-	public OrmOneToManyMapping buildOrmOneToManyMapping(OrmPersistentAttribute parent, XmlOneToMany resourceMapping) {
-		return new HibernateOrmOneToManyMapping(parent, resourceMapping);
-	}
-	
-	@SuppressWarnings("unchecked")
-	public OrmOneToOneMapping buildOrmOneToOneMapping(OrmPersistentAttribute parent, XmlOneToOne resourceMapping) {
-		return new HibernateOrmOneToOneMapping(parent, resourceMapping);
-	}
 
-	public JavaIndex buildIndex(JavaJpaContextNode parent) {
-		return new IndexImpl(parent);
-	}
-
-	public ForeignKey buildForeignKey(JavaJpaContextNode parent) {
-		return new ForeignKeyImpl(parent);
-	}
-
 }

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatform.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatform.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatform.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -25,8 +25,10 @@
  */
 public class HibernateJpaPlatform extends GenericJpaPlatform {
 	
-	public static final String ID = "hibernate"; //$NON-NLS-1$
+	public static final String HIBERNATE_PLATFORM_ID = "hibernate"; //$NON-NLS-1$
 	
+	public static final String HIBERNATE2_0_PLATFORM_ID = "hibernate2_0"; //$NON-NLS-1$
+	
 	@Override
 	public ResourceDefinition getResourceDefinition(JpaResourceType resourceType) {
 		for (ResourceDefinition resourceDefinition : CollectionTools.iterable(resourceDefinitions())) {
@@ -41,9 +43,4 @@
 		super(id, jpaVersion, jpaFactory, jpaAnnotationProvider, platformProvider, jpaVariation);
 	}
 
-	@Override
-	public String getId() {
-		return ID;
-	}
-	
 }

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformFactory.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.core.JpaPlatform;
 import org.eclipse.jpt.core.JpaPlatformFactory;
 import org.eclipse.jpt.core.JpaPlatformVariation;
+import org.eclipse.jpt.core.JptCorePlugin;
 import org.eclipse.jpt.core.internal.GenericJpaAnnotationDefinitionProvider;
 import org.eclipse.jpt.core.internal.GenericJpaAnnotationProvider;
 import org.eclipse.jpt.core.internal.GenericJpaPlatformFactory.SimpleVersion;
@@ -45,7 +46,7 @@
 	
 	
 	private JpaPlatform.Version buildJpaVersion() {
-		return new SimpleVersion(HibernateJptPlugin.JPA_FACET_VERSION_1_0);
+		return new SimpleVersion(JptCorePlugin.JPA_FACET_VERSION_1_0);
 	}
 	
 	protected JpaFactory buildJpaFactory() {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformProvider.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformProvider.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJpaPlatformProvider.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -36,7 +36,7 @@
 import org.eclipse.jpt.core.internal.context.java.JavaOneToOneMappingDefinition;
 import org.eclipse.jpt.core.internal.context.java.JavaTransientMappingDefinition;
 import org.eclipse.jpt.core.internal.context.java.JavaVersionMappingDefinition;
-import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXmlDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmXmlDefinition;
 import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernatePersistenceXmlDefinition;
 
 /**
@@ -144,7 +144,7 @@
 	protected ResourceDefinition[] buildResourceDefinitions() {
 		return new ResourceDefinition[] {
 			HibernatePersistenceXmlDefinition.instance(),
-			GenericOrmXmlDefinition.instance()};
+			HibernateOrmXmlDefinition.instance()};
 	}
 	
 

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJptPlugin.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJptPlugin.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/HibernateJptPlugin.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -39,8 +39,6 @@
 	
 	public static final String ID = "org.jboss.tools.hibernate.jpt.core"; //$NON-NLS-1$
 	
-	public static final String JPA_FACET_VERSION_1_0 = "1.0"; //$NON-NLS-1$
-	
 	private static HibernateJptPlugin inst = null;
 	
     public static HibernateJptPlugin getDefault() {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -28,9 +28,9 @@
 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
 import org.eclipse.jpt.core.JptCorePlugin;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
+import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent.Type;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
 import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent;
-import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent.Type;
 import org.hibernate.console.preferences.ConsoleConfigurationPreferences.ConfigurationMode;
 import org.hibernate.eclipse.console.utils.LaunchHelper;
 import org.hibernate.eclipse.console.utils.ProjectUtils;
@@ -47,7 +47,8 @@
 			IProject project = event.getProject().getProject();
 			IProjectFacetActionEvent pEvent = (IProjectFacetActionEvent)event;
 			if (pEvent.getProjectFacet().getId().equals(JptCorePlugin.FACET_ID)
-					&& HibernateJpaPlatform.ID.equals(JptCorePlugin.getJpaPlatformId(project))){
+					&& (HibernateJpaPlatform.HIBERNATE_PLATFORM_ID.equals(JptCorePlugin.getJpaPlatformId(project))
+							|| HibernateJpaPlatform.HIBERNATE2_0_PLATFORM_ID.equals(JptCorePlugin.getJpaPlatformId(project)))){
 				if (checkPreConditions(project)){
 					buildConsoleConfiguration(project);
 				}				
@@ -96,7 +97,7 @@
 	protected void buildConsoleConfiguration(IProject project){
 		ILaunchManager lm = DebugPlugin.getDefault().getLaunchManager();
 		ILaunchConfigurationType lct = LaunchHelper.getHibernateLaunchConfigsType();
-		String launchName = lm.generateUniqueLaunchConfigurationNameFrom(project.getName());
+		String launchName = lm.generateLaunchConfigurationName(project.getName());
 		ILaunchConfigurationWorkingCopy wc;
 		try {
 			wc = lct.newInstance(null, launchName);

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/NamingStrategyMappingTools.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/NamingStrategyMappingTools.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/NamingStrategyMappingTools.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -37,6 +37,10 @@
 		if (relationshipMapping == null) {
 			return null;
 		}
+		
+		if (!(relationshipReference.getTypeMapping() instanceof Entity))
+			return null;//could be JavaNullTypeMapping
+		
 		Entity ownerEntity = (Entity) relationshipReference.getTypeMapping();
 		org.eclipse.jpt.core.context.Table ownerTable = ownerEntity.getTable();
 		if (ownerTable == null) {

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaManyToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,162 @@
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.context.java.AbstractJavaManyToOneMapping;
+import org.eclipse.jpt.core.utility.TextRange;
+import org.eclipse.jpt.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
+import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
+
+public abstract class AbstractHibernateJavaManyToOneMapping extends
+		AbstractJavaManyToOneMapping implements ForeignKeyHolder {
+
+	protected ForeignKey foreignKey;
+
+	public AbstractHibernateJavaManyToOneMapping(JavaPersistentAttribute parent) {
+		super(parent);
+	}
+
+	@Override
+	protected void addSupportingAnnotationNamesTo(Vector<String> names) {
+		super.addSupportingAnnotationNamesTo(names);
+		names.add(Hibernate.FOREIGN_KEY);
+	}
+
+	@Override
+	protected HibernateAbstractJpaFactory getJpaFactory() {
+		return (HibernateAbstractJpaFactory) super.getJpaFactory();
+	}
+
+	@Override
+	protected void initialize() {
+		super.initialize();
+		this.initializeForeignKey();
+	}
+
+	@Override
+	protected void update() {
+		super.update();
+		this.updateForeignKey();
+	}
+
+	// *** foreignKey
+
+	protected void initializeForeignKey() {
+		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
+		if (foreignKeyResource != null) {
+			this.foreignKey = buildForeignKey(foreignKeyResource);
+		}
+	}
+
+	protected void updateForeignKey() {
+		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
+		if (foreignKeyResource == null) {
+			if (getForeignKey() != null) {
+				setForeignKey(null);
+			}
+		} else {
+			if (getForeignKey() == null) {
+				setForeignKey(buildForeignKey(foreignKeyResource));
+			} else {
+				getForeignKey().update(foreignKeyResource);
+			}
+		}
+	}
+
+	public ForeignKey addForeignKey() {
+		if (getForeignKey() != null) {
+			throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
+		}
+		this.foreignKey = getJpaFactory().buildForeignKey(this);
+		ForeignKeyAnnotation foreignKeyResource = (ForeignKeyAnnotation) getResourcePersistentAttribute()
+				.addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+		this.foreignKey.initialize(foreignKeyResource);
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, null, this.foreignKey);
+		return this.foreignKey;
+	}
+
+	public ForeignKey getForeignKey() {
+		return this.foreignKey;
+	}
+
+	protected void setForeignKey(ForeignKey newForeignKey) {
+		ForeignKey oldForeignKey = this.foreignKey;
+		this.foreignKey = newForeignKey;
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
+	}
+
+	public void removeForeignKey() {
+		if (getForeignKey() == null) {
+			throw new IllegalStateException(
+					"foreignKey does not exist, cannot be removed"); //$NON-NLS-1$
+		}
+		ForeignKey oldForeignKey = this.foreignKey;
+		this.foreignKey = null;
+		this.getResourcePersistentAttribute().removeAnnotation(
+				ForeignKeyAnnotation.ANNOTATION_NAME);
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, null);
+	}
+
+	protected ForeignKey buildForeignKey(ForeignKeyAnnotation foreignKeyResource) {
+		ForeignKey foreignKey = getJpaFactory().buildForeignKey(this);
+		foreignKey.initialize(foreignKeyResource);
+		return foreignKey;
+	}
+
+	protected ForeignKeyAnnotation getResourceForeignKey() {
+		return (ForeignKeyAnnotation) this.getResourcePersistentAttribute()
+				.getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+	}
+
+	public Table getForeignKeyDbTable() {
+		return getTypeMapping().getPrimaryDbTable();
+	}
+
+	@Override
+	public void validate(List<IMessage> messages, IReporter reporter,
+			CompilationUnit astRoot) {
+		super.validate(messages, reporter, astRoot);
+		this.validateForeignKey(messages, astRoot);
+	}
+
+	protected void validateForeignKey(List<IMessage> messages,
+			CompilationUnit astRoot) {
+		Table table = getTypeMapping().getPrimaryDbTable();
+		if (!shouldValidateAgainstDatabase() || foreignKey == null
+				|| table == null) {
+			return;
+		}
+		Iterator<org.eclipse.jpt.db.ForeignKey> fks = table.getForeignKeys()
+				.iterator();
+		while (fks.hasNext()) {
+			org.eclipse.jpt.db.ForeignKey fk = (org.eclipse.jpt.db.ForeignKey) fks
+					.next();
+			if (foreignKey.getName().equals(fk.getIdentifier())) {
+				return;
+			}
+		}
+		TextRange textRange = this.getResourceForeignKey().getNameTextRange(
+				astRoot);
+		IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
+				Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {
+						foreignKey.getName(),
+						getTypeMapping().getPrimaryTableName() },
+				this.foreignKey);
+		message.setLineNo(textRange.getLineNumber());
+		message.setOffset(textRange.getOffset());
+		message.setLength(textRange.getLength());
+		messages.add(message);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/AbstractHibernateJavaOneToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,161 @@
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.context.java.AbstractJavaOneToOneMapping;
+import org.eclipse.jpt.core.utility.TextRange;
+import org.eclipse.jpt.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
+import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
+import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
+import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
+
+public abstract class AbstractHibernateJavaOneToOneMapping extends
+		AbstractJavaOneToOneMapping implements ForeignKeyHolder {
+
+	protected ForeignKey foreignKey;
+
+	public AbstractHibernateJavaOneToOneMapping(JavaPersistentAttribute parent) {
+		super(parent);
+	}
+
+	@Override
+	protected void addSupportingAnnotationNamesTo(Vector<String> names) {
+		super.addSupportingAnnotationNamesTo(names);
+		names.add(Hibernate.FOREIGN_KEY);
+	}
+
+	@Override
+	protected HibernateJpaFactory getJpaFactory() {
+		return (HibernateJpaFactory) super.getJpaFactory();
+	}
+
+	@Override
+	protected void initialize() {
+		super.initialize();
+		this.initializeForeignKey();
+	}
+
+	@Override
+	protected void update() {
+		super.update();
+		this.updateForeignKey();
+	}
+
+	// *** foreignKey
+
+	protected void initializeForeignKey() {
+		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
+		if (foreignKeyResource != null) {
+			this.foreignKey = buildForeignKey(foreignKeyResource);
+		}
+	}
+
+	protected void updateForeignKey() {
+		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
+		if (foreignKeyResource == null) {
+			if (getForeignKey() != null) {
+				setForeignKey(null);
+			}
+		} else {
+			if (getForeignKey() == null) {
+				setForeignKey(buildForeignKey(foreignKeyResource));
+			} else {
+				getForeignKey().update(foreignKeyResource);
+			}
+		}
+	}
+
+	public ForeignKey addForeignKey() {
+		if (getForeignKey() != null) {
+			throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
+		}
+		this.foreignKey = getJpaFactory().buildForeignKey(this);
+		ForeignKeyAnnotation foreignKeyResource = (ForeignKeyAnnotation) getResourcePersistentAttribute()
+				.addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+		this.foreignKey.initialize(foreignKeyResource);
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, null, this.foreignKey);
+		return this.foreignKey;
+	}
+
+	public ForeignKey getForeignKey() {
+		return this.foreignKey;
+	}
+
+	protected void setForeignKey(ForeignKey newForeignKey) {
+		ForeignKey oldForeignKey = this.foreignKey;
+		this.foreignKey = newForeignKey;
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
+	}
+
+	public void removeForeignKey() {
+		if (getForeignKey() == null) {
+			throw new IllegalStateException(
+					"foreignKey does not exist, cannot be removed"); //$NON-NLS-1$
+		}
+		ForeignKey oldForeignKey = this.foreignKey;
+		this.foreignKey = null;
+		this.getResourcePersistentAttribute().removeAnnotation(
+				ForeignKeyAnnotation.ANNOTATION_NAME);
+		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, null);
+	}
+
+	protected ForeignKey buildForeignKey(ForeignKeyAnnotation foreignKeyResource) {
+		ForeignKey foreignKey = getJpaFactory().buildForeignKey(this);
+		foreignKey.initialize(foreignKeyResource);
+		return foreignKey;
+	}
+
+	protected ForeignKeyAnnotation getResourceForeignKey() {
+		return (ForeignKeyAnnotation) this.getResourcePersistentAttribute()
+				.getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
+	}
+
+	public Table getForeignKeyDbTable() {
+		return getTypeMapping().getPrimaryDbTable();
+	}
+
+	@Override
+	public void validate(List<IMessage> messages, IReporter reporter,
+			CompilationUnit astRoot) {
+		super.validate(messages, reporter, astRoot);
+		this.validateForeignKey(messages, astRoot);
+	}
+
+	protected void validateForeignKey(List<IMessage> messages,
+			CompilationUnit astRoot) {
+		Table table = getTypeMapping().getPrimaryDbTable();
+		if (!shouldValidateAgainstDatabase() || foreignKey == null
+				|| table == null) {
+			return;
+		}
+		Iterator<org.eclipse.jpt.db.ForeignKey> fks = table.getForeignKeys()
+				.iterator();
+		while (fks.hasNext()) {
+			org.eclipse.jpt.db.ForeignKey fk = (org.eclipse.jpt.db.ForeignKey) fks
+					.next();
+			if (foreignKey.getName().equals(fk.getIdentifier())) {
+				return;
+			}
+		}
+		TextRange textRange = this.getResourceForeignKey().getNameTextRange(
+				astRoot);
+		IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY,
+				Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {
+						foreignKey.getName(),
+						getTypeMapping().getPrimaryTableName() },
+				this.foreignKey);
+		message.setLineNo(textRange.getLineNumber());
+		message.setOffset(textRange.getOffset());
+		message.setLength(textRange.getLength());
+		messages.add(message);
+	}
+}
\ No newline at end of file

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaBasicMappingImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -15,7 +15,7 @@
 
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.internal.context.java.AbstractJavaBasicMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.context.Generated;
 import org.jboss.tools.hibernate.jpt.core.internal.context.GenerationTime;
 import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
@@ -44,8 +44,8 @@
 	}
 	
 	@Override
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) super.getJpaFactory();
+	protected HibernateAbstractJpaFactory getJpaFactory() {
+		return (HibernateAbstractJpaFactory) super.getJpaFactory();
 	}
 	
 	@Override

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaEntityImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -23,7 +23,9 @@
 import org.eclipse.jpt.core.context.java.JavaPersistentType;
 import org.eclipse.jpt.core.internal.context.java.AbstractJavaEntity;
 import org.eclipse.jpt.core.internal.jpa2.context.java.NullJavaCacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.CacheableHolder2_0;
 import org.eclipse.jpt.core.jpa2.context.java.JavaCacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceUnit2_0;
 import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.utility.Filter;
@@ -34,7 +36,7 @@
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 import org.hibernate.cfg.NamingStrategy;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaProject;
 import org.jboss.tools.hibernate.jpt.core.internal.HibernateJptPlugin;
 import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
@@ -80,8 +82,8 @@
 		this.updateForeignKey();
 	}
 	
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) this.getJpaPlatform().getJpaFactory();
+	protected HibernateAbstractJpaFactory getJpaFactory() {
+		return (HibernateAbstractJpaFactory) this.getJpaPlatform().getJpaFactory();
 	}
 	
 	@Override
@@ -435,11 +437,15 @@
 	}
 
 	public JavaCacheable2_0 getCacheable() {
-		return cachable;
+		return this.cachable;
 	}
 
-	public boolean calculateDefaultCacheable() {
-		return false;
+	public boolean calculateDefaultCacheable() {		
+		CacheableHolder2_0 parentEntity = (CacheableHolder2_0) getParentEntity();
+		if (parentEntity != null) {
+			return parentEntity.getCacheable().isCacheable();
+		}
+		return ((PersistenceUnit2_0) getPersistenceUnit()).calculateDefaultCacheable();
 	}
 	
 }

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaGeneratorContainerImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaGeneratorContainerImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaGeneratorContainerImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -22,7 +22,7 @@
 import org.eclipse.jpt.core.resource.java.NestableAnnotation;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.iterators.CloneListIterator;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.context.GenericGenerator;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorAnnotation;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorsAnnotation;
@@ -42,8 +42,8 @@
 		this.genericGenerators = new ArrayList<JavaGenericGenerator>();
 	}
 	
-	public HibernateJpaFactory getJpaFactory(){
-		return (HibernateJpaFactory)super.getJpaFactory();
+	public HibernateAbstractJpaFactory getJpaFactory(){
+		return (HibernateAbstractJpaFactory)super.getJpaFactory();
 	}
 	
 	@Override

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaIdMappingImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaIdMappingImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaIdMappingImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -14,7 +14,7 @@
 
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.internal.context.java.AbstractJavaIdMapping;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorAnnotation;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.IndexAnnotation;
@@ -49,8 +49,8 @@
 	}
 	
 	@Override
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) super.getJpaFactory();
+	protected HibernateAbstractJpaFactory getJpaFactory() {
+		return (HibernateAbstractJpaFactory) super.getJpaFactory();
 	}
 	
 	@Override
@@ -87,7 +87,7 @@
 	}
 	
 	protected JavaGenericGenerator buildGenericGenerator(GenericGeneratorAnnotation genericGeneratorResource) {
-		JavaGenericGenerator generator = ((HibernateJpaFactory) getJpaFactory()).buildJavaGenericGenerator(this);
+		JavaGenericGenerator generator = ((HibernateAbstractJpaFactory) getJpaFactory()).buildJavaGenericGenerator(this);
 		generator.initialize(genericGeneratorResource);
 		return generator;
 	}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaJoinTableJoiningStrategy.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaJoinTableJoiningStrategy.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaJoinTableJoiningStrategy.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -29,6 +29,7 @@
 		super(parent);
 	}
 	
+	@Override
 	public String getJoinTableDefaultName() {
 		return NamingStrategyMappingTools.buildJoinTableDefaultName(getRelationshipReference());
 	}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToManyMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -18,7 +18,7 @@
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.context.java.JavaRelationshipReference;
-import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaManyToManyMapping;
+import org.eclipse.jpt.core.internal.context.java.AbstractJavaManyToManyMapping;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.db.Table;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -36,7 +36,7 @@
  */
  
 public class HibernateJavaManyToManyMapping extends
-		GenericJavaManyToManyMapping implements ForeignKeyHolder{
+AbstractJavaManyToManyMapping implements ForeignKeyHolder{
 	
 	protected ForeignKey foreignKey;
 

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaManyToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -11,160 +11,23 @@
 
 package org.jboss.tools.hibernate.jpt.core.internal.context.java;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaManyToOneMapping;
-import org.eclipse.jpt.core.utility.TextRange;
-import org.eclipse.jpt.db.Table;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
-import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
-import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
+import org.eclipse.jpt.core.internal.context.java.GenericJavaManyToOneRelationshipReference;
+import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneRelationshipReference2_0;
 
 /**
  * @author Dmitry Geraskov
  *
  */
-public class HibernateJavaManyToOneMapping extends GenericJavaManyToOneMapping
-implements ForeignKeyHolder {
+public class HibernateJavaManyToOneMapping extends AbstractHibernateJavaManyToOneMapping {
 
-	protected ForeignKey foreignKey;
-
 	public HibernateJavaManyToOneMapping(JavaPersistentAttribute parent) {
 		super(parent);
 	}
 	
 	@Override
-	protected void addSupportingAnnotationNamesTo(Vector<String> names) {
-		super.addSupportingAnnotationNamesTo(names);
-		names.add(Hibernate.FOREIGN_KEY);
-	}
-	
-	@Override
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) super.getJpaFactory();
-	}
-	
-	@Override
-	protected void initialize() {
-		super.initialize();
-		this.initializeForeignKey();
-	}
-	
-	@Override
-	protected void update() {
-		super.update();
-		this.updateForeignKey();
-	}
-	
+	protected JavaManyToOneRelationshipReference2_0 buildRelationshipReference() {
+		return new GenericJavaManyToOneRelationshipReference(this);
+	}	
 
-	
-	// *** foreignKey
-	
-	protected void initializeForeignKey() {
-		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
-		if (foreignKeyResource != null) {
-			this.foreignKey = buildForeignKey(foreignKeyResource);
-		}
-	}
-	
-	protected void updateForeignKey() {
-		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
-		if (foreignKeyResource == null) {
-			if (getForeignKey() != null) {
-				setForeignKey(null);
-			}
-		}
-		else {
-			if (getForeignKey() == null) {
-				setForeignKey(buildForeignKey(foreignKeyResource));
-			}
-			else {
-				getForeignKey().update(foreignKeyResource);
-			}
-		}
-	}
-	
-	public ForeignKey addForeignKey() {
-		if (getForeignKey() != null) {
-			throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
-		}
-		this.foreignKey = getJpaFactory().buildForeignKey(this);
-		ForeignKeyAnnotation foreignKeyResource = (ForeignKeyAnnotation) getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-		this.foreignKey.initialize(foreignKeyResource);
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, null, this.foreignKey);
-		return this.foreignKey;
-	}
-
-	public ForeignKey getForeignKey() {
-		return this.foreignKey;
-	}
-	
-	protected void setForeignKey(ForeignKey newForeignKey) {
-		ForeignKey oldForeignKey = this.foreignKey;
-		this.foreignKey = newForeignKey;
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
-	}
-
-	public void removeForeignKey() {
-		if (getForeignKey() == null) {
-			throw new IllegalStateException("foreignKey does not exist, cannot be removed"); //$NON-NLS-1$
-		}
-		ForeignKey oldForeignKey = this.foreignKey;
-		this.foreignKey = null;
-		this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, null);
-	}
-	
-	protected ForeignKey buildForeignKey(ForeignKeyAnnotation foreignKeyResource) {
-		ForeignKey foreignKey = getJpaFactory().buildForeignKey(this);
-		foreignKey.initialize(foreignKeyResource);
-		return foreignKey;
-	}
-	
-	protected ForeignKeyAnnotation getResourceForeignKey() {
-		return (ForeignKeyAnnotation) this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-	}
-	
-	public Table getForeignKeyDbTable() {
-		return getTypeMapping().getPrimaryDbTable();
-	}
-	
-	@Override
-	public void validate(List<IMessage> messages, IReporter reporter,
-			CompilationUnit astRoot) {
-		super.validate(messages, reporter, astRoot);
-		this.validateForeignKey(messages, astRoot);
-	}
-
-	protected void validateForeignKey(List<IMessage> messages, CompilationUnit astRoot) {
-		Table table = getTypeMapping().getPrimaryDbTable();
-		if (!shouldValidateAgainstDatabase() || foreignKey == null || table == null ){
-			return;
-		}		
-		Iterator<org.eclipse.jpt.db.ForeignKey> fks = table.getForeignKeys().iterator();
-		while (fks.hasNext()) {
-			org.eclipse.jpt.db.ForeignKey fk = (org.eclipse.jpt.db.ForeignKey) fks.next();
-			if (foreignKey.getName().equals(fk.getIdentifier())){
-				return;
-			}
-		}
-		TextRange textRange = this.getResourceForeignKey().getNameTextRange(astRoot);
-		IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY, 
-				Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {foreignKey.getName(), getTypeMapping().getPrimaryTableName()},
-				this.foreignKey);
-		message.setLineNo(textRange.getLineNumber());
-		message.setOffset(textRange.getOffset());
-		message.setLength(textRange.getLength());
-		messages.add(message);		
-	}
-
 }

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
+ * Copyright (c) 2010 Red Hat, Inc.
  * Distributed under license by Red Hat, Inc. All rights reserved.
  * This program is made available under the terms of the
  * Eclipse Public License v1.0 which accompanies this distribution,
@@ -8,7 +8,6 @@
  * Contributor:
  *     Red Hat, Inc. - initial API and implementation
  ******************************************************************************/
-
 package org.jboss.tools.hibernate.jpt.core.internal.context.java;
 
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
@@ -21,13 +20,16 @@
  */
 public class HibernateJavaOneToManyMapping extends GenericJavaOneToManyMapping {
 
+	/**
+	 * @param parent
+	 */
 	public HibernateJavaOneToManyMapping(JavaPersistentAttribute parent) {
 		super(parent);
 	}
 	
 	@Override
 	protected JavaRelationshipReference buildRelationshipReference() {
-		return super.buildRelationshipReference();
+		return new HibernateJavaOneToManyRelationshipReference(this);
 	}
 
 }

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyRelationshipReference.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyRelationshipReference.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToManyRelationshipReference.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -29,6 +29,7 @@
 		super(parent);
 	}
 	
+	@Override
 	protected JavaJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
 		return new HibernateJavaJoinTableJoiningStrategy(this);
 	}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaOneToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -11,171 +11,25 @@
 
 package org.jboss.tools.hibernate.jpt.core.internal.context.java;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaOneToOneMapping;
-import org.eclipse.jpt.core.utility.TextRange;
-import org.eclipse.jpt.db.Table;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKey;
-import org.jboss.tools.hibernate.jpt.core.internal.context.ForeignKeyHolder;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
-import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
-import org.jboss.tools.hibernate.jpt.core.internal.context.basic.Hibernate;
+import org.eclipse.jpt.core.internal.context.java.GenericJavaOneToOneRelationshipReference;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneRelationshipReference2_0;
 
 /**
  * @author Dmitry Geraskov
  *
  */
-public class HibernateJavaOneToOneMapping extends GenericJavaOneToOneMapping
-implements ForeignKeyHolder {
+public class HibernateJavaOneToOneMapping extends AbstractHibernateJavaOneToOneMapping {
 
-	protected ForeignKey foreignKey;
-
 	public HibernateJavaOneToOneMapping(JavaPersistentAttribute parent) {
 		super(parent);
 	}
-	
-	/*@Override
-	public String getJoinTableDefaultName() {
-		return NamingStrategyMappingTools.buildJoinTableDefaultName(this);
-	}
-	
-	@Override
-	protected JavaRelationshipReference buildRelationshipReference() {
-		return new HibernateJavaOneToOneRelationshipReference(this);
-	}*/
-	
-	@Override
-	protected void addSupportingAnnotationNamesTo(Vector<String> names) {
-		super.addSupportingAnnotationNamesTo(names);
-		names.add(Hibernate.FOREIGN_KEY);
-	}
-	
-	@Override
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) super.getJpaFactory();
-	}
-	
-	@Override
-	protected void initialize() {
-		super.initialize();
-		this.initializeForeignKey();
-	}
-	
-	@Override
-	protected void update() {
-		super.update();
-		this.updateForeignKey();
-	}
-	
 
-	
-	// *** foreignKey
-	
-	protected void initializeForeignKey() {
-		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
-		if (foreignKeyResource != null) {
-			this.foreignKey = buildForeignKey(foreignKeyResource);
-		}
-	}
-	
-	protected void updateForeignKey() {
-		ForeignKeyAnnotation foreignKeyResource = getResourceForeignKey();
-		if (foreignKeyResource == null) {
-			if (getForeignKey() != null) {
-				setForeignKey(null);
-			}
-		}
-		else {
-			if (getForeignKey() == null) {
-				setForeignKey(buildForeignKey(foreignKeyResource));
-			}
-			else {
-				getForeignKey().update(foreignKeyResource);
-			}
-		}
-	}
-	
-	public ForeignKey addForeignKey() {
-		if (getForeignKey() != null) {
-			throw new IllegalStateException("foreignKey already exists"); //$NON-NLS-1$
-		}
-		this.foreignKey = getJpaFactory().buildForeignKey(this);
-		ForeignKeyAnnotation foreignKeyResource = (ForeignKeyAnnotation) getResourcePersistentAttribute().addAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-		this.foreignKey.initialize(foreignKeyResource);
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, null, this.foreignKey);
-		return this.foreignKey;
-	}
-
-	public ForeignKey getForeignKey() {
-		return this.foreignKey;
-	}
-	
-	protected void setForeignKey(ForeignKey newForeignKey) {
-		ForeignKey oldForeignKey = this.foreignKey;
-		this.foreignKey = newForeignKey;
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, newForeignKey);
-	}
-
-	public void removeForeignKey() {
-		if (getForeignKey() == null) {
-			throw new IllegalStateException("foreignKey does not exist, cannot be removed"); //$NON-NLS-1$
-		}
-		ForeignKey oldForeignKey = this.foreignKey;
-		this.foreignKey = null;
-		this.getResourcePersistentAttribute().removeAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-		firePropertyChanged(FOREIGN_KEY_PROPERTY, oldForeignKey, null);
-	}
-	
-	protected ForeignKey buildForeignKey(ForeignKeyAnnotation foreignKeyResource) {
-		ForeignKey foreignKey = getJpaFactory().buildForeignKey(this);
-		foreignKey.initialize(foreignKeyResource);
-		return foreignKey;
-	}
-	
-	protected ForeignKeyAnnotation getResourceForeignKey() {
-		return (ForeignKeyAnnotation) this.getResourcePersistentAttribute().getAnnotation(ForeignKeyAnnotation.ANNOTATION_NAME);
-	}
-	
-	public Table getForeignKeyDbTable() {
-		return getTypeMapping().getPrimaryDbTable();
-	}
-	
 	@Override
-	public void validate(List<IMessage> messages, IReporter reporter,
-			CompilationUnit astRoot) {
-		super.validate(messages, reporter, astRoot);
-		this.validateForeignKey(messages, astRoot);
+	protected JavaOneToOneRelationshipReference2_0 buildRelationshipReference() {
+		return new GenericJavaOneToOneRelationshipReference(this);
 	}
 
-	protected void validateForeignKey(List<IMessage> messages, CompilationUnit astRoot) {
-		Table table = getTypeMapping().getPrimaryDbTable();
-		if (!shouldValidateAgainstDatabase() || foreignKey == null || table == null ){
-			return;
-		}		
-		Iterator<org.eclipse.jpt.db.ForeignKey> fks = table.getForeignKeys().iterator();
-		while (fks.hasNext()) {
-			org.eclipse.jpt.db.ForeignKey fk = (org.eclipse.jpt.db.ForeignKey) fks.next();
-			if (foreignKey.getName().equals(fk.getIdentifier())){
-				return;
-			}
-		}
-		TextRange textRange = this.getResourceForeignKey().getNameTextRange(astRoot);
-		IMessage message = new LocalMessage(IMessage.HIGH_SEVERITY, 
-				Messages.UNRESOLVED_FOREIGN_KEY_NAME, new String[] {foreignKey.getName(), getTypeMapping().getPrimaryTableName()},
-				this.foreignKey);
-		message.setLineNo(textRange.getLineNumber());
-		message.setOffset(textRange.getOffset());
-		message.setLength(textRange.getLength());
-		messages.add(message);		
-	}
 
 }
 

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaQueryContainerImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaQueryContainerImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/HibernateJavaQueryContainerImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -25,7 +25,7 @@
 import org.eclipse.jpt.core.resource.java.NestableAnnotation;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.iterators.CloneListIterator;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedNativeQuery;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedQuery;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedNativeQueriesAnnotation;
@@ -51,8 +51,8 @@
 		this.hibernateNamedNativeQueries = new ArrayList<HibernateNamedNativeQuery>();
 	}
 	
-	public HibernateJpaFactory getJpaFactory(){
-		return (HibernateJpaFactory)super.getJpaFactory();
+	public HibernateAbstractJpaFactory getJpaFactory(){
+		return (HibernateAbstractJpaFactory)super.getJpaFactory();
 	}
 	
 	public void initialize(JavaResourcePersistentMember jrpm) {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaGenericGeneratorImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaGenericGeneratorImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaGenericGeneratorImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -26,11 +26,11 @@
 import org.eclipse.jpt.utility.internal.iterators.CloneListIterator;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
 import org.jboss.tools.hibernate.jpt.core.internal.context.GenericGenerator;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
 import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
 import org.jboss.tools.hibernate.jpt.core.internal.context.Parameter;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorAnnotation;
 import org.jboss.tools.hibernate.jpt.core.internal.resource.java.ParameterAnnotation;
 
@@ -200,8 +200,8 @@
 	}
 	
 	@Override
-	protected HibernateJpaFactory getJpaFactory() {
-		return (HibernateJpaFactory) super.getJpaFactory();
+	protected HibernateAbstractJpaFactory getJpaFactory() {
+		return (HibernateAbstractJpaFactory) super.getJpaFactory();
 	}
 	
 	//************************ parameters ***********************

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneRelationshipReference2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.AbstractHibernateJavaManyToOneMapping;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaManyToOneMapping2_0 extends AbstractHibernateJavaManyToOneMapping {
+
+	public HibernateJavaManyToOneMapping2_0(JavaPersistentAttribute parent) {
+		super(parent);
+	}
+	
+	@Override
+	protected JavaManyToOneRelationshipReference2_0 buildRelationshipReference() {
+		return new HibernateJavaManyToOneRelationshipReference2_0(this);
+	}	
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaManyToOneRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaJoinColumnJoiningStrategy;
+import org.eclipse.jpt.core.context.java.JavaJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaManyToOneRelationshipReference2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinColumnJoiningStrategy;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaManyToOneRelationshipReference2_0 extends
+		GenericJavaManyToOneRelationshipReference2_0 {
+
+	/**
+	 * @param parent
+	 */
+	public HibernateJavaManyToOneRelationshipReference2_0(
+			JavaManyToOneMapping2_0 parent) {
+		super(parent);
+	}
+	
+	@Override
+	protected JavaJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() {
+		return new HibernateJavaJoinColumnJoiningStrategy(this);
+	}
+	
+	@Override
+	protected JavaJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateJavaJoinTableJoiningStrategy(this);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.context.java.JavaRelationshipReference;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToManyMapping2_0;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaOneToManyMapping2_0 extends
+		GenericJavaOneToManyMapping2_0 {
+
+	/**
+	 * @param parent
+	 */
+	public HibernateJavaOneToManyMapping2_0(JavaPersistentAttribute parent) {
+		super(parent);
+	}
+	
+	@Override
+	protected JavaRelationshipReference buildRelationshipReference() {
+		return new HibernateJavaOneToManyRelationshipReference2_0(this);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToManyRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.java.JavaOneToManyMapping;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToManyRelationshipReference2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaOneToManyRelationshipReference2_0 extends
+		GenericJavaOneToManyRelationshipReference2_0 {
+
+	/**
+	 * @param parent
+	 */
+	public HibernateJavaOneToManyRelationshipReference2_0(
+			JavaOneToManyMapping parent) {
+		super(parent);
+	}
+	
+	@Override
+	protected JavaJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateJavaJoinTableJoiningStrategy(this);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneRelationshipReference2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.AbstractHibernateJavaOneToOneMapping;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaOneToOneMapping2_0 extends AbstractHibernateJavaOneToOneMapping {
+
+	public HibernateJavaOneToOneMapping2_0(JavaPersistentAttribute parent) {
+		super(parent);
+	}
+
+	@Override
+	protected JavaOneToOneRelationshipReference2_0 buildRelationshipReference() {
+		return new HibernateJavaOneToOneRelationshipReference2_0(this);
+	}
+
+
+}
+

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaOneToOneRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.core.context.java.JavaJoinColumnJoiningStrategy;
+import org.eclipse.jpt.core.context.java.JavaJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.java.JavaOneToOneMapping;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToOneRelationshipReference2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinColumnJoiningStrategy;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaOneToOneRelationshipReference2_0 extends
+		GenericJavaOneToOneRelationshipReference2_0 {
+
+	/**
+	 * @param parent
+	 */
+	public HibernateJavaOneToOneRelationshipReference2_0(
+			JavaOneToOneMapping parent) {
+		super(parent);
+	}
+	
+	@Override
+	protected JavaJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateJavaJoinTableJoiningStrategy(this);
+	}
+
+	@Override
+	protected JavaJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() {
+		return new HibernateJavaJoinColumnJoiningStrategy(this);
+	}
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmEntityImpl.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmEntityImpl.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmEntityImpl.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -23,7 +23,9 @@
 import org.eclipse.jpt.core.context.orm.OrmPersistentType;
 import org.eclipse.jpt.core.internal.context.orm.AbstractOrmEntity;
 import org.eclipse.jpt.core.internal.jpa2.context.orm.NullOrmCacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.CacheableHolder2_0;
 import org.eclipse.jpt.core.jpa2.context.orm.OrmCacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceUnit2_0;
 import org.eclipse.jpt.core.resource.orm.XmlEntity;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator;
@@ -34,9 +36,9 @@
 import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaProject;
 import org.jboss.tools.hibernate.jpt.core.internal.HibernateJptPlugin;
 import org.jboss.tools.hibernate.jpt.core.internal.context.GenericGenerator;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedNativeQuery;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateNamedQuery;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.LocalMessage;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateTable;
 import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
 
@@ -64,9 +66,20 @@
 	}
 
 	public boolean calculateDefaultCacheable() {
-		return false;
+		if (!isMetadataComplete()) {
+			CacheableHolder2_0 javaEntity = (CacheableHolder2_0) getJavaEntity();
+			if (javaEntity != null) {
+				return javaEntity.getCacheable().isCacheable();
+			}
+		}
+		
+		CacheableHolder2_0 parentEntity = (CacheableHolder2_0) getParentEntity();
+		if (parentEntity != null) {
+			return parentEntity.getCacheable().isCacheable();
+		}
+		return ((PersistenceUnit2_0) getPersistenceUnit()).calculateDefaultCacheable();
 	}
-	
+
 	@Override
 	public HibernateJpaProject getJpaProject() {
 		return (HibernateJpaProject) super.getJpaProject();
@@ -129,11 +142,13 @@
 				return null;
 			}
 			Entity parentEntity = HibernateOrmEntityImpl.this.getParentEntity();
+			String colName = (parentEntity == null)
+				? getPrimaryKeyColumnName() : parentEntity.getPrimaryKeyColumnName();
 			NamingStrategy ns = HibernateOrmEntityImpl.this.getJpaProject().getNamingStrategy();
 			if (getJpaProject().isNamingStrategyEnabled() && ns != null){				
 				try {
-					String name = ns.joinKeyColumnName(parentEntity.getPrimaryKeyColumnName(),
-							parentEntity.getPrimaryTableName());
+					String name = ns.joinKeyColumnName(colName,	(parentEntity == null)
+								? getTable().getName() : parentEntity.getPrimaryTableName());
 					return name;
 				} catch (Exception e) {
 					Message m = new LocalMessage(IMessage.HIGH_SEVERITY, 
@@ -141,7 +156,7 @@
 					HibernateJptPlugin.logException(m.getText(), e);
 				}
 			}
-			return parentEntity.getPrimaryKeyColumnName();
+			return colName;
 		}
 		
 		public String getDefaultTableName() {

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmJoinTableJoiningStrategy.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmJoinTableJoiningStrategy.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmJoinTableJoiningStrategy.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference;
+import org.eclipse.jpt.core.internal.context.orm.GenericOrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.resource.orm.XmlJoinTableMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.NamingStrategyMappingTools;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmJoinTableJoiningStrategy extends
+		GenericOrmJoinTableJoiningStrategy {
+
+	/**
+	 * @param parent
+	 * @param resource
+	 */
+	public HibernateOrmJoinTableJoiningStrategy(
+			OrmJoinTableEnabledRelationshipReference parent,
+			XmlJoinTableMapping resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	public String getJoinTableDefaultName() {
+		return NamingStrategyMappingTools.buildJoinTableDefaultName(getRelationshipReference());
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
+ * Copyright (c) 2010 Red Hat, Inc.
  * Distributed under license by Red Hat, Inc. All rights reserved.
  * This program is made available under the terms of the
  * Eclipse Public License v1.0 which accompanies this distribution,
@@ -8,29 +8,31 @@
  * Contributor:
  *     Red Hat, Inc. - initial API and implementation
  ******************************************************************************/
-
 package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
 
 import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
-import org.eclipse.jpt.core.internal.context.orm.AbstractOrmManyToManyMapping;
+import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
+import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmManyToManyMapping;
 import org.eclipse.jpt.core.resource.orm.XmlManyToMany;
-import org.jboss.tools.hibernate.jpt.core.internal.context.NamingStrategyMappingTools;
 
 /**
  * @author Dmitry Geraskov
  *
  */
-public class HibernateOrmManyToManyMapping<T extends XmlManyToMany> extends
-		AbstractOrmManyToManyMapping<T> {
-	
+public class HibernateOrmManyToManyMapping extends GenericOrmManyToManyMapping {
+
+	/**
+	 * @param parent
+	 * @param resourceMapping
+	 */
 	public HibernateOrmManyToManyMapping(OrmPersistentAttribute parent,
-			T resourceMapping) {
+			XmlManyToMany resourceMapping) {
 		super(parent, resourceMapping);
 	}
 	
-	/*@Override
-	public String getJoinTableDefaultName() {
-		return NamingStrategyMappingTools.buildJoinTableDefaultName(this);
-	}*/
+	@Override
+	protected OrmRelationshipReference buildRelationshipReference() {
+		return new HibernateOrmManyToManyRelationshipReference(this, this.resourceAttributeMapping);
+	}
 
 }

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyRelationshipReference.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyRelationshipReference.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToManyRelationshipReference.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping;
+import org.eclipse.jpt.core.internal.context.orm.GenericOrmManyToManyRelationshipReference;
+import org.eclipse.jpt.core.resource.orm.XmlManyToMany;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmManyToManyRelationshipReference extends
+		GenericOrmManyToManyRelationshipReference {
+
+	/**
+	 * @param parent
+	 * @param resource
+	 */
+	public HibernateOrmManyToManyRelationshipReference(
+			OrmManyToManyMapping parent, XmlManyToMany resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return 	new HibernateOrmJoinTableJoiningStrategy(this, getResourceMapping());
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToOneMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmManyToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -15,7 +15,6 @@
 import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
 import org.eclipse.jpt.core.internal.context.orm.AbstractOrmManyToOneMapping;
 import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
-import org.jboss.tools.hibernate.jpt.core.internal.context.NamingStrategyMappingTools;
 
 /**
  * @author Dmitry Geraskov
@@ -28,11 +27,6 @@
 			T resourceMapping) {
 		super(parent, resourceMapping);
 	}
-	
-	/*@Override
-	public String getJoinTableDefaultName() {
-		return NamingStrategyMappingTools.buildJoinTableDefaultName(this);
-	}*/
 
 	@Override
 	protected OrmRelationshipReference buildRelationshipReference() {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
+ * Copyright (c) 2010 Red Hat, Inc.
  * Distributed under license by Red Hat, Inc. All rights reserved.
  * This program is made available under the terms of the
  * Eclipse Public License v1.0 which accompanies this distribution,
@@ -8,10 +8,10 @@
  * Contributor:
  *     Red Hat, Inc. - initial API and implementation
  ******************************************************************************/
-
 package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
 
 import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
 import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmOneToManyMapping;
 import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
 
@@ -19,17 +19,20 @@
  * @author Dmitry Geraskov
  *
  */
-public class HibernateOrmOneToManyMapping
-	extends GenericOrmOneToManyMapping {
+public class HibernateOrmOneToManyMapping extends GenericOrmOneToManyMapping {
 
+	/**
+	 * @param parent
+	 * @param resourceMapping
+	 */
 	public HibernateOrmOneToManyMapping(OrmPersistentAttribute parent,
 			XmlOneToMany resourceMapping) {
 		super(parent, resourceMapping);
 	}
 	
-	/*@Override
-	public String getJoinTableDefaultName() {
-		return NamingStrategyMappingTools.buildJoinTableDefaultName(this);
-	}*/
+	@Override
+	protected OrmRelationshipReference buildRelationshipReference() {
+		return new HibernateOrmOneToManyRelationshipReference(this, this.resourceAttributeMapping);
+	}
 
 }

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyRelationshipReference.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyRelationshipReference.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToManyRelationshipReference.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping;
+import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmOneToManyRelationshipReference;
+import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmOneToManyRelationshipReference extends
+		GenericOrmOneToManyRelationshipReference {
+
+	/**
+	 * @param parent
+	 * @param resource
+	 */
+	public HibernateOrmOneToManyRelationshipReference(
+			OrmOneToManyMapping parent, XmlOneToMany resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateOrmJoinTableJoiningStrategy(this, getResourceMapping());
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToOneMapping.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToOneMapping.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmOneToOneMapping.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -15,7 +15,6 @@
 import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
 import org.eclipse.jpt.core.internal.context.orm.AbstractOrmOneToOneMapping;
 import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
-import org.jboss.tools.hibernate.jpt.core.internal.context.NamingStrategyMappingTools;
 
 /**
  * @author Dmitry Geraskov
@@ -28,11 +27,6 @@
 			T resourceMapping) {
 		super(parent, resourceMapping);
 	}
-	
-	/*@Override
-	public String getJoinTableDefaultName() {
-		return NamingStrategyMappingTools.buildJoinTableDefaultName(this);
-	}*/
 
 	@Override
 	protected OrmRelationshipReference buildRelationshipReference() {

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlContextNodeFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlContextNodeFactory.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlContextNodeFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
 package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
 
 import org.eclipse.jpt.core.context.XmlContextNode;
@@ -8,20 +18,30 @@
 import org.eclipse.jpt.core.context.orm.OrmJoinColumn;
 import org.eclipse.jpt.core.context.orm.OrmJoinTable;
 import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping;
+import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping;
+import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping;
+import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping;
 import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
 import org.eclipse.jpt.core.context.orm.OrmPersistentType;
 import org.eclipse.jpt.core.context.orm.OrmTable;
-import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNodeFactory;
+import org.eclipse.jpt.core.internal.context.orm.GenericOrmXmlContextNodeFactory;
 import org.eclipse.jpt.core.resource.orm.XmlBasic;
 import org.eclipse.jpt.core.resource.orm.XmlEntity;
 import org.eclipse.jpt.core.resource.orm.XmlId;
 import org.eclipse.jpt.core.resource.orm.XmlJoinColumn;
 import org.eclipse.jpt.core.resource.orm.XmlJoinTable;
-import org.eclipse.jpt.core.resource.orm.XmlJoinTableMapping;
+import org.eclipse.jpt.core.resource.orm.XmlManyToMany;
+import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
+import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
+import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
 
-public class HibernateOrmXmlContextNodeFactory extends
-		AbstractOrmXmlContextNodeFactory {
-
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmXmlContextNodeFactory extends GenericOrmXmlContextNodeFactory {
+	
 	@Override
 	public OrmBasicMapping buildOrmBasicMapping(OrmPersistentAttribute parent,
 			XmlBasic resourceMapping) {
@@ -64,4 +84,30 @@
 		return new HibernateOrmJoinColumnImpl(parent, owner, resourceJoinColumn);
 	}
 
+	@Override
+	public OrmManyToOneMapping buildOrmManyToOneMapping(
+			OrmPersistentAttribute parent, XmlManyToOne resourceMapping) {
+		return new HibernateOrmManyToOneMapping<XmlManyToOne>(parent,
+				resourceMapping);
+	}
+
+	@Override
+	public OrmOneToOneMapping buildOrmOneToOneMapping(
+			OrmPersistentAttribute parent, XmlOneToOne resourceMapping) {
+		return new HibernateOrmOneToOneMapping<XmlOneToOne>(parent,
+				resourceMapping);
+	}
+	
+	@Override
+	public OrmOneToManyMapping buildOrmOneToManyMapping(
+			OrmPersistentAttribute parent, XmlOneToMany resourceMapping) {
+		return new HibernateOrmOneToManyMapping(parent, resourceMapping);
+	}
+	
+	@Override
+	public OrmManyToManyMapping buildOrmManyToManyMapping(
+			OrmPersistentAttribute parent, XmlManyToMany resourceMapping) {
+		return new HibernateOrmManyToManyMapping(parent, resourceMapping);
+	}
+
 }

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlDefinition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlDefinition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/HibernateOrmXmlDefinition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.context.orm.NullOrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmTypeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory;
+import org.eclipse.jpt.core.context.orm.OrmXmlDefinition;
+import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmBasicMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddableDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEntityDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmMappedSuperclassDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmTransientMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmVersionMappingDefinition;
+import org.eclipse.jpt.core.resource.orm.OrmFactory;
+
+/**
+ * 
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmXmlDefinition extends AbstractOrmXmlDefinition {
+
+	// singleton
+	private static final OrmXmlDefinition INSTANCE = 
+			new HibernateOrmXmlDefinition();
+	
+	
+	/**
+	 * Return the singleton
+	 */
+	public static OrmXmlDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private HibernateOrmXmlDefinition() {
+		super();
+	}
+	
+	
+	public EFactory getResourceNodeFactory() {
+		return OrmFactory.eINSTANCE;
+	}
+	
+	@Override
+	protected OrmXmlContextNodeFactory buildContextNodeFactory() {
+		return new HibernateOrmXmlContextNodeFactory();
+	}
+	
+	public JpaResourceType getResourceType() {
+		return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+	}
+	
+	
+	// ********** ORM type mappings **********
+	
+	@Override
+	protected OrmTypeMappingDefinition[] buildOrmTypeMappingDefinitions() {
+		// order should not matter here, but we'll use the same order as for java 
+		// (@see {@link GenericJpaPlatformProvider})
+		return new OrmTypeMappingDefinition[] {
+			OrmEntityDefinition.instance(),
+			OrmEmbeddableDefinition.instance(),
+			OrmMappedSuperclassDefinition.instance()};
+	}
+	
+	
+	// ********** ORM attribute mappings **********
+	
+	@Override
+	protected OrmAttributeMappingDefinition[] buildOrmAttributeMappingDefinitions() {
+		// order should not matter here, but we'll use the same order as for java
+		// (@see {@link GenericJpaPlatformProvider})
+		return new OrmAttributeMappingDefinition[] {
+			OrmTransientMappingDefinition.instance(),
+			OrmIdMappingDefinition.instance(),
+			OrmVersionMappingDefinition.instance(),
+			OrmBasicMappingDefinition.instance(),
+			OrmEmbeddedMappingDefinition.instance(),
+			OrmEmbeddedIdMappingDefinition.instance(),
+			OrmManyToManyMappingDefinition.instance(),
+			OrmManyToOneMappingDefinition.instance(),
+			OrmOneToManyMappingDefinition.instance(),
+			OrmOneToOneMappingDefinition.instance(),
+			NullOrmAttributeMappingDefinition.instance()};
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
+import org.eclipse.jpt.core.internal.context.orm.AbstractOrmManyToOneMapping;
+import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmManyToOneMapping2_0<T extends XmlManyToOne>
+extends AbstractOrmManyToOneMapping<T> {
+
+	public HibernateOrmManyToOneMapping2_0(OrmPersistentAttribute parent,
+			T resourceMapping) {
+		super(parent, resourceMapping);
+	}
+
+	@Override
+	protected OrmRelationshipReference buildRelationshipReference() {
+		return new HibernateOrmManyToOneRelationshipReference2_0(this, this.resourceAttributeMapping);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmManyToOneRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinColumnJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmManyToOneRelationshipReference2_0;
+import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinColumnJoiningStrategy;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmManyToOneRelationshipReference2_0 extends
+		GenericOrmManyToOneRelationshipReference2_0 {
+
+	public HibernateOrmManyToOneRelationshipReference2_0(
+			OrmManyToOneMapping parent, XmlManyToOne resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	protected OrmJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() {
+		return new HibernateOrmJoinColumnJoiningStrategy(this,  getResourceMapping());
+	}
+	
+	@Override
+	protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateOrmJoinTableJoiningStrategy(this, getResourceMapping());
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmOneToManyMapping2_0;
+import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmOneToManyMapping2_0 extends
+		GenericOrmOneToManyMapping2_0 {
+
+	/**
+	 * @param parent
+	 * @param resourceMapping
+	 */
+	public HibernateOrmOneToManyMapping2_0(OrmPersistentAttribute parent,
+			XmlOneToMany resourceMapping) {
+		super(parent, resourceMapping);
+	}
+	
+	@Override
+	protected OrmRelationshipReference buildRelationshipReference() {
+		return new HibernateOrmOneToManyRelationshipReference2_0(this, this.resourceAttributeMapping);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToManyRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmOneToManyRelationshipReference2_0;
+import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmOneToManyRelationshipReference2_0 extends
+		GenericOrmOneToManyRelationshipReference2_0 {
+
+	/**
+	 * @param parent
+	 * @param resource
+	 */
+	public HibernateOrmOneToManyRelationshipReference2_0(
+			OrmOneToManyMapping parent, XmlOneToMany resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateOrmJoinTableJoiningStrategy(this, getResourceMapping());
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneMapping2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneMapping2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneMapping2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmRelationshipReference;
+import org.eclipse.jpt.core.internal.context.orm.AbstractOrmOneToOneMapping;
+import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmOneToOneMapping2_0<T extends XmlOneToOne> extends
+AbstractOrmOneToOneMapping<T> {
+
+	public HibernateOrmOneToOneMapping2_0(OrmPersistentAttribute parent,
+			T resourceMapping) {
+		super(parent, resourceMapping);
+	}
+
+	@Override
+	protected OrmRelationshipReference buildRelationshipReference() {
+		return new HibernateOrmOneToOneRelationshipReference2_0(this, this.resourceAttributeMapping);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneRelationshipReference2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneRelationshipReference2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmOneToOneRelationshipReference2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.orm.OrmJoinColumnJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmOneToOneRelationshipReference2_0;
+import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinColumnJoiningStrategy;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinTableJoiningStrategy;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmOneToOneRelationshipReference2_0 extends
+		GenericOrmOneToOneRelationshipReference2_0 {
+
+	public HibernateOrmOneToOneRelationshipReference2_0(OrmOneToOneMapping parent,
+			XmlOneToOne resource) {
+		super(parent, resource);
+	}
+	
+	@Override
+	protected OrmJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() {
+		return new HibernateOrmJoinColumnJoiningStrategy(this, getResourceMapping());
+	}
+	
+	@Override
+	protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() {
+		return new HibernateOrmJoinTableJoiningStrategy(this, getResourceMapping());
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0ContextNodeFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0ContextNodeFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0ContextNodeFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.jpt.core.context.XmlContextNode;
+import org.eclipse.jpt.core.context.orm.OrmBasicMapping;
+import org.eclipse.jpt.core.context.orm.OrmColumn;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
+import org.eclipse.jpt.core.context.orm.OrmIdMapping;
+import org.eclipse.jpt.core.context.orm.OrmJoinColumn;
+import org.eclipse.jpt.core.context.orm.OrmJoinTable;
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping;
+import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping;
+import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping;
+import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping;
+import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmPersistentType;
+import org.eclipse.jpt.core.context.orm.OrmTable;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmXml2_0ContextNodeFactory;
+import org.eclipse.jpt.core.resource.orm.XmlBasic;
+import org.eclipse.jpt.core.resource.orm.XmlEntity;
+import org.eclipse.jpt.core.resource.orm.XmlId;
+import org.eclipse.jpt.core.resource.orm.XmlJoinColumn;
+import org.eclipse.jpt.core.resource.orm.XmlJoinTable;
+import org.eclipse.jpt.core.resource.orm.XmlManyToMany;
+import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
+import org.eclipse.jpt.core.resource.orm.XmlOneToMany;
+import org.eclipse.jpt.core.resource.orm.XmlOneToOne;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmBasicMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmColumnImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntityImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMappingImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinColumnImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinTableImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmManyToManyMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmTableImpl;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmXml2_0ContextNodeFactory extends GenericOrmXml2_0ContextNodeFactory {
+
+	@Override
+	public OrmBasicMapping buildOrmBasicMapping(OrmPersistentAttribute parent,
+			XmlBasic resourceMapping) {
+		return new HibernateOrmBasicMapping(parent, resourceMapping);
+	}
+
+	@Override
+	public OrmIdMapping buildOrmIdMapping(OrmPersistentAttribute parent,
+			XmlId resourceMapping) {
+		return new HibernateOrmIdMappingImpl(parent, resourceMapping);
+	}
+
+	@Override
+	public OrmEntity buildOrmEntity(OrmPersistentType parent,
+			XmlEntity resourceMapping) {
+		return new HibernateOrmEntityImpl(parent, resourceMapping);
+	}
+
+	@Override
+	public OrmTable buildOrmTable(OrmEntity parent) {
+		return new HibernateOrmTableImpl(parent);
+	}
+	
+	@Override
+	public OrmJoinTable buildOrmJoinTable(OrmJoinTableJoiningStrategy parent,
+			XmlJoinTable resourceJoinTable) {
+		return new HibernateOrmJoinTableImpl(parent, resourceJoinTable);
+	}
+
+	@Override
+	public OrmColumn buildOrmColumn(XmlContextNode parent,
+			org.eclipse.jpt.core.context.orm.OrmColumn.Owner owner) {
+		return new HibernateOrmColumnImpl(parent, owner);
+	}
+
+	@Override
+	public OrmJoinColumn buildOrmJoinColumn(XmlContextNode parent,
+			org.eclipse.jpt.core.context.orm.OrmJoinColumn.Owner owner,
+			XmlJoinColumn resourceJoinColumn) {
+		return new HibernateOrmJoinColumnImpl(parent, owner, resourceJoinColumn);
+	}
+	
+	@Override
+	public OrmManyToOneMapping buildOrmManyToOneMapping(
+			OrmPersistentAttribute parent, XmlManyToOne resourceMapping) {
+		return new HibernateOrmManyToOneMapping2_0<XmlManyToOne>(parent,
+				resourceMapping);
+	}
+
+	@Override
+	public OrmOneToOneMapping buildOrmOneToOneMapping(
+			OrmPersistentAttribute parent, XmlOneToOne resourceMapping) {
+		return new HibernateOrmOneToOneMapping2_0<XmlOneToOne>(parent,
+				resourceMapping);
+	}
+	
+	@Override
+	public OrmOneToManyMapping buildOrmOneToManyMapping(
+			OrmPersistentAttribute parent, XmlOneToMany resourceMapping) {
+		return new HibernateOrmOneToManyMapping2_0(parent, resourceMapping);
+	}
+	
+	@Override
+	public OrmManyToManyMapping buildOrmManyToManyMapping(
+			OrmPersistentAttribute parent, XmlManyToMany resourceMapping) {
+		return new HibernateOrmManyToManyMapping(parent, resourceMapping);
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0Definition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0Definition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/orm/jpa2/HibernateOrmXml2_0Definition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.context.orm.NullOrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmTypeMappingDefinition;
+import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory;
+import org.eclipse.jpt.core.context.orm.OrmXmlDefinition;
+import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmBasicMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddableDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEmbeddedMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmEntityDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmManyToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmMappedSuperclassDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmOneToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmTransientMappingDefinition;
+import org.eclipse.jpt.core.internal.context.orm.OrmVersionMappingDefinition;
+import org.eclipse.jpt.core.resource.orm.OrmFactory;
+
+/**
+ * 
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmXml2_0Definition extends AbstractOrmXmlDefinition {
+
+	// singleton
+	private static final OrmXmlDefinition INSTANCE = 
+			new HibernateOrmXml2_0Definition();
+	
+	
+	/**
+	 * Return the singleton
+	 */
+	public static OrmXmlDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private HibernateOrmXml2_0Definition() {
+		super();
+	}
+	
+	
+	public EFactory getResourceNodeFactory() {
+		return OrmFactory.eINSTANCE;
+	}
+	
+	@Override
+	protected OrmXmlContextNodeFactory buildContextNodeFactory() {
+		return new HibernateOrmXml2_0ContextNodeFactory();
+	}
+	
+	public JpaResourceType getResourceType() {
+		return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+	}
+	
+	
+	// ********** ORM type mappings **********
+	
+	@Override
+	protected OrmTypeMappingDefinition[] buildOrmTypeMappingDefinitions() {
+		// order should not matter here, but we'll use the same order as for java 
+		// (@see {@link GenericJpaPlatformProvider})
+		return new OrmTypeMappingDefinition[] {
+			OrmEntityDefinition.instance(),
+			OrmEmbeddableDefinition.instance(),
+			OrmMappedSuperclassDefinition.instance()};
+	}
+	
+	
+	// ********** ORM attribute mappings **********
+	
+	@Override
+	protected OrmAttributeMappingDefinition[] buildOrmAttributeMappingDefinitions() {
+		// order should not matter here, but we'll use the same order as for java
+		// (@see {@link GenericJpaPlatformProvider})
+		return new OrmAttributeMappingDefinition[] {
+			OrmTransientMappingDefinition.instance(),
+			OrmIdMappingDefinition.instance(),
+			OrmVersionMappingDefinition.instance(),
+			OrmBasicMappingDefinition.instance(),
+			OrmEmbeddedMappingDefinition.instance(),
+			OrmEmbeddedIdMappingDefinition.instance(),
+			OrmManyToManyMappingDefinition.instance(),
+			OrmManyToOneMappingDefinition.instance(),
+			OrmOneToManyMappingDefinition.instance(),
+			OrmOneToOneMappingDefinition.instance(),
+			NullOrmAttributeMappingDefinition.instance()};
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.persistence.jpa2;
+
+import org.eclipse.jpt.core.context.persistence.Persistence;
+import org.eclipse.jpt.core.context.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.context.persistence.GenericPersistenceXmlContextNodeFactory;
+import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit;
+import org.jboss.tools.hibernate.jpt.core.internal.context.basic.HibernatePersistenceUnitProperties;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0PersistenceXmlContextNodeFactory extends
+		GenericPersistenceXmlContextNodeFactory {
+
+	public PersistenceUnit buildPersistenceUnit(Persistence parent, XmlPersistenceUnit xmlPersistenceUnit) {
+		return new HibernatePersistenceUnit(parent, xmlPersistenceUnit);
+	}
+	
+	public HibernatePersistenceUnitProperties buildHibernatePersistenceUnitProperties(PersistenceUnit parent) {
+		return new HibernatePersistenceUnitProperties(parent);
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlDefinition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlDefinition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlDefinition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,62 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.persistence.jpa2;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.context.persistence.PersistenceXmlContextNodeFactory;
+import org.eclipse.jpt.core.context.persistence.PersistenceXmlDefinition;
+import org.eclipse.jpt.core.internal.context.persistence.AbstractPersistenceXmlDefinition;
+import org.eclipse.jpt.core.resource.persistence.PersistenceFactory;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0PersistenceXmlDefinition extends
+		AbstractPersistenceXmlDefinition {
+
+	// singleton
+	private static final PersistenceXmlDefinition INSTANCE = 
+			new Hibernate2_0PersistenceXmlDefinition();
+	
+	
+	/**
+	 * Return the singleton
+	 */
+	public static PersistenceXmlDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private Hibernate2_0PersistenceXmlDefinition() {
+		super();
+	}
+	
+	
+	public EFactory getResourceNodeFactory() {
+		return PersistenceFactory.eINSTANCE;
+	}
+	
+	@Override
+	protected PersistenceXmlContextNodeFactory buildContextNodeFactory() {
+		return new Hibernate2_0PersistenceXmlContextNodeFactory();
+	}
+	
+	public JpaResourceType getResourceType() {
+		return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0AnnotationDefinitionProvider.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0AnnotationDefinitionProvider.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0AnnotationDefinitionProvider.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+  * Copyright (c) 2008-2009 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.jpa2;
+
+import java.util.List;
+
+import org.eclipse.jpt.core.JpaAnnotationDefinitionProvider;
+import org.eclipse.jpt.core.internal.AbstractJpaAnnotationDefintionProvider;
+import org.eclipse.jpt.core.resource.java.AnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.DiscriminatorFormulaAnnotationImpl.DiscriminatorFormulaAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.ForeignKeyAnnotationImpl.ForeignKeyAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GeneratedAnnotationImpl.GeneratedAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.GenericGeneratorAnnotationImpl.GenericGeneratorAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedNativeQueriesAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedNativeQueryAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedQueriesAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.HibernateNamedQueryAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.IndexAnnotationImpl.IndexAnnotationDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.SourceGenericGeneratorsAnnotation.GenericGeneratorsAnnotationDefinition;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpa2_0AnnotationDefinitionProvider extends AbstractJpaAnnotationDefintionProvider
+{	
+	// singleton
+	private static final JpaAnnotationDefinitionProvider INSTANCE = new HibernateJpa2_0AnnotationDefinitionProvider();
+
+	/**
+	 * Return the singleton.
+	 */
+	public static JpaAnnotationDefinitionProvider instance() {
+		return INSTANCE;
+	}
+
+	/**
+	 * Ensure single instance.
+	 */
+	private HibernateJpa2_0AnnotationDefinitionProvider() {
+		super();
+	}
+
+	@Override
+	protected void addTypeAnnotationDefinitionsTo(List<AnnotationDefinition> definitions) {
+		definitions.add(GenericGeneratorAnnotationDefinition.instance());
+		definitions.add(GenericGeneratorsAnnotationDefinition.instance());
+		definitions.add(HibernateNamedQueryAnnotationDefinition.instance());
+		definitions.add(HibernateNamedQueriesAnnotationDefinition.instance());
+		definitions.add(HibernateNamedNativeQueryAnnotationDefinition.instance());
+		definitions.add(HibernateNamedNativeQueriesAnnotationDefinition.instance());
+		definitions.add(DiscriminatorFormulaAnnotationDefinition.instance());
+		definitions.add(ForeignKeyAnnotationDefinition.instance());
+	}
+	
+	@Override
+	protected void addAttributeAnnotationDefinitionsTo(List<AnnotationDefinition> definitions) {
+		definitions.add(GenericGeneratorAnnotationDefinition.instance());
+		definitions.add(GeneratedAnnotationDefinition.instance());
+		definitions.add(IndexAnnotationDefinition.instance());
+		definitions.add(ForeignKeyAnnotationDefinition.instance());
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,75 @@
+/*******************************************************************************
+  * Copyright (c) 2008-2009 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.jpa2;
+
+import org.eclipse.jpt.core.JpaAnnotationProvider;
+import org.eclipse.jpt.core.JpaFactory;
+import org.eclipse.jpt.core.JpaPlatform;
+import org.eclipse.jpt.core.JpaPlatformFactory;
+import org.eclipse.jpt.core.JpaPlatformVariation;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.internal.GenericJpaAnnotationProvider;
+import org.eclipse.jpt.core.internal.GenericJpaPlatformFactory.SimpleVersion;
+import org.eclipse.jpt.core.internal.jpa2.Generic2_0JpaAnnotationDefinitionProvider;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateJpaPlatform;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpa2_0PlatformFactory implements JpaPlatformFactory {
+
+	/**
+	 * zero-argument constructor
+	 */
+	public HibernateJpa2_0PlatformFactory() {
+		super();
+	}
+	
+	public JpaPlatform buildJpaPlatform(String id) {
+		return new HibernateJpaPlatform(
+			id,
+			this.buildJpaVersion(),
+			this.buildJpaFactory(), 
+			this.buildJpaAnnotationProvider(), 
+			HibernateJpa2_0PlatformProvider.instance(),
+			this.buildJpaPlatformVariation());
+	}
+	
+	
+	
+	private JpaPlatform.Version buildJpaVersion() {
+		return new SimpleVersion(JptCorePlugin.JPA_FACET_VERSION_2_0);
+	}
+	
+	protected JpaFactory buildJpaFactory() {
+		return new HibernateJpaFactory2_0();
+	}
+	
+	protected JpaAnnotationProvider buildJpaAnnotationProvider() {
+		return new GenericJpaAnnotationProvider(
+			Generic2_0JpaAnnotationDefinitionProvider.instance(),
+			HibernateJpa2_0AnnotationDefinitionProvider.instance());
+	}
+	
+	protected JpaPlatformVariation buildJpaPlatformVariation() {
+		return new JpaPlatformVariation() {
+			//table_per_class inheritance support is optional in the 2.0 spec
+			public Supported getTablePerConcreteClassInheritanceIsSupported() {
+				return Supported.MAYBE;
+			}
+			public boolean isJoinTableOverridable() {
+				return true;
+			}
+		};
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformProvider.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformProvider.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpa2_0PlatformProvider.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,151 @@
+/*******************************************************************************
+  * Copyright (c) 2007-2008 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.jpa2;
+
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jpt.core.JpaPlatformProvider;
+import org.eclipse.jpt.core.JpaResourceModelProvider;
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.ResourceDefinition;
+import org.eclipse.jpt.core.context.java.JavaAttributeMappingDefinition;
+import org.eclipse.jpt.core.context.java.JavaTypeMappingDefinition;
+import org.eclipse.jpt.core.internal.AbstractJpaPlatformProvider;
+import org.eclipse.jpt.core.internal.JarResourceModelProvider;
+import org.eclipse.jpt.core.internal.JavaResourceModelProvider;
+import org.eclipse.jpt.core.internal.OrmResourceModelProvider;
+import org.eclipse.jpt.core.internal.PersistenceResourceModelProvider;
+import org.eclipse.jpt.core.internal.context.java.JavaBasicMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddableDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddedIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEmbeddedMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaEntityDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaIdMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaManyToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaManyToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaMappedSuperclassDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaOneToManyMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaOneToOneMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaTransientMappingDefinition;
+import org.eclipse.jpt.core.internal.context.java.JavaVersionMappingDefinition;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.jpa2.HibernateOrmXml2_0Definition;
+import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.jpa2.Hibernate2_0PersistenceXmlDefinition;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpa2_0PlatformProvider extends AbstractJpaPlatformProvider {
+
+public static final String ID = "hibernate2_0"; //$NON-NLS-1$
+	
+	// singleton
+	private static final JpaPlatformProvider INSTANCE = 
+		new HibernateJpa2_0PlatformProvider();
+	
+	
+	/**
+	 * Return the singleton.
+	 */
+	public static JpaPlatformProvider instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private HibernateJpa2_0PlatformProvider() {
+		super();
+	}
+	
+	
+	// ********** resource models **********
+	
+	public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+		if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+			return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+		}
+		else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+			return JptCorePlugin.JAR_RESOURCE_TYPE;
+		}
+		else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+			return JptCorePlugin.PERSISTENCE_XML_2_0_RESOURCE_TYPE;
+		}
+		else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+			return JptCorePlugin.ORM_XML_2_0_RESOURCE_TYPE;
+		}
+		else {
+			throw new IllegalArgumentException(contentType.toString());
+		}
+	}
+	
+	@Override
+	protected JpaResourceModelProvider[] buildResourceModelProviders() {
+		// order should not be important here
+		return new JpaResourceModelProvider[] {
+			JavaResourceModelProvider.instance(),
+			JarResourceModelProvider.instance(),
+			PersistenceResourceModelProvider.instance(),
+			OrmResourceModelProvider.instance()};
+	}
+	
+	
+	// ********** Java type mappings **********
+	
+	@Override
+	protected JavaTypeMappingDefinition[] buildNonNullJavaTypeMappingDefinitions() {
+		// order determined by analyzing order that reference implementation (toplink) uses
+		return new JavaTypeMappingDefinition[] {
+			JavaEntityDefinition.instance(),
+			JavaEmbeddableDefinition.instance(),
+			JavaMappedSuperclassDefinition.instance()};
+	}
+	
+	
+	// ********** Java attribute mappings **********
+	
+	@Override
+	protected JavaAttributeMappingDefinition[] buildNonNullDefaultJavaAttributeMappingDefinitions() {
+		// order determined by analyzing order that reference implementation (toplink) uses
+		return new JavaAttributeMappingDefinition[] {
+			JavaEmbeddedMappingDefinition.instance(),
+			JavaBasicMappingDefinition.instance()};
+	}
+	
+	@Override
+	protected JavaAttributeMappingDefinition[] buildNonNullSpecifiedJavaAttributeMappingDefinitions() {
+		// order determined by analyzing order that reference implementation (eclipselink) uses
+		return new JavaAttributeMappingDefinition[] {
+			JavaTransientMappingDefinition.instance(),
+			JavaIdMappingDefinition.instance(),
+			JavaVersionMappingDefinition.instance(),
+			JavaBasicMappingDefinition.instance(),
+			JavaEmbeddedMappingDefinition.instance(),
+			JavaEmbeddedIdMappingDefinition.instance(),
+			JavaManyToManyMappingDefinition.instance(),
+			JavaManyToOneMappingDefinition.instance(),
+			JavaOneToManyMappingDefinition.instance(),
+			JavaOneToOneMappingDefinition.instance()};
+	}
+	
+	
+	// ********** Mapping Files **********
+	
+	@Override
+	protected ResourceDefinition[] buildResourceDefinitions() {
+		return new ResourceDefinition[] {
+			Hibernate2_0PersistenceXmlDefinition.instance(),
+			HibernateOrmXml2_0Definition.instance()};
+	}
+	
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,177 @@
+/*******************************************************************************
+  * Copyright (c) 2008-2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.jpa2;
+
+import org.eclipse.jpt.core.JpaProject;
+import org.eclipse.jpt.core.context.JoiningStrategy;
+import org.eclipse.jpt.core.context.PersistentType;
+import org.eclipse.jpt.core.context.java.JavaAssociationOverride;
+import org.eclipse.jpt.core.context.java.JavaAssociationOverrideContainer;
+import org.eclipse.jpt.core.context.java.JavaAssociationOverrideRelationshipReference;
+import org.eclipse.jpt.core.context.java.JavaEmbeddable;
+import org.eclipse.jpt.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.core.context.java.JavaManyToOneMapping;
+import org.eclipse.jpt.core.context.java.JavaNamedColumn;
+import org.eclipse.jpt.core.context.java.JavaNamedQuery;
+import org.eclipse.jpt.core.context.java.JavaOneToManyMapping;
+import org.eclipse.jpt.core.context.java.JavaOneToOneMapping;
+import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.context.java.JavaPersistentType;
+import org.eclipse.jpt.core.context.java.JavaSequenceGenerator;
+import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaAssociationOverrideContainer;
+import org.eclipse.jpt.core.internal.jpa2.GenericMetamodelSynchronizer;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaAssociationOverrideRelationshipReference2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaCacheable2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaCollectionTable2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaDerivedIdentity2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaElementCollectionMapping2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaEmbeddable2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaNamedQuery2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOrderColumn2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOrphanRemoval2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaPersistentAttribute2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaPersistentType2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaSequenceGenerator2_0;
+import org.eclipse.jpt.core.internal.jpa2.context.java.VirtualAssociationOverride2_0Annotation;
+import org.eclipse.jpt.core.jpa2.JpaProject2_0;
+import org.eclipse.jpt.core.jpa2.context.MetamodelSourceType;
+import org.eclipse.jpt.core.jpa2.context.java.JavaCacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaCacheableHolder2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaCollectionTable2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedIdentity2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaElementCollectionMapping2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaEmbeddedMapping2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOrderColumn2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOrderable2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOrphanRemovable2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaOrphanRemovalHolder2_0;
+import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0;
+import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation;
+import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute;
+import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember;
+import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2.HibernateJavaManyToOneMapping2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2.HibernateJavaOneToManyMapping2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2.HibernateJavaOneToOneMapping2_0;
+
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpaFactory2_0 extends HibernateAbstractJpaFactory {
+	
+	// ********** Core Model **********
+	public JpaProject buildJpaProject(JpaProject.Config config){
+		if ( ! (config instanceof JpaProject2_0.Config)) {
+			throw new IllegalArgumentException("config must be 2.0-compatible: " + config); //$NON-NLS-1$
+		}
+		return super.buildJpaProject(config);
+	}
+	
+	// ********** Hibernate Specific **********
+	@Override
+	public JavaManyToOneMapping buildJavaManyToOneMapping(
+			JavaPersistentAttribute parent) {
+		return new HibernateJavaManyToOneMapping2_0(parent);
+	}
+	
+	@Override
+	public JavaOneToOneMapping buildJavaOneToOneMapping(
+			JavaPersistentAttribute parent) {
+		return new HibernateJavaOneToOneMapping2_0(parent);
+	}
+	
+	@Override
+	public JavaOneToManyMapping buildJavaOneToManyMapping(
+			JavaPersistentAttribute parent) {
+		return new HibernateJavaOneToManyMapping2_0(parent);
+	}
+	
+	// ********** From GenericJpa2_0 Model **********
+	@Override
+	public MetamodelSourceType.Synchronizer buildMetamodelSynchronizer(MetamodelSourceType sourceType) {
+		return new GenericMetamodelSynchronizer(sourceType);
+	}
+	
+	@Override
+	public JavaPersistentType buildJavaPersistentType(PersistentType.Owner owner, JavaResourcePersistentType jrpt) {
+		return new GenericJavaPersistentType2_0(owner, jrpt);
+	}
+	
+	@Override
+	public JavaPersistentAttribute buildJavaPersistentAttribute(PersistentType parent, JavaResourcePersistentAttribute jrpa) {
+		return new GenericJavaPersistentAttribute2_0(parent, jrpa);
+	}
+	
+	@Override
+	public JavaEmbeddable buildJavaEmbeddable(JavaPersistentType parent) {
+		return new GenericJavaEmbeddable2_0(parent);
+	}
+	
+	@Override
+	public JavaSequenceGenerator buildJavaSequenceGenerator(JavaJpaContextNode parent) {
+		return new GenericJavaSequenceGenerator2_0(parent);
+	}
+	
+	//The 2.0 JPA spec supports association overrides on an embedded mapping while the 1.0 spec did not
+	@Override
+	public JavaAssociationOverrideContainer buildJavaAssociationOverrideContainer(JavaEmbeddedMapping2_0 parent, JavaAssociationOverrideContainer.Owner owner) {
+		return new GenericJavaAssociationOverrideContainer(parent, owner);
+	}
+	
+	@Override
+	public JavaAssociationOverrideRelationshipReference buildJavaAssociationOverrideRelationshipReference(JavaAssociationOverride parent) {
+		return new GenericJavaAssociationOverrideRelationshipReference2_0(parent);
+	}
+	
+	@Override
+	public AssociationOverrideAnnotation buildJavaVirtualAssociationOverrideAnnotation(JavaResourcePersistentMember jrpm, String name, JoiningStrategy joiningStrategy) {
+		return new VirtualAssociationOverride2_0Annotation(jrpm, name, joiningStrategy);
+	}
+	
+	@Override
+	public JavaDerivedIdentity2_0 buildJavaDerivedIdentity(JavaSingleRelationshipMapping2_0 parent) {
+		return new GenericJavaDerivedIdentity2_0(parent);
+	}
+	
+	@Override
+	public JavaElementCollectionMapping2_0 buildJavaElementCollectionMapping2_0(JavaPersistentAttribute parent) {
+		return new GenericJavaElementCollectionMapping2_0(parent);
+	}
+	
+	@Override
+	public JavaCacheable2_0 buildJavaCacheable(JavaCacheableHolder2_0 parent) {
+		return new GenericJavaCacheable2_0(parent);
+	}
+	
+	@Override
+	public JavaOrphanRemovable2_0 buildJavaOrphanRemoval(JavaOrphanRemovalHolder2_0 parent) {
+		return new GenericJavaOrphanRemoval2_0(parent);
+	}
+
+	@Override
+	public JavaNamedQuery buildJavaNamedQuery(JavaJpaContextNode parent) {
+		return new GenericJavaNamedQuery2_0(parent);
+	}
+	
+	@Override
+	public JavaCollectionTable2_0 buildJavaCollectionTable(JavaElementCollectionMapping2_0 parent) {
+		return new GenericJavaCollectionTable2_0(parent);
+	}
+
+	@Override
+	public JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaNamedColumn.Owner owner) {
+		return new GenericJavaOrderColumn2_0(parent, owner);
+	}
+		
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/plugin.xml
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/plugin.xml	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/plugin.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -10,4 +10,13 @@
             id="hibernate">
       </jpaPlatformUi>
     </extension>
+    <extension
+         id="org.jboss.tools.hibernate2_0.jpt"
+         point="org.eclipse.jpt.ui.jpaPlatformUis">
+      <jpaPlatformUi
+            factoryClass="org.jboss.tools.hibernate.jpt.ui.internal.platform.HibernateJpaPlatformUiFactory"
+            jpaPlatform="hibernate2_0"
+            id="hibernate2_0">
+      </jpaPlatformUi>
+    </extension>
 </plugin>

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpa2_0PlatformUiProvider.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpa2_0PlatformUiProvider.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpa2_0PlatformUiProvider.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal;
+
+import java.util.List;
+
+import org.eclipse.jpt.ui.JpaPlatformUi;
+import org.eclipse.jpt.ui.JpaPlatformUiProvider;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.details.JpaDetailsProvider;
+import org.eclipse.jpt.ui.internal.AbstractJpaPlatformUiProvider;
+import org.eclipse.jpt.ui.internal.details.java.JavaPersistentAttributeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.java.JavaPersistentTypeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.EntityMappingsDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.OrmPersistentAttributeDetailsProvider;
+import org.eclipse.jpt.ui.internal.details.orm.OrmPersistentTypeDetailsProvider;
+import org.eclipse.jpt.ui.internal.jpa2.details.orm.EntityMappings2_0DetailsProvider;
+import org.eclipse.jpt.ui.internal.platform.generic.GenericNavigatorProvider;
+import org.jboss.tools.hibernate.jpt.ui.internal.jpa2.mapping.details.orm.Hibernate2_0OrmXmlUiDefinition;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.java.Hibernate2_0JavaResourceUiDefinition;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.orm.HibernateOrmXmlUiDefinition;
+import org.jboss.tools.hibernate.jpt.ui.internal.persistence.details.HibernatePersistenceXmlUiDefinition;
+import org.jboss.tools.hibernate.jpt.ui.internal.persistence.details.jpa2.HibernatePersistenceXml2_0UiDefinition;
+import org.jboss.tools.hibernate.jpt.ui.internal.platform.HibernateJpaPlatformUi;
+
+/**
+ * @author Dmitry Geraskov
+ * 
+ */
+public class HibernateJpa2_0PlatformUiProvider extends
+		AbstractJpaPlatformUiProvider {
+
+	// singleton
+	private static final JpaPlatformUiProvider INSTANCE = new HibernateJpa2_0PlatformUiProvider();
+
+	/**
+	 * Return the singleton.
+	 */
+	public static JpaPlatformUiProvider instance() {
+		return INSTANCE;
+	}
+
+	/**
+	 * Ensure single instance.
+	 */
+	private HibernateJpa2_0PlatformUiProvider() {
+		super();
+	}
+
+	public JpaPlatformUi buildJpaPlatformUi() {
+		return new HibernateJpaPlatformUi(new GenericNavigatorProvider(),
+				HibernateJpa2_0PlatformUiProvider.instance());
+	}
+
+	// ********** details providers **********
+
+	@Override
+	protected void addDetailsProvidersTo(List<JpaDetailsProvider> providers) {
+		providers.add(JavaPersistentTypeDetailsProvider.instance());
+		providers.add(JavaPersistentAttributeDetailsProvider.instance());
+		providers.add(EntityMappingsDetailsProvider.instance());
+		providers.add(OrmPersistentTypeDetailsProvider.instance());
+		providers.add(OrmPersistentAttributeDetailsProvider.instance());
+		providers.add(EntityMappings2_0DetailsProvider.instance());
+	}
+
+	// ********** resource ui definitions **********
+
+	@Override
+	protected void addResourceUiDefinitionsTo(
+			List<ResourceUiDefinition> definitions) {
+		definitions.add(Hibernate2_0JavaResourceUiDefinition.instance());
+		definitions.add(HibernateOrmXmlUiDefinition.instance());
+		definitions.add(Hibernate2_0OrmXmlUiDefinition.instance());
+		definitions.add(HibernatePersistenceXmlUiDefinition.instance());
+		definitions.add(HibernatePersistenceXml2_0UiDefinition.instance());
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpaPlatformUiProvider.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpaPlatformUiProvider.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/HibernateJpaPlatformUiProvider.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -33,7 +33,7 @@
  *
  */
 public class HibernateJpaPlatformUiProvider extends
-AbstractJpaPlatformUiProvider {
+	AbstractJpaPlatformUiProvider {
 
 	// singleton
 	private static final JpaPlatformUiProvider INSTANCE = new HibernateJpaPlatformUiProvider();

Copied: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/HibernateTableComposite.java (from rev 22779, trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateTableComposite.java)
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/HibernateTableComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/HibernateTableComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.details;
+
+import java.util.Collection;
+
+import org.eclipse.jpt.db.Schema;
+import org.eclipse.jpt.db.SchemaContainer;
+import org.eclipse.jpt.ui.internal.JpaHelpContextIds;
+import org.eclipse.jpt.ui.internal.details.JptUiDetailsMessages;
+import org.eclipse.jpt.ui.internal.details.db.CatalogCombo;
+import org.eclipse.jpt.ui.internal.details.db.SchemaCombo;
+import org.eclipse.jpt.ui.internal.util.PaneEnabler;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateEntity;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateTable;
+import org.jboss.tools.hibernate.jpt.ui.internal.mappings.db.xpl.TableCombo;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ * Here the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * |                                                                           |
+ * | - Table ----------------------------------------------------------------- |
+ * | |          ------------------------------------------------------------ | |
+ * | | Table:   | TableCombo                                               | | |
+ * | |          ------------------------------------------------------------ | |
+ * | |          ------------------------------------------------------------ | |
+ * | | Catalog: | CatalogCombo                                             | | |
+ * | |          ------------------------------------------------------------ | |
+ * | |          ------------------------------------------------------------ | |
+ * | | Schema:  | SchemaCombo                                              | | |
+ * | |          ------------------------------------------------------------ | |
+ * | ------------------------------------------------------------------------- |
+ * -----------------------------------------------------------------------------</pre>
+ *
+ * @see Table
+ * @see EntityComposite - The parent container
+ * @see TableCombo
+ * @see CatalogCombo
+ * @see SchemaCombo
+ *
+ * @TODO repopulate this panel based on the Entity table changing
+ *
+ * @version 2.0
+ * @since 1.0
+ */
+public class HibernateTableComposite extends Pane<HibernateEntity>
+{
+	/**
+	 * Creates a new <code>HibernateTableComposite</code>.
+	 *
+	 * @param parentPane The parent container of this one
+	 * @param subjectHolder The holder of the subject
+	 * @param parent The parent container
+	 */
+	public HibernateTableComposite(Pane<? extends HibernateEntity> parentPane,
+	                      Composite parent) {
+
+		super(parentPane, parent, false);
+	}
+
+	@Override
+	protected void initializeLayout(Composite container) {
+
+		// Table group pane
+		Group tableGroupPane = addTitledGroup(
+			container,
+			JptUiDetailsMessages.TableComposite_tableSection
+		);
+
+		PropertyValueModel<HibernateTable> subjectHolder = buildTableHolder();
+		
+		// Table widgets
+		addLabeledComposite(
+				tableGroupPane,
+				JptUiDetailsMessages.TableChooser_label,
+				addTableCombo(subjectHolder, tableGroupPane),
+				JpaHelpContextIds.ENTITY_TABLE
+			);
+		
+		// Catalog widgets
+		addLabeledComposite(
+			tableGroupPane,
+			JptUiDetailsMessages.CatalogChooser_label,
+			addCatalogCombo(subjectHolder, tableGroupPane),
+			JpaHelpContextIds.ENTITY_CATALOG
+		);
+
+		// Schema widgets
+		addLabeledComposite(
+			tableGroupPane,
+			JptUiDetailsMessages.SchemaChooser_label,
+			addSchemaCombo(subjectHolder, tableGroupPane),
+			JpaHelpContextIds.ENTITY_SCHEMA
+		);
+		
+		new PaneEnabler(buildTableEnabledHolder(), this);
+	}
+	
+	protected WritablePropertyValueModel<HibernateTable> buildTableHolder() {
+		
+		return new PropertyAspectAdapter<HibernateEntity, HibernateTable>(getSubjectHolder(), HibernateEntity.TABLE_IS_UNDEFINED_PROPERTY) {
+			@Override
+			protected HibernateTable buildValue_() {
+				return this.subject.tableIsUndefined() ? null : this.subject.getTable();
+			}
+		};
+	}
+	
+	protected WritablePropertyValueModel<Boolean> buildTableEnabledHolder() {
+		return new PropertyAspectAdapter<HibernateEntity, Boolean>(getSubjectHolder(), HibernateEntity.SPECIFIED_TABLE_IS_ALLOWED_PROPERTY) {
+			@Override
+			protected Boolean buildValue_() {
+				return Boolean.valueOf(this.subject.specifiedTableIsAllowed());
+			}
+		};
+	}
+
+	private CatalogCombo<HibernateTable> addCatalogCombo(PropertyValueModel<HibernateTable> tableHolder, Composite container) {
+
+		return new CatalogCombo<HibernateTable>(this, tableHolder, container) {
+
+			@Override
+			protected void addPropertyNames(Collection<String> propertyNames) {
+				super.addPropertyNames(propertyNames);
+				propertyNames.add(HibernateTable.DEFAULT_CATALOG_PROPERTY);
+				propertyNames.add(HibernateTable.SPECIFIED_CATALOG_PROPERTY);
+			}
+
+			@Override
+			protected String getDefaultValue() {
+				return getSubject().getDefaultCatalog();
+			}
+
+			@Override
+			protected void setValue(String value) {
+				getSubject().setSpecifiedCatalog(value);
+			}
+
+			@Override
+			protected String getValue() {
+				return getSubject().getSpecifiedCatalog();
+			}
+		};
+	}
+
+	private SchemaCombo<HibernateTable> addSchemaCombo(PropertyValueModel<HibernateTable> subjectHolder, Composite container) {
+
+		return new SchemaCombo<HibernateTable>(this, subjectHolder, container) {
+
+			@Override
+			protected void addPropertyNames(Collection<String> propertyNames) {
+				super.addPropertyNames(propertyNames);
+				propertyNames.add(HibernateTable.DEFAULT_SCHEMA_PROPERTY);
+				propertyNames.add(HibernateTable.SPECIFIED_SCHEMA_PROPERTY);
+			}
+
+			@Override
+			protected String getDefaultValue() {
+				return getSubject().getDefaultSchema();
+			}
+
+			@Override
+			protected void setValue(String value) {
+				getSubject().setSpecifiedSchema(value);
+			}
+
+			@Override
+			protected String getValue() {
+				return getSubject().getSpecifiedSchema();
+			}
+
+			@Override
+			protected SchemaContainer getDbSchemaContainer_() {
+				return this.getSubject().getDbSchemaContainer();
+			}
+		};
+	}
+
+	private TableCombo<HibernateTable> addTableCombo(PropertyValueModel<HibernateTable> subjectHolder, Composite container) {
+
+		return new TableCombo<HibernateTable>(this, subjectHolder, container) {
+			
+			@Override
+			protected void initializeLayout(Composite container) {
+				super.initializeLayout(container);
+				comboBox.addFocusListener(new FocusListener() {
+					
+					public void focusGained(FocusEvent e) {
+						if (comboBox.getSelectionIndex() != 0){
+							setPopulating(true);
+							comboBox.setText(getSubject().getName());
+							setPopulating(false);
+						}						
+					}
+					
+					public void focusLost(FocusEvent e) {
+						if (comboBox.getSelectionIndex() != 0){
+							setPopulating(true);
+							comboBox.setText(getValue());
+							setPopulating(false);
+						}												
+					}
+				});
+			}
+			
+			@Override
+			protected void addPropertyNames(Collection<String> propertyNames) {
+				super.addPropertyNames(propertyNames);
+				propertyNames.add(HibernateTable.DEFAULT_NAME_PROPERTY);
+				propertyNames.add(HibernateTable.SPECIFIED_NAME_PROPERTY);
+				propertyNames.add(HibernateTable.DEFAULT_SCHEMA_PROPERTY);
+				propertyNames.add(HibernateTable.SPECIFIED_SCHEMA_PROPERTY);
+				propertyNames.add(HibernateTable.DEFAULT_CATALOG_PROPERTY);
+				propertyNames.add(HibernateTable.SPECIFIED_CATALOG_PROPERTY);
+			}
+
+			@Override
+			protected void propertyChanged(String propertyName) {
+				super.propertyChanged(propertyName);
+				if (propertyName == HibernateTable.DEFAULT_SCHEMA_PROPERTY 
+					|| propertyName == HibernateTable.SPECIFIED_SCHEMA_PROPERTY
+					|| propertyName == HibernateTable.DEFAULT_CATALOG_PROPERTY
+					|| propertyName == HibernateTable.SPECIFIED_CATALOG_PROPERTY ) {
+					repopulate();
+				}
+			}
+			
+			@Override
+			protected String getDefaultValue() {
+				return this.getSubject().getDefaultDBTableName();
+			}
+
+			@Override
+			protected void setValue(String value) {
+				this.getSubject().setSpecifiedName(value);
+			}
+
+			@Override
+			public String getValue() {
+				String specifiedName = this.getSubject().getSpecifiedName();
+				if (specifiedName == null){
+					return null;
+				}
+				String dbTableName = this.getSubject().getDBTableName();
+				if (specifiedName.equals(dbTableName)){
+					return specifiedName;
+				} else {
+					return specifiedName + " (" + dbTableName +")"; //$NON-NLS-1$ //$NON-NLS-2$
+				}
+			}
+
+			@Override
+			protected Schema getDbSchema_() {
+				return this.getSubject().getDbSchema();
+			}
+			
+		};
+	}
+
+}

Copied: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmEntityComposite.java (from rev 22779, trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/orm/details/HibernateOrmEntityComposite.java)
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmEntityComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmEntityComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.ui.internal.details.orm;
+
+import org.eclipse.jpt.core.context.AccessHolder;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.internal.details.AbstractEntityComposite;
+import org.eclipse.jpt.ui.internal.details.AccessTypeComposite;
+import org.eclipse.jpt.ui.internal.details.EntityNameComposite;
+import org.eclipse.jpt.ui.internal.details.IdClassComposite;
+import org.eclipse.jpt.ui.internal.details.orm.MetadataCompleteComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmInheritanceComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmJavaClassChooser;
+import org.eclipse.jpt.ui.internal.details.orm.OrmSecondaryTablesComposite;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.HibernateTableComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmEntityComposite extends AbstractEntityComposite<HibernateOrmEntity> {
+
+	/**
+	 * @param subjectHolder
+	 * @param parent
+	 * @param widgetFactory
+	 */
+	public HibernateOrmEntityComposite(PropertyValueModel<? extends HibernateOrmEntity> subjectHolder,
+			Composite parent, WidgetFactory widgetFactory) {
+		super(subjectHolder, parent, widgetFactory);
+	}
+	
+	@Override
+	protected void initializeEntitySection(Composite container) {
+		new OrmJavaClassChooser(this, getSubjectHolder(), container, false);
+		new HibernateTableComposite(this, container);
+		new EntityNameComposite(this, container);
+		new AccessTypeComposite(this, buildAccessHolder(), container);
+		new IdClassComposite(this, buildIdClassReferenceHolder(), container);
+		new MetadataCompleteComposite(this, getSubjectHolder(), container);
+	}
+	
+	protected PropertyValueModel<AccessHolder> buildAccessHolder() {
+		return new PropertyAspectAdapter<OrmEntity, AccessHolder>(
+			getSubjectHolder())
+		{
+			@Override
+			protected AccessHolder buildValue_() {
+				return this.subject.getPersistentType();
+			}
+		};
+	}
+	@Override
+	protected void initializeSecondaryTablesSection(Composite container) {
+		new OrmSecondaryTablesComposite(this, container);
+	}
+
+	@Override
+	protected void initializeInheritanceSection(Composite container) {
+		new OrmInheritanceComposite(this, container);
+	}
+}
\ No newline at end of file

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmIdMappingComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmIdMappingComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/details/orm/HibernateOrmIdMappingComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.details.orm;
+
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.details.JpaComposite;
+import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateColumn;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMapping;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateColumnComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateOrmIdMappingComposite extends AbstractIdMappingComposite<HibernateOrmIdMapping>
+implements JpaComposite{
+	/**
+	 * Creates a new <code>HibernateIdMappingComposite</code>.
+	 *
+	 * @param subjectHolder The holder of the subject <code>IdMapping</code>
+	 * @param parent The parent container
+	 * @param widgetFactory The factory used to create various common widgets
+	 */
+	public HibernateOrmIdMappingComposite(PropertyValueModel<? extends HibernateOrmIdMapping> subjectHolder,
+	                          Composite parent,
+	                          WidgetFactory widgetFactory) {
+
+		super(subjectHolder, parent, widgetFactory);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	protected void initializeIdSection(Composite container) {
+		new HibernateColumnComposite(this, (PropertyValueModel<? extends HibernateColumn>) buildColumnHolder(), container);
+		new OrmMappingNameChooser(this, getSubjectHolder(), container);
+	}	
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateJavaEntityComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateJavaEntityComposite.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/java/details/HibernateJavaEntityComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -10,7 +10,6 @@
  ******************************************************************************/
 package org.jboss.tools.hibernate.jpt.ui.internal.java.details;
 
-import org.eclipse.jpt.core.context.Entity;
 import org.eclipse.jpt.core.context.GeneratorContainer;
 import org.eclipse.jpt.core.context.QueryContainer;
 import org.eclipse.jpt.ui.WidgetFactory;
@@ -23,12 +22,11 @@
 import org.eclipse.jpt.utility.model.value.PropertyValueModel;
 import org.eclipse.swt.widgets.Composite;
 import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateGeneratorContainer;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateIdMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaQueryContainer;
-import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateGenerationComposite2;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.HibernateTableComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateGenerationComposite;
 import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateQueriesComposite;
-import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateTableComposite;
 
 /**
  * @author Dmitry Geraskov
@@ -47,11 +45,13 @@
 	}
 	
 	
+	@SuppressWarnings("unchecked")
 	@Override
 	protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
 		new HibernateQueriesComposite(this, (PropertyValueModel<? extends HibernateJavaQueryContainer>) queryContainerHolder, container);
 	}
 	
+	@SuppressWarnings("unused")
 	private PropertyValueModel<HibernateGeneratorContainer> buildGeneratorContainer() {
 		return new PropertyAspectAdapter<HibernateJavaEntity, HibernateGeneratorContainer>(getSubjectHolder()) {
 			@Override
@@ -61,9 +61,10 @@
 		};
 	}
 	
+	@SuppressWarnings("unchecked")
 	@Override
 	protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
-		new HibernateGenerationComposite2(this, (PropertyValueModel<? extends HibernateGeneratorContainer>) generatorContainerHolder, addSubPane(container, 10), true);
+		new HibernateGenerationComposite(this, (PropertyValueModel<? extends HibernateGeneratorContainer>) generatorContainerHolder, addSubPane(container, 10), true);
 	}
 	
 	

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmEntityComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmEntityComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmEntityComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm;
+
+import org.eclipse.jpt.core.context.AccessHolder;
+import org.eclipse.jpt.core.context.GeneratorContainer;
+import org.eclipse.jpt.core.context.QueryContainer;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
+import org.eclipse.jpt.core.jpa2.context.Cacheable2_0;
+import org.eclipse.jpt.core.jpa2.context.CacheableHolder2_0;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.internal.details.AbstractEntityComposite;
+import org.eclipse.jpt.ui.internal.details.AccessTypeComposite;
+import org.eclipse.jpt.ui.internal.details.EntityNameComposite;
+import org.eclipse.jpt.ui.internal.details.IdClassComposite;
+import org.eclipse.jpt.ui.internal.details.orm.MetadataCompleteComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmInheritanceComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmJavaClassChooser;
+import org.eclipse.jpt.ui.internal.details.orm.OrmSecondaryTablesComposite;
+import org.eclipse.jpt.ui.internal.jpa2.details.Cacheable2_0Pane;
+import org.eclipse.jpt.ui.internal.jpa2.details.Entity2_0OverridesComposite;
+import org.eclipse.jpt.ui.internal.jpa2.details.Generation2_0Composite;
+import org.eclipse.jpt.ui.internal.jpa2.details.Queries2_0Composite;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.HibernateTableComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0OrmEntityComposite extends AbstractEntityComposite<HibernateOrmEntity> {
+
+	/**
+	 * @param subjectHolder
+	 * @param parent
+	 * @param widgetFactory
+	 */
+	public Hibernate2_0OrmEntityComposite(PropertyValueModel<? extends HibernateOrmEntity> subjectHolder,
+			Composite parent, WidgetFactory widgetFactory) {
+		super(subjectHolder, parent, widgetFactory);
+	}
+	
+	@Override
+	protected void initializeEntitySection(Composite container) {
+		new OrmJavaClassChooser(this, getSubjectHolder(), container, false);
+		new HibernateTableComposite(this, container);
+		new EntityNameComposite(this, container);
+		new AccessTypeComposite(this, buildAccessHolder(), container);
+		new IdClassComposite(this, buildIdClassReferenceHolder(), container);
+		new Cacheable2_0Pane(this, buildCacheableHolder(), container);
+		new MetadataCompleteComposite(this, getSubjectHolder(), container);
+	}
+	
+	protected PropertyValueModel<Cacheable2_0> buildCacheableHolder() {
+		return new PropertyAspectAdapter<OrmEntity, Cacheable2_0>(getSubjectHolder()) {
+			@Override
+			protected Cacheable2_0 buildValue_() {
+				return ((CacheableHolder2_0) this.subject).getCacheable();
+			}
+		};
+	}
+	
+	@Override
+	protected void initializeAttributeOverridesSection(Composite container) {
+		new Entity2_0OverridesComposite(this, container);
+	}
+
+	@Override
+	protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
+		new Generation2_0Composite(this, generatorContainerHolder, container);
+	}
+
+	@Override
+	protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
+		new Queries2_0Composite(this, queryContainerHolder, container);
+	}
+	
+	protected PropertyValueModel<AccessHolder> buildAccessHolder() {
+		return new PropertyAspectAdapter<OrmEntity, AccessHolder>(
+			getSubjectHolder())
+		{
+			@Override
+			protected AccessHolder buildValue_() {
+				return this.subject.getPersistentType();
+			}
+		};
+	}
+	@Override
+	protected void initializeSecondaryTablesSection(Composite container) {
+		new OrmSecondaryTablesComposite(this, container);
+	}
+
+	@Override
+	protected void initializeInheritanceSection(Composite container) {
+		new OrmInheritanceComposite(this, container);
+	}
+}
\ No newline at end of file

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmIdMappingComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmIdMappingComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/orm/Hibernate2_0OrmIdMappingComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm;
+
+import org.eclipse.jpt.core.context.AccessHolder;
+import org.eclipse.jpt.core.context.orm.OrmIdMapping;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.details.JpaComposite;
+import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite;
+import org.eclipse.jpt.ui.internal.details.AccessTypeComposite;
+import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser;
+import org.eclipse.jpt.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane;
+import org.eclipse.jpt.ui.internal.jpa2.details.IdMappingGeneration2_0Composite;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateColumn;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMapping;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateColumnComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0OrmIdMappingComposite extends AbstractIdMappingComposite<HibernateOrmIdMapping>
+implements JpaComposite{
+	/**
+	 * Creates a new <code>HibernateIdMappingComposite</code>.
+	 *
+	 * @param subjectHolder The holder of the subject <code>IdMapping</code>
+	 * @param parent The parent container
+	 * @param widgetFactory The factory used to create various common widgets
+	 */
+	public Hibernate2_0OrmIdMappingComposite(PropertyValueModel<? extends HibernateOrmIdMapping> subjectHolder,
+	                          Composite parent,
+	                          WidgetFactory widgetFactory) {
+
+		super(subjectHolder, parent, widgetFactory);
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@Override
+	protected void initializeIdSection(Composite container) {
+		new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container);
+		new HibernateColumnComposite(this, (PropertyValueModel<? extends HibernateColumn>) buildColumnHolder(), container);
+		new OrmMappingNameChooser(this, getSubjectHolder(), container);
+		new AccessTypeComposite(this, buildAccessHolderHolder(), container);
+	}
+	
+	@Override
+	protected void initializeGenerationCollapsibleSection(Composite container) {
+		new IdMappingGeneration2_0Composite(this, container);
+	}
+	
+	protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() {
+		return new PropertyAspectAdapter<OrmIdMapping, AccessHolder>(getSubjectHolder()) {
+			@Override
+			protected AccessHolder buildValue_() {
+				return this.subject.getPersistentAttribute();
+			}
+		};
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiDefinition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiDefinition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiDefinition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,104 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.jpa2.mapping.details.orm;
+
+import java.util.List;
+
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.context.AttributeMapping;
+import org.eclipse.jpt.core.context.TypeMapping;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmAttributeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmTypeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.orm.OrmXmlUiFactory;
+import org.eclipse.jpt.ui.internal.details.orm.AbstractOrmXmlResourceUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmBasicMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddableUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddedIdMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmEntityUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmIdMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmManyToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmManyToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmMappedSuperclassUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmOneToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmOneToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmTransientMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.orm.OrmVersionMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.jpa2.details.orm.OrmElementCollectionMapping2_0UiDefinition;
+import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider;
+import org.eclipse.jpt.ui.structure.JpaStructureProvider;
+
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0OrmXmlUiDefinition extends AbstractOrmXmlResourceUiDefinition {
+	
+	// singleton
+	private static final ResourceUiDefinition INSTANCE = new Hibernate2_0OrmXmlUiDefinition();
+	
+	
+	/**
+	 * Return the singleton
+	 */
+	public static ResourceUiDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private Hibernate2_0OrmXmlUiDefinition() {
+		super();
+	}
+	
+
+	@Override
+	protected OrmXmlUiFactory buildOrmXmlUiFactory() {
+		return new Hibernate2_0OrmXmlUiFactory();
+	}
+	
+	public boolean providesUi(JpaResourceType resourceType) {
+		return resourceType.equals(JptCorePlugin.ORM_XML_2_0_RESOURCE_TYPE);
+	}
+	
+	public JpaStructureProvider getStructureProvider() {
+		return OrmResourceModelStructureProvider.instance();
+	}
+	
+	@Override
+	protected void addOrmAttributeMappingUiDefinitionsTo(List<OrmAttributeMappingUiDefinition<? extends AttributeMapping>> definitions) {
+		definitions.add(OrmIdMappingUiDefinition.instance());
+		definitions.add(OrmEmbeddedIdMappingUiDefinition.instance());
+		definitions.add(OrmBasicMappingUiDefinition.instance());
+		definitions.add(OrmVersionMappingUiDefinition.instance());
+		definitions.add(OrmManyToOneMappingUiDefinition.instance());
+		definitions.add(OrmOneToManyMappingUiDefinition.instance());
+		definitions.add(OrmOneToOneMappingUiDefinition.instance());
+		definitions.add(OrmManyToManyMappingUiDefinition.instance());
+		definitions.add(OrmEmbeddedMappingUiDefinition.instance());
+		definitions.add(OrmTransientMappingUiDefinition.instance());
+		
+		definitions.add(OrmElementCollectionMapping2_0UiDefinition.instance());
+	}
+	
+	@Override
+	protected void addOrmTypeMappingUiDefinitionsTo(List<OrmTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
+		definitions.add(OrmEntityUiDefinition.instance());
+		definitions.add(OrmMappedSuperclassUiDefinition.instance());
+		definitions.add(OrmEmbeddableUiDefinition.instance());
+	}
+	
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/mapping/details/orm/Hibernate2_0OrmXmlUiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,59 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.jpa2.mapping.details.orm;
+
+import org.eclipse.jpt.core.context.orm.OrmBasicMapping;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
+import org.eclipse.jpt.core.context.orm.OrmIdMapping;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.details.JpaComposite;
+import org.eclipse.jpt.ui.internal.jpa2.GenericOrmXml2_0UiFactory;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMapping;
+import org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm.Hibernate2_0OrmEntityComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm.Hibernate2_0OrmIdMappingComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateBasicMappingComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0OrmXmlUiFactory extends GenericOrmXml2_0UiFactory {
+	
+	@Override
+	public JpaComposite createOrmBasicMappingComposite(
+			PropertyValueModel<OrmBasicMapping> subjectHolder,
+			Composite parent, WidgetFactory widgetFactory) {
+		return new HibernateBasicMappingComposite(subjectHolder, parent,
+				widgetFactory);
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createOrmIdMappingComposite(
+			PropertyValueModel<OrmIdMapping> subjectHolder,
+			Composite parent,
+			WidgetFactory widgetFactory) {
+		return new Hibernate2_0OrmIdMappingComposite((PropertyValueModel<? extends HibernateOrmIdMapping>) subjectHolder, parent, widgetFactory);
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createOrmEntityComposite(
+			PropertyValueModel<OrmEntity> subjectHolder, Composite parent,
+			WidgetFactory widgetFactory) {
+		return new Hibernate2_0OrmEntityComposite((PropertyValueModel<? extends HibernateOrmEntity>) subjectHolder, parent, widgetFactory);
+	}
+
+
+}

Copied: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite.java (from rev 22779, trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite2.java)
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,165 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
+
+import org.eclipse.jpt.core.context.GeneratorContainer;
+import org.eclipse.jpt.ui.internal.details.GenerationComposite;
+import org.eclipse.jpt.ui.internal.details.GeneratorComposite.GeneratorBuilder;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.GenericGenerator;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateGeneratorContainer;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaGeneratorContainer;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGenerator;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateGenerationComposite extends GenerationComposite {
+	
+	private WritablePropertyValueModel<Boolean> genericGeneratorExpansionStateHolder;
+	private WritablePropertyValueModel<GenericGenerator> generatorHolder;
+	private boolean allowMany;
+	
+	public HibernateGenerationComposite(Pane<?> parentPane,
+			PropertyValueModel<? extends HibernateGeneratorContainer> subjectHolder,
+			Composite parent, boolean allowMany) {
+		super(parentPane, subjectHolder, parent);
+		this.allowMany = allowMany;
+	}
+	
+	@Override
+	protected void initialize() {
+		super.initialize();
+		this.genericGeneratorExpansionStateHolder = new SimplePropertyValueModel<Boolean>(Boolean.FALSE);
+		this.generatorHolder = buildGeneratorHolder();
+	}
+	
+	private WritablePropertyValueModel<GenericGenerator> buildGeneratorHolder() {
+		return new SimplePropertyValueModel<GenericGenerator>();
+	}
+	
+	@Override
+	public HibernateJavaGeneratorContainer getSubject() {
+		return (HibernateJavaGeneratorContainer) super.getSubject();
+	}
+	
+	@Override
+	protected void doPopulate() {
+		super.doPopulate();
+		this.genericGeneratorExpansionStateHolder .setValue(Boolean.valueOf(getSubject() != null
+				&& getSubject().genericGeneratorsSize() > 0));
+	}
+	
+	@Override
+	protected void initializeLayout(Composite container) {
+		super.initializeLayout(container);
+		this.initializeGenericGeneratorPane(container);
+	}
+	
+	private void initializeGenericGeneratorPane(Composite container) {
+		
+		// Generic Generator sub-section
+		container = this.addCollapsibleSubSection(
+			this.addSubPane(container, 10),
+			HibernateUIMappingMessages.HibernateGeneratorsComposite_SectionLabel,
+			this.genericGeneratorExpansionStateHolder
+		);
+
+		// Generic Generator check box
+		Button genericGeneratorCheckBox = addCheckBox(
+			this.addSubPane(container, 5),
+			HibernateUIMappingMessages.HibernateGeneratorsComposite_CheckBoxLabel,
+			buildGenericGeneratorBooleanHolder(),
+			null
+		);
+		
+		if (allowMany){
+			//FIXME add table with generators
+		}
+		//FIXME for many generators
+		if (getSubject().genericGeneratorsSize() > 0){
+			generatorHolder.setValue(getSubject().genericGenerators().next());
+		}
+
+		// Generic Generator pane
+		this.addGenericGeneratorComposite(
+			container, 0,
+			genericGeneratorCheckBox.getBorderWidth() + 16);
+	}
+	
+	protected void addGenericGeneratorComposite(Composite container, int topMargin, int leftMargin) {
+		new GenericGeneratorComposite(
+			this,
+			this.generatorHolder,
+			this.addSubPane(container, topMargin, leftMargin),
+			this.buildGenericGeneratorBuilder()
+		);
+	}
+	
+	protected GeneratorBuilder<GenericGenerator> buildGenericGeneratorBuilder() {
+		return new GeneratorBuilder<GenericGenerator>() {
+			public GenericGenerator addGenerator() {
+				HibernateJavaGeneratorContainer container = (HibernateJavaGeneratorContainer)getSubject();
+				JavaGenericGenerator generator = container.addGenericGenerator(container.genericGeneratorsSize());
+				generatorHolder.setValue(generator);
+				return generator;
+			}
+		};
+	}
+	
+	/*private ListValueModel<JavaGenericGenerator> buildGenericGeneratorHolder() {
+		return new ListAspectAdapter<HibernateJavaGeneratorContainer, JavaGenericGenerator>(
+			(PropertyValueModel)getSubjectHolder(),
+			HibernateGeneratorContainer.GENERIC_GENERATORS_LIST)
+		{
+			@Override
+			protected ListIterator<JavaGenericGenerator> listIterator_() {
+				return ((HibernateJavaGeneratorContainer)subject).genericGenerators();
+			}
+
+			@Override
+			protected int size_() {
+				return ((HibernateJavaGeneratorContainer)subject).genericGeneratorsSize();
+			}
+		};
+	}*/
+	
+	private WritablePropertyValueModel<Boolean> buildGenericGeneratorBooleanHolder() {
+		return new PropertyAspectAdapter<GeneratorContainer, Boolean>(getSubjectHolder(), HibernateGeneratorContainer.GENERIC_GENERATORS_LIST) {
+			@Override
+			protected Boolean buildValue_() {
+				return Boolean.valueOf(((HibernateJavaGeneratorContainer)subject).genericGeneratorsSize() > 0);
+			}
+
+			@Override
+			protected void setValue_(Boolean value) {
+				HibernateJavaGeneratorContainer container = (HibernateJavaGeneratorContainer)subject;
+				if (value.booleanValue()) {
+					JavaGenericGenerator gc = container.addGenericGenerator(container.genericGeneratorsSize());
+					generatorHolder.setValue(gc);
+				} else if (!value.booleanValue()) {
+					for (int i = 0; i < container.genericGeneratorsSize(); i++) {
+						container.removeGenericGenerator(0);
+					}
+					generatorHolder.setValue(null);
+				}
+			}
+		};
+	}
+
+}

Deleted: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite2.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite2.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGenerationComposite2.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,165 +0,0 @@
-/*******************************************************************************
-  * Copyright (c) 2010 Red Hat, Inc.
-  * Distributed under license by Red Hat, Inc. All rights reserved.
-  * This program is 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
-  *
-  * Contributor:
-  *     Red Hat, Inc. - initial API and implementation
-  ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
-
-import org.eclipse.jpt.core.context.GeneratorContainer;
-import org.eclipse.jpt.ui.internal.details.GenerationComposite;
-import org.eclipse.jpt.ui.internal.details.GeneratorComposite.GeneratorBuilder;
-import org.eclipse.jpt.ui.internal.widgets.Pane;
-import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
-import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel;
-import org.eclipse.jpt.utility.model.value.PropertyValueModel;
-import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.jboss.tools.hibernate.jpt.core.internal.context.GenericGenerator;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateGeneratorContainer;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaGeneratorContainer;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGenerator;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class HibernateGenerationComposite2 extends GenerationComposite {
-	
-	private WritablePropertyValueModel<Boolean> genericGeneratorExpansionStateHolder;
-	private WritablePropertyValueModel<GenericGenerator> generatorHolder;
-	private boolean allowMany;
-	
-	public HibernateGenerationComposite2(Pane<?> parentPane,
-			PropertyValueModel<? extends HibernateGeneratorContainer> subjectHolder,
-			Composite parent, boolean allowMany) {
-		super(parentPane, subjectHolder, parent);
-		this.allowMany = allowMany;
-	}
-	
-	@Override
-	protected void initialize() {
-		super.initialize();
-		this.genericGeneratorExpansionStateHolder = new SimplePropertyValueModel<Boolean>(Boolean.FALSE);
-		this.generatorHolder = buildGeneratorHolder();
-	}
-	
-	private WritablePropertyValueModel<GenericGenerator> buildGeneratorHolder() {
-		return new SimplePropertyValueModel<GenericGenerator>();
-	}
-	
-	@Override
-	public HibernateJavaGeneratorContainer getSubject() {
-		return (HibernateJavaGeneratorContainer) super.getSubject();
-	}
-	
-	@Override
-	protected void doPopulate() {
-		super.doPopulate();
-		this.genericGeneratorExpansionStateHolder .setValue(Boolean.valueOf(getSubject() != null
-				&& getSubject().genericGeneratorsSize() > 0));
-	}
-	
-	@Override
-	protected void initializeLayout(Composite container) {
-		super.initializeLayout(container);
-		this.initializeGenericGeneratorPane(container);
-	}
-	
-	private void initializeGenericGeneratorPane(Composite container) {
-		
-		// Generic Generator sub-section
-		container = this.addCollapsibleSubSection(
-			this.addSubPane(container, 10),
-			HibernateUIMappingMessages.HibernateGeneratorsComposite_SectionLabel,
-			this.genericGeneratorExpansionStateHolder
-		);
-
-		// Generic Generator check box
-		Button genericGeneratorCheckBox = addCheckBox(
-			this.addSubPane(container, 5),
-			HibernateUIMappingMessages.HibernateGeneratorsComposite_CheckBoxLabel,
-			buildGenericGeneratorBooleanHolder(),
-			null
-		);
-		
-		if (allowMany){
-			//FIXME add table with generators
-		}
-		//FIXME for many generators
-		if (getSubject().genericGeneratorsSize() > 0){
-			generatorHolder.setValue(getSubject().genericGenerators().next());
-		}
-
-		// Generic Generator pane
-		this.addGenericGeneratorComposite(
-			container, 0,
-			genericGeneratorCheckBox.getBorderWidth() + 16);
-	}
-	
-	protected void addGenericGeneratorComposite(Composite container, int topMargin, int leftMargin) {
-		new GenericGeneratorComposite(
-			this,
-			this.generatorHolder,
-			this.addSubPane(container, topMargin, leftMargin),
-			this.buildGenericGeneratorBuilder()
-		);
-	}
-	
-	protected GeneratorBuilder<GenericGenerator> buildGenericGeneratorBuilder() {
-		return new GeneratorBuilder<GenericGenerator>() {
-			public GenericGenerator addGenerator() {
-				HibernateJavaGeneratorContainer container = (HibernateJavaGeneratorContainer)getSubject();
-				JavaGenericGenerator generator = container.addGenericGenerator(container.genericGeneratorsSize());
-				generatorHolder.setValue(generator);
-				return generator;
-			}
-		};
-	}
-	
-	/*private ListValueModel<JavaGenericGenerator> buildGenericGeneratorHolder() {
-		return new ListAspectAdapter<HibernateJavaGeneratorContainer, JavaGenericGenerator>(
-			(PropertyValueModel)getSubjectHolder(),
-			HibernateGeneratorContainer.GENERIC_GENERATORS_LIST)
-		{
-			@Override
-			protected ListIterator<JavaGenericGenerator> listIterator_() {
-				return ((HibernateJavaGeneratorContainer)subject).genericGenerators();
-			}
-
-			@Override
-			protected int size_() {
-				return ((HibernateJavaGeneratorContainer)subject).genericGeneratorsSize();
-			}
-		};
-	}*/
-	
-	private WritablePropertyValueModel<Boolean> buildGenericGeneratorBooleanHolder() {
-		return new PropertyAspectAdapter<GeneratorContainer, Boolean>(getSubjectHolder(), HibernateGeneratorContainer.GENERIC_GENERATORS_LIST) {
-			@Override
-			protected Boolean buildValue_() {
-				return Boolean.valueOf(((HibernateJavaGeneratorContainer)subject).genericGeneratorsSize() > 0);
-			}
-
-			@Override
-			protected void setValue_(Boolean value) {
-				HibernateJavaGeneratorContainer container = (HibernateJavaGeneratorContainer)subject;
-				if (value.booleanValue()) {
-					JavaGenericGenerator gc = container.addGenericGenerator(container.genericGeneratorsSize());
-					generatorHolder.setValue(gc);
-				} else if (!value.booleanValue()) {
-					for (int i = 0; i < container.genericGeneratorsSize(); i++) {
-						container.removeGenericGenerator(0);
-					}
-					generatorHolder.setValue(null);
-				}
-			}
-		};
-	}
-
-}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateIdMappingComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateIdMappingComposite.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateIdMappingComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -10,7 +10,6 @@
  ******************************************************************************/
 package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
 
-import org.eclipse.jpt.core.context.Entity;
 import org.eclipse.jpt.ui.WidgetFactory;
 import org.eclipse.jpt.ui.details.JpaComposite;
 import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite;
@@ -51,6 +50,7 @@
 		this.initializeIndexCollapsibleSection(container);
 	}
 	
+	@SuppressWarnings("unchecked")
 	@Override
 	protected void initializeIdSection(Composite container) {
 		new HibernateColumnComposite(this, (PropertyValueModel<? extends HibernateColumn>) buildColumnHolder(), container);
@@ -69,7 +69,7 @@
 	protected void initializeGenerationCollapsibleSection(Composite container) {
 		if (getSubject() instanceof HibernateJavaIdMapping) {
 			// Generic Generator required only for Java.
-			new HibernateGenerationComposite2(this, buildGeneratorContainer(), addSubPane(container, 10), false);
+			new HibernateGenerationComposite(this, buildGeneratorContainer(), addSubPane(container, 10), false);
 		} else {
 			super.initializeGenerationCollapsibleSection(container);
 		}
@@ -87,6 +87,7 @@
 		
 	}
 
+	@SuppressWarnings("unchecked")
 	protected void initializeIndexSection(Composite container) {
 		new IndexHolderComposite((Pane<? extends IndexHolder>) this, container);	
 	}

Deleted: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateTableComposite.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateTableComposite.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateTableComposite.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009-2010 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- *     Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
-
-import java.util.Collection;
-
-import org.eclipse.jpt.db.Schema;
-import org.eclipse.jpt.db.SchemaContainer;
-import org.eclipse.jpt.ui.internal.JpaHelpContextIds;
-import org.eclipse.jpt.ui.internal.details.JptUiDetailsMessages;
-import org.eclipse.jpt.ui.internal.details.db.CatalogCombo;
-import org.eclipse.jpt.ui.internal.details.db.SchemaCombo;
-import org.eclipse.jpt.ui.internal.util.PaneEnabler;
-import org.eclipse.jpt.ui.internal.widgets.Pane;
-import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
-import org.eclipse.jpt.utility.model.value.PropertyValueModel;
-import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateEntity;
-import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateTable;
-import org.jboss.tools.hibernate.jpt.ui.internal.mappings.db.xpl.TableCombo;
-
-/**
- * @author Dmitry Geraskov
- *
- * Here the layout of this pane:
- * <pre>
- * -----------------------------------------------------------------------------
- * |                                                                           |
- * | - Table ----------------------------------------------------------------- |
- * | |          ------------------------------------------------------------ | |
- * | | Table:   | TableCombo                                               | | |
- * | |          ------------------------------------------------------------ | |
- * | |          ------------------------------------------------------------ | |
- * | | Catalog: | CatalogCombo                                             | | |
- * | |          ------------------------------------------------------------ | |
- * | |          ------------------------------------------------------------ | |
- * | | Schema:  | SchemaCombo                                              | | |
- * | |          ------------------------------------------------------------ | |
- * | ------------------------------------------------------------------------- |
- * -----------------------------------------------------------------------------</pre>
- *
- * @see Table
- * @see EntityComposite - The parent container
- * @see TableCombo
- * @see CatalogCombo
- * @see SchemaCombo
- *
- * @TODO repopulate this panel based on the Entity table changing
- *
- * @version 2.0
- * @since 1.0
- */
-public class HibernateTableComposite extends Pane<HibernateEntity>
-{
-	/**
-	 * Creates a new <code>HibernateTableComposite</code>.
-	 *
-	 * @param parentPane The parent container of this one
-	 * @param subjectHolder The holder of the subject
-	 * @param parent The parent container
-	 */
-	public HibernateTableComposite(Pane<? extends HibernateEntity> parentPane,
-	                      Composite parent) {
-
-		super(parentPane, parent, false);
-	}
-
-	@Override
-	protected void initializeLayout(Composite container) {
-
-		// Table group pane
-		Group tableGroupPane = addTitledGroup(
-			container,
-			JptUiDetailsMessages.TableComposite_tableSection
-		);
-
-		PropertyValueModel<HibernateTable> subjectHolder = buildTableHolder();
-		
-		// Table widgets
-		addLabeledComposite(
-				tableGroupPane,
-				JptUiDetailsMessages.TableChooser_label,
-				addTableCombo(subjectHolder, tableGroupPane),
-				JpaHelpContextIds.ENTITY_TABLE
-			);
-		
-		// Catalog widgets
-		addLabeledComposite(
-			tableGroupPane,
-			JptUiDetailsMessages.CatalogChooser_label,
-			addCatalogCombo(subjectHolder, tableGroupPane),
-			JpaHelpContextIds.ENTITY_CATALOG
-		);
-
-		// Schema widgets
-		addLabeledComposite(
-			tableGroupPane,
-			JptUiDetailsMessages.SchemaChooser_label,
-			addSchemaCombo(subjectHolder, tableGroupPane),
-			JpaHelpContextIds.ENTITY_SCHEMA
-		);
-		
-		new PaneEnabler(buildTableEnabledHolder(), this);
-	}
-	
-	protected WritablePropertyValueModel<HibernateTable> buildTableHolder() {
-		
-		return new PropertyAspectAdapter<HibernateEntity, HibernateTable>(getSubjectHolder(), HibernateEntity.TABLE_IS_UNDEFINED_PROPERTY) {
-			@Override
-			protected HibernateTable buildValue_() {
-				return this.subject.tableIsUndefined() ? null : this.subject.getTable();
-			}
-		};
-	}
-	
-	protected WritablePropertyValueModel<Boolean> buildTableEnabledHolder() {
-		return new PropertyAspectAdapter<HibernateEntity, Boolean>(getSubjectHolder(), HibernateEntity.SPECIFIED_TABLE_IS_ALLOWED_PROPERTY) {
-			@Override
-			protected Boolean buildValue_() {
-				return Boolean.valueOf(this.subject.specifiedTableIsAllowed());
-			}
-		};
-	}
-
-	private CatalogCombo<HibernateTable> addCatalogCombo(PropertyValueModel<HibernateTable> tableHolder, Composite container) {
-
-		return new CatalogCombo<HibernateTable>(this, tableHolder, container) {
-
-			@Override
-			protected void addPropertyNames(Collection<String> propertyNames) {
-				super.addPropertyNames(propertyNames);
-				propertyNames.add(HibernateTable.DEFAULT_CATALOG_PROPERTY);
-				propertyNames.add(HibernateTable.SPECIFIED_CATALOG_PROPERTY);
-			}
-
-			@Override
-			protected String getDefaultValue() {
-				return getSubject().getDefaultCatalog();
-			}
-
-			@Override
-			protected void setValue(String value) {
-				getSubject().setSpecifiedCatalog(value);
-			}
-
-			@Override
-			protected String getValue() {
-				return getSubject().getSpecifiedCatalog();
-			}
-		};
-	}
-
-	private SchemaCombo<HibernateTable> addSchemaCombo(PropertyValueModel<HibernateTable> subjectHolder, Composite container) {
-
-		return new SchemaCombo<HibernateTable>(this, subjectHolder, container) {
-
-			@Override
-			protected void addPropertyNames(Collection<String> propertyNames) {
-				super.addPropertyNames(propertyNames);
-				propertyNames.add(HibernateTable.DEFAULT_SCHEMA_PROPERTY);
-				propertyNames.add(HibernateTable.SPECIFIED_SCHEMA_PROPERTY);
-			}
-
-			@Override
-			protected String getDefaultValue() {
-				return getSubject().getDefaultSchema();
-			}
-
-			@Override
-			protected void setValue(String value) {
-				getSubject().setSpecifiedSchema(value);
-			}
-
-			@Override
-			protected String getValue() {
-				return getSubject().getSpecifiedSchema();
-			}
-
-			@Override
-			protected SchemaContainer getDbSchemaContainer_() {
-				return this.getSubject().getDbSchemaContainer();
-			}
-		};
-	}
-
-	private TableCombo<HibernateTable> addTableCombo(PropertyValueModel<HibernateTable> subjectHolder, Composite container) {
-
-		return new TableCombo<HibernateTable>(this, subjectHolder, container) {
-			
-			@Override
-			protected void initializeLayout(Composite container) {
-				super.initializeLayout(container);
-				comboBox.addFocusListener(new FocusListener() {
-					
-					public void focusGained(FocusEvent e) {
-						if (comboBox.getSelectionIndex() != 0){
-							setPopulating(true);
-							comboBox.setText(getSubject().getName());
-							setPopulating(false);
-						}						
-					}
-					
-					public void focusLost(FocusEvent e) {
-						if (comboBox.getSelectionIndex() != 0){
-							setPopulating(true);
-							comboBox.setText(getValue());
-							setPopulating(false);
-						}												
-					}
-				});
-			}
-			
-			@Override
-			protected void addPropertyNames(Collection<String> propertyNames) {
-				super.addPropertyNames(propertyNames);
-				propertyNames.add(HibernateTable.DEFAULT_NAME_PROPERTY);
-				propertyNames.add(HibernateTable.SPECIFIED_NAME_PROPERTY);
-				propertyNames.add(HibernateTable.DEFAULT_SCHEMA_PROPERTY);
-				propertyNames.add(HibernateTable.SPECIFIED_SCHEMA_PROPERTY);
-				propertyNames.add(HibernateTable.DEFAULT_CATALOG_PROPERTY);
-				propertyNames.add(HibernateTable.SPECIFIED_CATALOG_PROPERTY);
-			}
-
-			@Override
-			protected void propertyChanged(String propertyName) {
-				super.propertyChanged(propertyName);
-				if (propertyName == HibernateTable.DEFAULT_SCHEMA_PROPERTY 
-					|| propertyName == HibernateTable.SPECIFIED_SCHEMA_PROPERTY
-					|| propertyName == HibernateTable.DEFAULT_CATALOG_PROPERTY
-					|| propertyName == HibernateTable.SPECIFIED_CATALOG_PROPERTY ) {
-					repopulate();
-				}
-			}
-			
-			@Override
-			protected String getDefaultValue() {
-				return this.getSubject().getDefaultDBTableName();
-			}
-
-			@Override
-			protected void setValue(String value) {
-				this.getSubject().setSpecifiedName(value);
-			}
-
-			@Override
-			public String getValue() {
-				String specifiedName = this.getSubject().getSpecifiedName();
-				if (specifiedName == null){
-					return null;
-				}
-				String dbTableName = this.getSubject().getDBTableName();
-				if (specifiedName.equals(dbTableName)){
-					return specifiedName;
-				} else {
-					return specifiedName + " (" + dbTableName +")"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-
-			@Override
-			protected Schema getDbSchema_() {
-				return this.getSubject().getDbSchema();
-			}
-			
-		};
-	}
-
-}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaResourceUiDefinition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaResourceUiDefinition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaResourceUiDefinition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,98 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.java;
+
+import java.util.List;
+
+import org.eclipse.jpt.core.context.AttributeMapping;
+import org.eclipse.jpt.core.context.TypeMapping;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.details.java.DefaultJavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.java.JavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.java.JavaTypeMappingUiDefinition;
+import org.eclipse.jpt.ui.details.java.JavaUiFactory;
+import org.eclipse.jpt.ui.internal.details.java.AbstractJavaResourceUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.DefaultBasicMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.DefaultEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaBasicMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaEmbeddableUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaEmbeddedIdMappingUDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaEntityUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaIdMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaManyToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaManyToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaMappedSuperclassUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaOneToManyMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaOneToOneMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaTransientMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.JavaVersionMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.details.java.NullJavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaElementCollectionMapping2_0UiDefinition;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class Hibernate2_0JavaResourceUiDefinition extends AbstractJavaResourceUiDefinition {
+	
+	// singleton
+	private static final ResourceUiDefinition INSTANCE = new Hibernate2_0JavaResourceUiDefinition();
+
+	/**
+	 * Return the singleton.
+	 */
+	public static ResourceUiDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * zero-argument constructor
+	 */
+	protected Hibernate2_0JavaResourceUiDefinition() {
+		super();
+	}
+	
+	@Override
+	protected JavaUiFactory buildJavaUiFactory() {
+		return new Hibernate2_0JavaUiFactory();
+	}
+	
+	@Override
+	protected void addSpecifiedAttributeMappingUiDefinitionsTo(List<JavaAttributeMappingUiDefinition<? extends AttributeMapping>> definitions) {
+		definitions.add(JavaElementCollectionMapping2_0UiDefinition.instance());
+		definitions.add(JavaIdMappingUiDefinition.instance());
+		definitions.add(JavaEmbeddedIdMappingUDefinition.instance());
+		definitions.add(JavaBasicMappingUiDefinition.instance());
+		definitions.add(JavaVersionMappingUiDefinition.instance());
+		definitions.add(JavaManyToOneMappingUiDefinition.instance());
+		definitions.add(JavaOneToManyMappingUiDefinition.instance());
+		definitions.add(JavaOneToOneMappingUiDefinition.instance());
+		definitions.add(JavaManyToManyMappingUiDefinition.instance());
+		definitions.add(JavaEmbeddedMappingUiDefinition.instance());
+		definitions.add(JavaTransientMappingUiDefinition.instance());
+	}
+	
+	@Override
+	protected void addDefaultAttributeMappingUiDefinitionsTo(List<DefaultJavaAttributeMappingUiDefinition<?>> definitions) {
+		definitions.add(DefaultBasicMappingUiDefinition.instance());
+		definitions.add(DefaultEmbeddedMappingUiDefinition.instance());
+		definitions.add(NullJavaAttributeMappingUiDefinition.instance());
+	}
+	
+	@Override
+	protected void addSpecifiedTypeMappingUiDefinitionsTo(List<JavaTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
+		definitions.add(JavaEntityUiDefinition.instance());
+		definitions.add(JavaMappedSuperclassUiDefinition.instance());
+		definitions.add(JavaEmbeddableUiDefinition.instance());
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.java;
+
+import org.eclipse.jpt.core.context.java.JavaBasicMapping;
+import org.eclipse.jpt.core.context.java.JavaEntity;
+import org.eclipse.jpt.core.context.java.JavaIdMapping;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.details.JpaComposite;
+import org.eclipse.jpt.ui.internal.details.java.BaseJavaUiFactory;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
+import org.jboss.tools.hibernate.jpt.ui.internal.java.details.HibernateJavaEntityComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm.Hibernate2_0OrmEntityComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateBasicMappingComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateIdMappingComposite;
+
+/**
+ * @author Dmitry Geraskov
+ * 
+ */
+public class Hibernate2_0JavaUiFactory extends BaseJavaUiFactory {
+
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createJavaIdMappingComposite(
+			PropertyValueModel<JavaIdMapping> subjectHolder,
+			Composite parent,
+			WidgetFactory widgetFactory) {
+		return new HibernateIdMappingComposite((PropertyValueModel<? extends HibernateJavaIdMapping>) subjectHolder, parent, widgetFactory);
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createJavaEntityComposite(PropertyValueModel<JavaEntity> subjectHolder,
+			Composite parent, WidgetFactory widgetFactory) {
+		return new HibernateJavaEntityComposite((PropertyValueModel<? extends HibernateJavaEntity>) subjectHolder, parent, widgetFactory);
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createOrmEntityComposite(
+			PropertyValueModel<OrmEntity> subjectHolder, Composite parent,
+			WidgetFactory widgetFactory) {
+		return new Hibernate2_0OrmEntityComposite((PropertyValueModel<? extends HibernateOrmEntity>) subjectHolder, parent, widgetFactory);
+	}
+
+	public JpaComposite createJavaBasicMappingComposite(
+			PropertyValueModel<JavaBasicMapping> subjectHolder,
+			Composite parent,
+			WidgetFactory widgetFactory) {
+		return new HibernateBasicMappingComposite(subjectHolder, parent, widgetFactory);
+	}
+	
+	
+
+}
\ No newline at end of file

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/HibernateJavaUiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/HibernateJavaUiFactory.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/HibernateJavaUiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -22,10 +22,10 @@
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.orm.HibernateOrmEntityComposite;
 import org.jboss.tools.hibernate.jpt.ui.internal.java.details.HibernateJavaEntityComposite;
 import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateBasicMappingComposite;
 import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateIdMappingComposite;
-import org.jboss.tools.hibernate.jpt.ui.internal.orm.details.HibernateOrmEntityComposite;
 
 /**
  * @author Dmitry Geraskov

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/orm/HibernateOrmXmlUiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/orm/HibernateOrmXmlUiFactory.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/orm/HibernateOrmXmlUiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -11,15 +11,18 @@
 package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.orm;
 
 import org.eclipse.jpt.core.context.orm.OrmBasicMapping;
+import org.eclipse.jpt.core.context.orm.OrmEntity;
 import org.eclipse.jpt.core.context.orm.OrmIdMapping;
 import org.eclipse.jpt.ui.WidgetFactory;
 import org.eclipse.jpt.ui.details.JpaComposite;
 import org.eclipse.jpt.ui.internal.details.orm.BaseOrmXmlUiFactory;
 import org.eclipse.jpt.utility.model.value.PropertyValueModel;
 import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
 import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMapping;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.orm.HibernateOrmEntityComposite;
+import org.jboss.tools.hibernate.jpt.ui.internal.details.orm.HibernateOrmIdMappingComposite;
 import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateBasicMappingComposite;
-import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateIdMappingComposite;
 
 /**
  * @author Dmitry Geraskov
@@ -41,7 +44,15 @@
 			PropertyValueModel<OrmIdMapping> subjectHolder,
 			Composite parent,
 			WidgetFactory widgetFactory) {
-		return new HibernateIdMappingComposite((PropertyValueModel<? extends HibernateOrmIdMapping>) subjectHolder, parent, widgetFactory);
+		return new HibernateOrmIdMappingComposite((PropertyValueModel<? extends HibernateOrmIdMapping>) subjectHolder, parent, widgetFactory);
 	}
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public JpaComposite createOrmEntityComposite(
+			PropertyValueModel<OrmEntity> subjectHolder, Composite parent,
+			WidgetFactory widgetFactory) {
+		return new HibernateOrmEntityComposite((PropertyValueModel<? extends HibernateOrmEntity>) subjectHolder, parent, widgetFactory);
+	}
 
 }

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiDefinition.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiDefinition.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiDefinition.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,59 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.persistence.details.jpa2;
+
+import org.eclipse.jpt.core.JpaResourceType;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.ui.ResourceUiDefinition;
+import org.eclipse.jpt.ui.internal.persistence.details.AbstractPersistenceXmlResourceUiDefinition;
+import org.eclipse.jpt.ui.internal.persistence.details.PersistenceXmlUiFactory;
+import org.eclipse.jpt.ui.internal.structure.PersistenceResourceModelStructureProvider;
+import org.eclipse.jpt.ui.structure.JpaStructureProvider;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernatePersistenceXml2_0UiDefinition extends
+		AbstractPersistenceXmlResourceUiDefinition {
+	// singleton
+	private static final ResourceUiDefinition INSTANCE = new HibernatePersistenceXml2_0UiDefinition();
+	
+	
+	/**
+	 * Return the singleton
+	 */
+	public static ResourceUiDefinition instance() {
+		return INSTANCE;
+	}
+	
+	
+	/**
+	 * Enforce singleton usage
+	 */
+	private HibernatePersistenceXml2_0UiDefinition() {
+		super();
+	}
+	
+	
+	@Override
+	protected PersistenceXmlUiFactory buildPersistenceXmlUiFactory() {
+		return new HibernatePersistenceXml2_0UiFactory();
+	}
+	
+	public boolean providesUi(JpaResourceType resourceType) {
+		return resourceType.equals(JptCorePlugin.PERSISTENCE_XML_2_0_RESOURCE_TYPE);
+	}
+	
+	public JpaStructureProvider getStructureProvider() {
+		return PersistenceResourceModelStructureProvider.instance();
+	}
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/persistence/details/jpa2/HibernatePersistenceXml2_0UiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.persistence.details.jpa2;
+
+import java.util.ArrayList;
+import java.util.ListIterator;
+
+import org.eclipse.jpt.core.context.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceUnit2_0;
+import org.eclipse.jpt.core.jpa2.context.persistence.connection.JpaConnection2_0;
+import org.eclipse.jpt.core.jpa2.context.persistence.options.JpaOptions2_0;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.details.JpaPageComposite;
+import org.eclipse.jpt.ui.internal.jpa2.persistence.connection.GenericPersistenceUnit2_0ConnectionTab;
+import org.eclipse.jpt.ui.internal.jpa2.persistence.options.GenericPersistenceUnit2_0OptionsTab;
+import org.eclipse.jpt.ui.internal.persistence.details.GenericPersistenceUnitGeneralComposite;
+import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitPropertiesComposite;
+import org.eclipse.jpt.ui.internal.persistence.details.PersistenceXmlUiFactory;
+import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit;
+import org.jboss.tools.hibernate.jpt.core.internal.context.basic.BasicHibernateProperties;
+import org.jboss.tools.hibernate.jpt.ui.internal.persistence.details.HibernatePropertiesComposite;
+
+/**
+ * @author Dmitry Geraskov
+ * 
+ */
+public class HibernatePersistenceXml2_0UiFactory implements
+		PersistenceXmlUiFactory {
+
+	// **************** persistence unit composites ****************************
+	public ListIterator<JpaPageComposite> createPersistenceUnitComposites(
+			PropertyValueModel<PersistenceUnit> subjectHolder,
+			Composite parent, WidgetFactory widgetFactory) {
+
+		ArrayList<JpaPageComposite> pages = new ArrayList<JpaPageComposite>(4);
+
+		PropertyValueModel<JpaConnection2_0> connection2_0Holder = this
+				.buildJpaConnection2_0Holder(subjectHolder);
+		PropertyValueModel<JpaOptions2_0> options2_0Holder = this
+				.buildJpaOptions2_0Holder(subjectHolder);
+
+		pages.add(new GenericPersistenceUnitGeneralComposite(subjectHolder,
+				parent, widgetFactory));
+		pages.add(new GenericPersistenceUnit2_0ConnectionTab(
+				connection2_0Holder, parent, widgetFactory));
+		pages.add(new GenericPersistenceUnit2_0OptionsTab(options2_0Holder,
+				parent, widgetFactory));
+		pages.add(new PersistenceUnitPropertiesComposite(subjectHolder, parent,
+				widgetFactory));
+
+		// ************Hibernate pages***************
+		PropertyValueModel<BasicHibernateProperties> basicHolder = this
+				.buildBasicHolder(subjectHolder);
+		pages.add(new HibernatePropertiesComposite(basicHolder, parent,
+				widgetFactory));
+
+		return pages.listIterator();
+	}
+
+	// ********** private methods **********
+
+	private PropertyValueModel<JpaConnection2_0> buildJpaConnection2_0Holder(
+			PropertyValueModel<PersistenceUnit> subjectHolder) {
+		return new TransformationPropertyValueModel<PersistenceUnit, JpaConnection2_0>(
+				subjectHolder) {
+			@Override
+			protected JpaConnection2_0 transform_(PersistenceUnit value) {
+				return (JpaConnection2_0) ((PersistenceUnit2_0) value)
+						.getConnection();
+			}
+		};
+	}
+
+	private PropertyValueModel<JpaOptions2_0> buildJpaOptions2_0Holder(
+			PropertyValueModel<PersistenceUnit> subjectHolder) {
+		return new TransformationPropertyValueModel<PersistenceUnit, JpaOptions2_0>(
+				subjectHolder) {
+			@Override
+			protected JpaOptions2_0 transform_(PersistenceUnit value) {
+				return (JpaOptions2_0) ((PersistenceUnit2_0) value)
+						.getOptions();
+			}
+		};
+	}
+
+	private PropertyValueModel<BasicHibernateProperties> buildBasicHolder(
+			PropertyValueModel<PersistenceUnit> subjectHolder) {
+		return new TransformationPropertyValueModel<PersistenceUnit, BasicHibernateProperties>(
+				subjectHolder) {
+			@Override
+			protected BasicHibernateProperties transform_(PersistenceUnit value) {
+				return ((HibernatePersistenceUnit) value)
+						.getHibernatePersistenceUnitProperties();
+			}
+		};
+	}
+
+}

Added: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/platform/HibernateJpa2_0PlatformUiFactory.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/platform/HibernateJpa2_0PlatformUiFactory.java	                        (rev 0)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/platform/HibernateJpa2_0PlatformUiFactory.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ *     Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.platform;
+
+import org.eclipse.jpt.ui.JpaPlatformUi;
+import org.eclipse.jpt.ui.JpaPlatformUiFactory;
+import org.eclipse.jpt.ui.internal.platform.generic.GenericNavigatorProvider;
+import org.jboss.tools.hibernate.jpt.ui.internal.HibernateJpa2_0PlatformUiProvider;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpa2_0PlatformUiFactory implements JpaPlatformUiFactory {
+
+	public HibernateJpa2_0PlatformUiFactory() {
+		super();
+	}
+
+	public JpaPlatformUi buildJpaPlatformUi() {
+		return new HibernateJpaPlatformUi(
+			new GenericNavigatorProvider(),
+			HibernateJpa2_0PlatformUiProvider.instance()
+		);
+	}
+
+}

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/wizard/GenerateInitWizardPage.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/wizard/GenerateInitWizardPage.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/wizard/GenerateInitWizardPage.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -282,7 +282,7 @@
 	private String createConsoleConfiguration(){		
 		ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
 		String dialect = determineDialect();
-		String ccName = launchManager.generateUniqueLaunchConfigurationNameFrom(HibernateConsoleMessages.AddConfigurationAction_hibernate);
+		String ccName = launchManager.generateLaunchConfigurationName(HibernateConsoleMessages.AddConfigurationAction_hibernate);
 		ConsoleConfigurationPreferences prefs = new EclipseConsoleConfigurationPreferences(ccName, 
 				ConfigurationMode.JPA, jpaProject.getName(), true, 
 				null, null, null, 

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.classpath
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.classpath	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.classpath	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="lib" path="lib/ejb3-persistence.jar"/>
+	<classpathentry kind="lib" path="lib/hibernate-annotations.jar"/>
+	<classpathentry kind="lib" path="lib/postgresql-8.4-701.jdbc3.jar"/>
+	<classpathentry kind="lib" path="lib/hibernate3.jar"/>
+	<classpathentry kind="output" path="build/classes"/>
+</classpath>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.project
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.project	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.project	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>testHibernateJpaOrmProject</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.hibernate.eclipse.console.hibernateBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.hibernate.eclipse.console.hibernateNature</nature>
+	</natures>
+</projectDescription>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jdt.core.prefs	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jdt.core.prefs	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,8 @@
+#Mon May 10 13:11:51 EEST 2010
+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.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jpt.core.prefs
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jpt.core.prefs	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.jpt.core.prefs	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,3 @@
+#Mon May 10 13:11:52 EEST 2010
+eclipse.preferences.version=1
+org.eclipse.jpt.core.platform=hibernate

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.component
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.component	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.component	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="testHibernateJpaProject">
+        <wb-resource deploy-path="/" source-path="/src"/>
+    </wb-module>
+</project-modules>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,7 @@
+<root>
+  <facet id="jpt.jpa">
+    <node name="libprov">
+      <attribute name="provider-id" value="jpa-no-op-library-provider"/>
+    </node>
+  </facet>
+</root>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.xml
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.xml	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.eclipse.wst.common.project.facet.core.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="java"/>
+  <fixed facet="jst.utility"/>
+  <fixed facet="jpt.jpa"/>
+  <installed facet="java" version="1.5"/>
+  <installed facet="jst.utility" version="1.0"/>
+  <installed facet="jpt.jpa" version="1.0"/>
+</faceted-project>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.hibernate.eclipse.console.prefs
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.hibernate.eclipse.console.prefs	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/.settings/org.hibernate.eclipse.console.prefs	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,4 @@
+#Tue Jun 22 10:32:56 EEST 2010
+default.configuration=testHibernateJpaOrmProject
+eclipse.preferences.version=1
+hibernate3.enabled=true

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/ejb3-persistence.jar
===================================================================
(Binary files differ)


Property changes on: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/ejb3-persistence.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate-annotations.jar
===================================================================
(Binary files differ)


Property changes on: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate-annotations.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate3.jar
===================================================================
(Binary files differ)


Property changes on: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/hibernate3.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/postgresql-8.4-701.jdbc3.jar
===================================================================
(Binary files differ)


Property changes on: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/lib/postgresql-8.4-701.jdbc3.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/MANIFEST.MF
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/MANIFEST.MF	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/orm.xml
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/orm.xml	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/orm.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
+	<entity class="entity.JustData" access="FIELD">
+		<attributes>
+			<id name="id3">
+			</id>
+			<one-to-many name="mtm1">
+			</one-to-many>
+		</attributes>
+	</entity>
+	<entity class="entity.ManyToMany1" access="FIELD">
+		<attributes>
+			<id name="id1"/>
+			<many-to-one name="justData1"/>
+			<many-to-many name="mtm2" mapped-by="mtm1"/>
+		</attributes>
+	</entity>
+	<entity class="entity.ManyToMany2" name="e.m22" access="FIELD">
+		<table name="ManyToMany22">
+		</table>
+		<attributes>
+			<id name="id2">
+				<column name="id"/></id>
+			<basic name="simpleData2">
+				<column name="simpleData"/></basic>
+			<many-to-many name="mtm1" />
+		</attributes>
+	</entity>
+</entity-mappings>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/persistence.xml
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/persistence.xml	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/META-INF/persistence.xml	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+	<persistence-unit name="testHibernateJpaOrmProject">
+	</persistence-unit>
+</persistence>

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/JustData.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/JustData.java	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/JustData.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,15 @@
+package entity;
+
+import java.util.Set;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+
+public class JustData {
+	
+	private int id3;	
+
+	Set<ManyToMany1> mtm1;
+
+}

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany1.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany1.java	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany1.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,21 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import javax.persistence.ManyToOne;
+import javax.persistence.JoinColumn;
+
+public class ManyToMany1 implements Serializable {
+	
+	private int id1;	
+	
+	private JustData justData1;
+
+	private Set<ManyToMany2> mtm2;
+}
\ No newline at end of file

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany2.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany2.java	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/entity/ManyToMany2.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,24 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.Column;
+import javax.persistence.Table;
+import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.NamedQuery;
+import javax.persistence.JoinTable;
+import javax.persistence.JoinColumn;
+import static javax.persistence.FetchType.EAGER;
+
+public class ManyToMany2 implements Serializable {
+	
+	private int id2;
+	
+	private String simpleData2;
+
+	private Set<ManyToMany1> mtm1;
+}
\ No newline at end of file

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/ns/NamingStrategy.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/ns/NamingStrategy.java	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/ns/NamingStrategy.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,76 @@
+package ns;
+
+
+public class NamingStrategy implements org.hibernate.cfg.NamingStrategy{
+	
+	private static final long serialVersionUID = 1L;
+	
+	private static final String CT_PREFIX = "ctn_";
+	
+	private static final String TN_PREFIX = "tn_";
+	
+	private static final String PC_PREFIX = "pc_";
+	
+	private static final String CN_PREFIX = "cn_";
+	
+	private static final String FK_PREFIX = "fk_";
+	
+	private static final String COL_PREFIX = "col_";
+	
+	private static final String JKCN_PREFIX = "jkcn_";
+	
+	public String classToTableName(String className) {
+		return CT_PREFIX + unqualify(className);
+	}
+	
+	public String propertyToColumnName(String propertyName) {
+		return PC_PREFIX + unqualify(propertyName);
+	}
+	
+	public String tableName(String tableName) {
+		return TN_PREFIX + tableName;
+	}
+	
+	public String collectionTableName(String ownerEntity,
+			String ownerEntityTable, String associatedEntity,
+			String associatedEntityTable, String propertyName) {
+		return COL_PREFIX + unqualify(ownerEntity) + "_"+ associatedEntity+ "_" +
+		associatedEntityTable + "_" + unqualify( associatedEntity ) +
+		"_" +propertyName;
+	}
+	
+	public String columnName(String columnName) {
+		return CN_PREFIX + columnName;
+	}
+	
+	public String joinKeyColumnName(String joinedColumn, String joinedTable) {
+		return JKCN_PREFIX + joinedColumn + '_' + joinedTable;
+	}
+	
+	public String foreignKeyColumnName(String propertyName,
+			String propertyEntityName, String propertyTableName,
+			String referencedColumnName) {
+		return FK_PREFIX + propertyName + "_"+ unqualify(propertyEntityName)
+		+ "_" + propertyTableName + "_" + referencedColumnName;
+	}
+	
+	private String unqualify(String s) {
+		if (s != null) return s;//.replaceAll("\\.", "");
+		return "null";
+	}
+
+	public String logicalCollectionColumnName(String arg0, String arg1,
+			String arg2) {
+		return (arg0 + "_" + arg1 + "_" + arg2);
+	}
+
+	public String logicalCollectionTableName(String arg0, String arg1,
+			String arg2, String arg3) {
+		return (arg0 + "_" + arg1 + "_" + arg2 + "_" + arg3).toUpperCase();
+	}
+
+	public String logicalColumnName(String arg0, String arg1) {
+		return (arg0 + "_" + arg1).toUpperCase();
+	}
+
+}

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/schema.sql
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/schema.sql	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/src/schema.sql	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,55 @@
+
+    create table col_entity.JustData_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 (
+        fk_null_entity.JustData_JustData_NULL_ID3 int4 not null,
+        fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1 int4 not null,
+        primary key (fk_null_entity.JustData_JustData_NULL_ID3, fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1),
+        unique (fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1)
+    );
+
+    create table col_entity.ManyToMany2_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 (
+        fk_mtm2_entity.ManyToMany2_ManyToMany22_ID_ID2 int4 not null,
+        fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1 int4 not null,
+        primary key (fk_mtm2_entity.ManyToMany2_ManyToMany22_ID_ID2, fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1)
+    );
+
+    create table ctn_JustData (
+        pc_id3 int4 not null,
+        primary key (pc_id3)
+    );
+
+    create table ctn_ManyToMany1 (
+        pc_id1 int4 not null,
+        fk_justData1_entity.JustData_JustData_NULL_ID3 int4,
+        primary key (pc_id1)
+    );
+
+    create table tn_ManyToMany22 (
+        cn_id int4 not null,
+        cn_simpleData varchar(255),
+        primary key (cn_id)
+    );
+
+    alter table col_entity.JustData_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 
+        add constraint FK9F2D79611090434E 
+        foreign key (fk_null_entity.JustData_JustData_NULL_ID3) 
+        references ctn_JustData;
+
+    alter table col_entity.JustData_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 
+        add constraint FK9F2D79616057A2A 
+        foreign key (fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1) 
+        references ctn_ManyToMany1;
+
+    alter table col_entity.ManyToMany2_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 
+        add constraint FK46F84CB66057A2A 
+        foreign key (fk_mtm1_entity.ManyToMany1_ManyToMany1_NULL_ID1) 
+        references ctn_ManyToMany1;
+
+    alter table col_entity.ManyToMany2_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1 
+        add constraint FK46F84CB65013FC2F 
+        foreign key (fk_mtm2_entity.ManyToMany2_ManyToMany22_ID_ID2) 
+        references tn_ManyToMany22;
+
+    alter table ctn_ManyToMany1 
+        add constraint FKB4665956A5274FEE 
+        foreign key (fk_justData1_entity.JustData_JustData_NULL_ID3) 
+        references ctn_JustData;

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/testHibernateJpaOrmProject.launch
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/testHibernateJpaOrmProject.launch	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/res/testHibernateJpaOrmProject/testHibernateJpaOrmProject.launch	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.hibernate.eclipse.launch.ConsoleConfigurationLaunchConfigurationType">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="testHibernateJpaOrmProject"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="testHibernateJpaOrmProject"/>
+<stringAttribute key="org.hibernate.eclipse.launch.CONFIGURATION_FACTORY" value="JPA"/>
+<listAttribute key="org.hibernate.eclipse.launch.FILE_MAPPINGS"/>
+<stringAttribute key="org.hibernate.eclipse.launchDIALECT" value="org.hibernate.dialect.PostgreSQLDialect"/>
+<stringAttribute key="org.hibernate.eclipse.launchNAMING_STRATEGY" value="ns.NamingStrategy"/>
+</launchConfiguration>

Deleted: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaAllTests.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaAllTests.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaAllTests.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -1,30 +0,0 @@
-/*******************************************************************************
-  * Copyright (c) 2010 Red Hat, Inc.
-  * Distributed under license by Red Hat, Inc. All rights reserved.
-  * This program is 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
-  *
-  * Contributor:
-  *     Red Hat, Inc. - initial API and implementation
-  ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.core.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class HibernateJpaAllTests {
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(
-			"Test for org.jboss.tools.hibernate.jpt.core.test"); //$NON-NLS-1$
-		suite.addTestSuite(HibernateJpaModelTests.class);
-		suite.addTestSuite(HibernateJpaModelTests.class);
-		return suite;
-	}
-
-}

Modified: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaModelTests.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaModelTests.java	2010-06-23 07:30:21 UTC (rev 22941)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaModelTests.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -13,7 +13,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
+import static junit.framework.Assert.*;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -40,26 +40,31 @@
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToManyMapping;
 import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaTable;
 import org.jboss.tools.test.util.ResourcesUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 /**
  * @author Dmitry Geraskov
  *
  */
-public class HibernateJpaModelTests extends TestCase {
+public class HibernateJpaModelTests {
 	
 	private static final String PROJECT_NAME = "testHibernateJpaProject";
 	private static final String PROJECT_PATH = "res/" + PROJECT_NAME;
 	
-	IProject project = null;
-	JpaProject jpaProject = null;
+	static IProject project = null;
+	static JpaProject jpaProject = null;
 
-	public void setUp() throws Exception {
+	@BeforeClass
+	public static void setUpBeforeClass() throws Exception {
 		project = ResourcesUtils.importProject(Platform.getBundle("org.jboss.tools.hibernate.jpt.core.test"),
 				PROJECT_PATH, new NullProgressMonitor());
 		project.refreshLocal(IResource.DEPTH_INFINITE, null);
 		jpaProject = (JpaProject) project.getAdapter(JpaProject.class);
 	}
 	
+	@Test
 	public void testDefaultMapping(){
 		assertNotNull(jpaProject);
 		JpaRootContextNode rootContextNode = jpaProject.getRootContextNode();
@@ -78,9 +83,10 @@
 		}
 	}
 	
+	@Test
 	public void testNamigStrategyMapping(){
 		ConsoleConfiguration cc = KnownConfigurations.getInstance().find(PROJECT_NAME);
-		assertNotNull("Console configuration not foun for project " + PROJECT_NAME, cc);
+		assertNotNull("Console configuration not found for project " + PROJECT_NAME, cc);
 		cc.build();
 		assertNotNull("Console configuration build problem", cc.getConfiguration());
 		assertNotNull("Naming Strategy not found", cc.getConfiguration().getNamingStrategy());
@@ -230,7 +236,8 @@
 		assertEquals("col_entity.ManyToMany2_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1", hjjt.getDBTableName());
 	}
 	
-	protected void tearDown() throws Exception {
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
 		if(project != null) {
 			boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false);
 			try {

Added: trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaOrmModelTests.java
===================================================================
--- trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaOrmModelTests.java	                        (rev 0)
+++ trunk/hibernatetools/tests/org.jboss.tools.hibernate.jpt.core.test/src/org/jboss/tools/hibernate/jpt/core/test/HibernateJpaOrmModelTests.java	2010-06-23 11:53:25 UTC (rev 22942)
@@ -0,0 +1,249 @@
+/*******************************************************************************
+  * Copyright (c) 2010 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is 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
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static junit.framework.Assert.*;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jpt.core.JpaProject;
+import org.eclipse.jpt.core.context.JpaRootContextNode;
+import org.eclipse.jpt.core.context.orm.OrmJoinTable;
+import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy;
+import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
+import org.eclipse.jpt.core.context.orm.OrmPersistentType;
+import org.eclipse.jpt.core.context.orm.OrmTypeMapping;
+import org.eclipse.jpt.core.context.persistence.MappingFileRef;
+import org.eclipse.jpt.core.context.persistence.Persistence;
+import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXml;
+import org.eclipse.jpt.core.resource.orm.XmlManyToOne;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.hibernate.console.ConsoleConfiguration;
+import org.hibernate.console.KnownConfigurations;
+import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmBasicMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmColumn;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntityImpl;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmIdMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmJoinTable;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmManyToManyMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmManyToOneMapping;
+import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmTable;
+import org.jboss.tools.test.util.ResourcesUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJpaOrmModelTests {
+	
+	private static final String PROJECT_NAME = "testHibernateJpaOrmProject";
+	private static final String PROJECT_PATH = "res/" + PROJECT_NAME;
+	
+	static IProject project = null;
+	static JpaProject jpaProject = null;
+
+	@BeforeClass
+	public static void setUpBeforeClass() throws Exception {
+		project = ResourcesUtils.importProject(Platform.getBundle("org.jboss.tools.hibernate.jpt.core.test"),
+				PROJECT_PATH, new NullProgressMonitor());
+		project.refreshLocal(IResource.DEPTH_INFINITE, null);
+		jpaProject = (JpaProject) project.getAdapter(JpaProject.class);
+	}
+	
+	@Test
+	public void testDefaultMapping(){
+		assertNotNull(jpaProject);
+		JpaRootContextNode rootContextNode = jpaProject.getRootContextNode();
+		Persistence p = rootContextNode.getPersistenceXml().getPersistence();
+		assertTrue(p.persistenceUnits().hasNext());
+		assertTrue(p.persistenceUnits().next() instanceof HibernatePersistenceUnit);
+		HibernatePersistenceUnit hpu = (HibernatePersistenceUnit) p.persistenceUnits().next();
+		List<MappingFileRef> mfrs = CollectionTools.list(hpu.mappingFileRefs());
+		assertTrue(mfrs.size() == 1);
+		assertTrue(mfrs.get(0).getMappingFile() instanceof GenericOrmXml);
+		GenericOrmXml orm = (GenericOrmXml)mfrs.get(0).getMappingFile();
+		List<OrmPersistentType> pTypes = CollectionTools.list(orm.getEntityMappings().getPersistentTypes());
+		assertTrue( pTypes.size() == 3 );
+		checkManyToMany1(orm.getEntityMappings().getPersistentType("entity.ManyToMany1"));
+		checkManyToMany2(orm.getEntityMappings().getPersistentType("entity.ManyToMany2"));
+	}
+	
+	@Test
+	public void testNamigStrategyMapping(){
+		ConsoleConfiguration cc = KnownConfigurations.getInstance().find(PROJECT_NAME);
+		assertNotNull("Console configuration not found for project " + PROJECT_NAME, cc);
+		cc.build();
+		assertNotNull("Console configuration build problem", cc.getConfiguration());
+		assertNotNull("Naming Strategy not found", cc.getConfiguration().getNamingStrategy());
+		assertEquals("ns.NamingStrategy", cc.getConfiguration().getNamingStrategy().getClass().getName());
+		
+		jpaProject = (JpaProject) project.getAdapter(JpaProject.class);
+		assertNotNull(jpaProject);
+		JpaRootContextNode rootContextNode = jpaProject.getRootContextNode();
+		Persistence p = rootContextNode.getPersistenceXml().getPersistence();
+		assertTrue(p.persistenceUnits().hasNext());
+		assertTrue(p.persistenceUnits().next() instanceof HibernatePersistenceUnit);
+		HibernatePersistenceUnit hpu = (HibernatePersistenceUnit) p.persistenceUnits().next();
+		List<MappingFileRef> mfrs = CollectionTools.list(hpu.mappingFileRefs());
+		assertTrue(mfrs.size() == 1);
+		assertTrue(mfrs.get(0).getMappingFile() instanceof GenericOrmXml);
+		GenericOrmXml orm = (GenericOrmXml)mfrs.get(0).getMappingFile();		
+		checkManyToMany1NS(orm.getEntityMappings().getPersistentType("entity.ManyToMany1"));
+		checkManyToMany2NS(orm.getEntityMappings().getPersistentType("entity.ManyToMany2"));
+		cc.reset();
+	}
+	
+	public void checkManyToMany1(OrmPersistentType ormPersistentType){
+		OrmTypeMapping mapping = ormPersistentType.getMapping();
+		assertTrue(mapping instanceof HibernateOrmEntityImpl);
+		HibernateOrmEntityImpl entity = (HibernateOrmEntityImpl) mapping;
+		HibernateOrmTable table = entity.getTable();
+		assertEquals("ManyToMany1", table.getDBTableName());
+		
+		ArrayList<OrmPersistentAttribute> attrs = CollectionTools.list(ormPersistentType.attributes());
+		assertTrue(attrs.size() == 3);
+		
+		//id
+		assertTrue(attrs.get(0).getMapping() instanceof HibernateOrmIdMapping);
+		HibernateOrmIdMapping hjidm = (HibernateOrmIdMapping)attrs.get(0).getMapping();
+		HibernateOrmColumn hjc = (HibernateOrmColumn)hjidm.getColumn();
+		assertEquals("id1", hjc.getDBColumnName());
+		
+		//justData
+		assertTrue(attrs.get(1).getMapping() instanceof HibernateOrmManyToOneMapping);
+		@SuppressWarnings("unchecked")
+		HibernateOrmManyToOneMapping<XmlManyToOne> hjbm = (HibernateOrmManyToOneMapping<XmlManyToOne>)attrs.get(1).getMapping();
+		assertEquals("justData1", hjbm.getName());
+		assertEquals("entity.JustData", hjbm.getDefaultTargetEntity());
+		
+		//mtm
+		assertTrue(attrs.get(2).getMapping() instanceof HibernateOrmManyToManyMapping);
+		HibernateOrmManyToManyMapping hjmtmm = (HibernateOrmManyToManyMapping)attrs.get(2).getMapping();
+		assertEquals("entity.ManyToMany2", hjmtmm.getTargetEntity());
+	}
+	
+	public void checkManyToMany2(OrmPersistentType ormPersistentType){
+		OrmTypeMapping mapping = ormPersistentType.getMapping();
+		assertTrue(mapping instanceof HibernateOrmEntityImpl);
+		HibernateOrmEntityImpl entity = (HibernateOrmEntityImpl) mapping;
+		HibernateOrmTable table = entity.getTable();
+		assertEquals("ManyToMany22", table.getDBTableName());
+		
+		ArrayList<OrmPersistentAttribute> attrs = CollectionTools.list(ormPersistentType.attributes());
+		assertTrue(attrs.size() == 3);
+		
+		//id
+		assertTrue(attrs.get(0).getMapping() instanceof HibernateOrmIdMapping);
+		HibernateOrmIdMapping hjidm = (HibernateOrmIdMapping)attrs.get(0).getMapping();
+		HibernateOrmColumn hjc = (HibernateOrmColumn)hjidm.getColumn();
+		assertEquals("id", hjc.getDBColumnName());
+		
+		//justData
+		assertTrue(attrs.get(1).getMapping() instanceof HibernateOrmBasicMapping);
+		HibernateOrmBasicMapping hjbm = (HibernateOrmBasicMapping)attrs.get(1).getMapping();
+		hjc = (HibernateOrmColumn)hjbm.getColumn();
+		assertEquals("simpleData", hjc.getDBColumnName());
+		
+		//mtm
+		assertTrue(attrs.get(2).getMapping() instanceof HibernateOrmManyToManyMapping);
+		HibernateOrmManyToManyMapping hjmtmm = (HibernateOrmManyToManyMapping)attrs.get(2).getMapping();
+		assertEquals("entity.ManyToMany1", hjmtmm.getTargetEntity());
+		OrmJoinTableJoiningStrategy jtJoiningStrategy = hjmtmm.getRelationshipReference().getJoinTableJoiningStrategy();
+		OrmJoinTable joinTable = jtJoiningStrategy.getJoinTable();
+		assertTrue(joinTable instanceof HibernateOrmJoinTable);
+		HibernateOrmJoinTable hjjt = (HibernateOrmJoinTable)joinTable;
+		assertEquals("ManyToMany22_ManyToMany1", hjjt.getDBTableName());
+	}
+	
+	public void checkManyToMany1NS(OrmPersistentType ormPersistentType){
+		OrmTypeMapping mapping = ormPersistentType.getMapping();
+		assertTrue(mapping instanceof HibernateOrmEntityImpl);
+		HibernateOrmEntityImpl entity = (HibernateOrmEntityImpl) mapping;
+		HibernateOrmTable table = entity.getTable();
+		assertEquals("ctn_ManyToMany1", table.getDBTableName());
+		
+		ArrayList<OrmPersistentAttribute> attrs = CollectionTools.list(ormPersistentType.attributes());
+		assertTrue(attrs.size() == 3);
+		
+		//id
+		assertTrue(attrs.get(0).getMapping() instanceof HibernateOrmIdMapping);
+		HibernateOrmIdMapping hjidm = (HibernateOrmIdMapping)attrs.get(0).getMapping();
+		HibernateOrmColumn hjc = (HibernateOrmColumn)hjidm.getColumn();
+		assertEquals("pc_id1", hjc.getDBColumnName());
+		
+		//justData
+		assertTrue(attrs.get(1).getMapping() instanceof HibernateOrmManyToOneMapping);
+		@SuppressWarnings("unchecked")
+		HibernateOrmManyToOneMapping<XmlManyToOne> hjbm = (HibernateOrmManyToOneMapping<XmlManyToOne>)attrs.get(1).getMapping();
+		assertEquals("justData1", hjbm.getName());
+		assertEquals("entity.JustData", hjbm.getDefaultTargetEntity());
+		
+		//mtm
+		assertTrue(attrs.get(2).getMapping() instanceof HibernateOrmManyToManyMapping);
+		HibernateOrmManyToManyMapping hjmtmm = (HibernateOrmManyToManyMapping)attrs.get(2).getMapping();
+		assertEquals("entity.ManyToMany2", hjmtmm.getTargetEntity());
+	}
+	
+	public void checkManyToMany2NS(OrmPersistentType ormPersistentType){
+		OrmTypeMapping mapping = ormPersistentType.getMapping();
+		assertTrue(mapping instanceof HibernateOrmEntityImpl);
+		HibernateOrmEntityImpl entity = (HibernateOrmEntityImpl) mapping;
+		HibernateOrmTable table = entity.getTable();
+		assertEquals("tn_ManyToMany22", table.getDBTableName());
+		
+		ArrayList<OrmPersistentAttribute> attrs = CollectionTools.list(ormPersistentType.attributes());
+		assertTrue(attrs.size() == 3);
+		
+		//id
+		assertTrue(attrs.get(0).getMapping() instanceof HibernateOrmIdMapping);
+		HibernateOrmIdMapping hjidm = (HibernateOrmIdMapping)attrs.get(0).getMapping();
+		HibernateOrmColumn hjc = (HibernateOrmColumn)hjidm.getColumn();
+		assertEquals("cn_id", hjc.getDBColumnName());
+		
+		//justData
+		assertTrue(attrs.get(1).getMapping() instanceof HibernateOrmBasicMapping);
+		HibernateOrmBasicMapping hjbm = (HibernateOrmBasicMapping)attrs.get(1).getMapping();
+		hjc = (HibernateOrmColumn)hjbm.getColumn();
+		assertEquals("cn_simpleData", hjc.getDBColumnName());
+		
+		//mtm
+		assertTrue(attrs.get(2).getMapping() instanceof HibernateOrmManyToManyMapping);
+		HibernateOrmManyToManyMapping hjmtmm = (HibernateOrmManyToManyMapping)attrs.get(2).getMapping();
+		assertEquals("entity.ManyToMany1", hjmtmm.getTargetEntity());
+		OrmJoinTableJoiningStrategy jtJoiningStrategy = hjmtmm.getRelationshipReference().getJoinTableJoiningStrategy();
+		OrmJoinTable joinTable = jtJoiningStrategy.getJoinTable();
+		assertTrue(joinTable instanceof HibernateOrmJoinTable);
+		HibernateOrmJoinTable hjjt = (HibernateOrmJoinTable)joinTable;
+		assertEquals("col_entity.ManyToMany2_entity.ManyToMany1_ManyToMany1_entity.ManyToMany1_mtm1", hjjt.getDBTableName());
+	}
+	
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+		if(project != null) {
+			boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false);
+			try {
+				project.delete(true,true, null);
+			} finally {
+				ResourcesUtils.setBuildAutomatically(saveAutoBuild);
+			}
+		}
+	}
+
+}



More information about the jbosstools-commits mailing list