Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfullbright2009-11-03 22:37:08 +0000
committerpfullbright2009-11-03 22:37:08 +0000
commit9bd97f81a826acffbde877fe510f49a1ac7fbe8e (patch)
tree8da207a913f69c8f1b9f00c87c11a522d87d7187
parent0f4f9b2eddd71c69683df17716e92d335dcbec84 (diff)
downloadwebtools.dali-9bd97f81a826acffbde877fe510f49a1ac7fbe8e.tar.gz
webtools.dali-9bd97f81a826acffbde877fe510f49a1ac7fbe8e.tar.xz
webtools.dali-9bd97f81a826acffbde877fe510f49a1ac7fbe8e.zip
Added menu item to upgrade document version of legacy xml documents
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF1
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/plugin.xml31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatformProvider.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/MappingFile.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/XmlFile.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformProvider.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericEntityMappings.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistence.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformProvider.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourceAdapterFactory.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourcePropertyTester.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformProvider.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformProvider.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/plugin.properties1
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/plugin.xml110
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/UpgradeXmlFileVersionHandler.java59
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests.extension.resource/src/org/eclipse/jpt/core/tests/extension/resource/TestJpaPlatformProvider.java21
26 files changed, 502 insertions, 114 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
index 1b8dc9deae..216d57df1b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
@@ -65,6 +65,7 @@ Export-Package: org.eclipse.jpt.core,
org.eclipse.jpt.core.internal.resource.java.source;x-internal:=true,
org.eclipse.jpt.core.internal.resource.orm;x-internal:=true,
org.eclipse.jpt.core.internal.resource.persistence;x-internal:=true,
+ org.eclipse.jpt.core.internal.resource.xml,
org.eclipse.jpt.core.internal.synch;x-internal:=true,
org.eclipse.jpt.core.internal.utility;x-internal:=true,
org.eclipse.jpt.core.internal.utility.jdt;x-internal:=true,
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
index f630fc9650..ca2dc41c5b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
@@ -81,25 +81,36 @@
type="org.eclipse.jpt.core.context.PersistentAttribute"
namespace="org.eclipse.jpt.core"
properties="isMapped, isVirtual"
- class="org.eclipse.jpt.core.internal.context.PersistentAttributePropertyTester">
- </propertyTester>
+ class="org.eclipse.jpt.core.internal.context.PersistentAttributePropertyTester"/>
<propertyTester
id="org.eclipse.jpt.core.propertyTester.platformResource"
type="org.eclipse.core.resources.IResource"
namespace="org.eclipse.jpt.core"
properties="jpaPlatform"
- class="org.eclipse.jpt.core.internal.JpaPlatformTester">
- </propertyTester>
+ class="org.eclipse.jpt.core.internal.JpaPlatformTester"/>
<propertyTester
id="org.eclipse.jpt.core.propertyTester.javaElement"
type="org.eclipse.jdt.core.IJavaElement"
namespace="org.eclipse.jpt.core"
properties="jpaPlatform"
- class="org.eclipse.jpt.core.internal.JpaPlatformTester">
- </propertyTester>
-
+ class="org.eclipse.jpt.core.internal.JpaPlatformTester"/>
+
+ <propertyTester
+ id="org.eclipse.jpt.core.propertyTester.xmlResource"
+ type="org.eclipse.jpt.core.resource.xml.JpaXmlResource"
+ namespace="org.eclipse.jpt.core"
+ properties="isLatestSupportedVersion"
+ class="org.eclipse.jpt.core.internal.resource.xml.JpaXmlResourcePropertyTester"/>
+
+ <propertyTester
+ id="org.eclipse.jpt.core.propertyTester.xmlFile"
+ type="org.eclipse.jpt.core.context.XmlFile"
+ namespace="org.eclipse.jpt.core"
+ properties="isLatestSupportedVersion"
+ class="org.eclipse.jpt.core.internal.resource.xml.JpaXmlResourcePropertyTester"/>
+
</extension>
@@ -124,6 +135,12 @@
<adapter type="org.eclipse.jpt.core.IResourcePart"/>
</factory>
+ <factory
+ class="org.eclipse.jpt.core.internal.resource.xml.JpaXmlResourceAdapterFactory"
+ adaptableType="org.eclipse.core.resources.IFile">
+ <adapter type="org.eclipse.jpt.core.resource.xml.JpaXmlResource"/>
+ </factory>
+
</extension>
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java
index d2505072df..d250b5a102 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java
@@ -10,6 +10,7 @@
package org.eclipse.jpt.core;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jpt.core.context.java.JavaAttributeMappingDefinition;
import org.eclipse.jpt.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.core.context.java.JavaPersistentType;
@@ -137,19 +138,27 @@ public interface JpaPlatform
JavaAttributeMappingDefinition getSpecifiedJavaAttributeMappingDefinition(String mappingKey);
- // ********** Mapping Files **********
+ // ********** resource types and definitions **********
/**
* Return a {@link ResourceDefinition} to describe the context model for a file of the given
* resource type.
- * Thrown an {@link IllegalArgumentException} if the resource type is not supported by the platform.
+ * Throw an {@link IllegalArgumentException} if the resource type is not supported by the platform.
*
- * @param resourceType The resource type of a potential mapping file
- * @return The resource definition that can be used to describe the context model of such
- * a file
+ * @param resourceType The resource type of a potential resource definition
+ * @return The resource definition that can be used for such a file
*/
ResourceDefinition getResourceDefinition(JpaResourceType resourceType);
+ /**
+ * Return the most recent supported {@link JpaResourceType} for the given content type.
+ * Throw an {@link IllegalArgumentException} if the content type is not supported by the platform.
+ *
+ * @param contentType A content type supported by the platform
+ * @return The most recent resource type supported by the platform
+ */
+ JpaResourceType getMostRecentSupportedResourceType(IContentType contentType);
+
// ********** database **********
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatformProvider.java
index 181b05d80f..4b52edc877 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatformProvider.java
@@ -10,6 +10,7 @@
package org.eclipse.jpt.core;
import java.util.ListIterator;
+import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jpt.core.context.java.JavaAttributeMappingDefinition;
import org.eclipse.jpt.core.context.java.JavaTypeMappingDefinition;
@@ -35,6 +36,11 @@ import org.eclipse.jpt.core.context.java.JavaTypeMappingDefinition;
public interface JpaPlatformProvider
{
/**
+ * Return the most recent resource type for the given content type supported by this platform
+ */
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType);
+
+ /**
* Return the resource model providers that apply to this platform.
*/
ListIterator<JpaResourceModelProvider> resourceModelProviders();
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/MappingFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/MappingFile.java
index a10e12c49f..6c495d298d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/MappingFile.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/MappingFile.java
@@ -9,7 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.core.context;
-import org.eclipse.jpt.core.JpaStructureNode;
import org.eclipse.jpt.core.context.persistence.PersistentTypeContainer;
import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
@@ -23,14 +22,9 @@ import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface MappingFile
- extends XmlContextNode, JpaStructureNode, PersistentTypeContainer
+ extends XmlFile, PersistentTypeContainer
{
/**
- * Return the underlying xml resource
- */
- JpaXmlResource getXmlResource();
-
- /**
* Return the root object of this mapping file
*/
MappingFileRoot getRoot();
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/XmlFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/XmlFile.java
new file mode 100644
index 0000000000..9e54b71830
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/XmlFile.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.context;
+
+import org.eclipse.jpt.core.JpaStructureNode;
+import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
+
+/**
+ * Context representation of any JPA XML file.
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface XmlFile
+ extends XmlContextNode, JpaStructureNode
+{
+ /**
+ * Return the resource model object
+ */
+ JpaXmlResource getXmlResource();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java
index 81821b259d..a87a5c95f8 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/persistence/PersistenceXml.java
@@ -9,8 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.core.context.persistence;
-import org.eclipse.jpt.core.JpaStructureNode;
-import org.eclipse.jpt.core.context.XmlContextNode;
+import org.eclipse.jpt.core.context.XmlFile;
import org.eclipse.jpt.core.jpa2.MetamodelGenerator;
import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
@@ -24,7 +23,7 @@ import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface PersistenceXml
- extends XmlContextNode, JpaStructureNode, MetamodelGenerator
+ extends XmlFile, MetamodelGenerator
{
// **************** persistence *******************************************
@@ -39,11 +38,6 @@ public interface PersistenceXml
*/
Persistence getPersistence();
- /**
- * Return the resource model object
- */
- JpaXmlResource getXmlResource();
-
// **************** updating **********************************************
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java
index a8786bec38..7e044a5955 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java
@@ -206,7 +206,7 @@ public class GenericJpaPlatform
}
- // ********** Mapping Files **********
+ // ********** resource types and definitions **********
public ResourceDefinition getResourceDefinition(JpaResourceType resourceType) {
for (ResourceDefinition resourceDefinition : CollectionTools.iterable(resourceDefinitions())) {
@@ -221,6 +221,10 @@ public class GenericJpaPlatform
return this.platformProvider.resourceDefinitions();
}
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ return this.platformProvider.getMostRecentSupportedResourceType(contentType);
+ }
+
// ********** database **********
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformProvider.java
index f36b315c9c..751b62c1da 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformProvider.java
@@ -9,8 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.core.internal;
+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;
@@ -62,6 +65,24 @@ public class GenericJpaPlatformProvider
// ********** resource models **********
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+ return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+ return JptCorePlugin.JAR_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
@Override
protected JpaResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericEntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericEntityMappings.java
index 52daa73900..429d0b6cd2 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericEntityMappings.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericEntityMappings.java
@@ -12,9 +12,7 @@ package org.eclipse.jpt.core.internal.jpa1.context.orm;
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.context.orm.OrmXml;
import org.eclipse.jpt.core.internal.context.orm.AbstractEntityMappings;
-import org.eclipse.jpt.core.resource.orm.JPA;
import org.eclipse.jpt.core.resource.orm.XmlEntityMappings;
-import org.eclipse.jpt.core.resource.orm.v2_0.JPA2_0;
public class GenericEntityMappings
extends AbstractEntityMappings
@@ -26,15 +24,7 @@ public class GenericEntityMappings
@Override
protected String latestDocumentVersion() {
- String jpaPlatformVersion = getJpaPlatform().getJpaVersion().getJpaVersion();
- if (jpaPlatformVersion.equals(JptCorePlugin.JPA_FACET_VERSION_1_0)) {
- return JPA.SCHEMA_VERSION;
- }
- else if (jpaPlatformVersion.equals(JptCorePlugin.JPA_FACET_VERSION_2_0)) {
- return JPA2_0.SCHEMA_VERSION;
- }
- else {
- throw new IllegalStateException("Platform version not recognized.");
- }
+ return getJpaPlatform().getMostRecentSupportedResourceType(
+ JptCorePlugin.ORM_XML_CONTENT_TYPE).getVersion();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistence.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistence.java
index 8ac1004a67..3956937faa 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistence.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/persistence/GenericPersistence.java
@@ -21,11 +21,9 @@ import org.eclipse.jpt.core.context.persistence.PersistenceXml;
import org.eclipse.jpt.core.internal.context.persistence.AbstractPersistenceXmlContextNode;
import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
-import org.eclipse.jpt.core.resource.persistence.JPA;
import org.eclipse.jpt.core.resource.persistence.PersistenceFactory;
import org.eclipse.jpt.core.resource.persistence.XmlPersistence;
import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit;
-import org.eclipse.jpt.core.resource.persistence.v2_0.JPA2_0;
import org.eclipse.jpt.core.utility.TextRange;
import org.eclipse.jpt.utility.internal.CollectionTools;
import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator;
@@ -229,16 +227,8 @@ public class GenericPersistence
}
protected String latestDocumentVersion() {
- String jpaPlatformVersion = getJpaPlatform().getJpaVersion().getJpaVersion();
- if (jpaPlatformVersion.equals(JptCorePlugin.JPA_FACET_VERSION_1_0)) {
- return JPA.SCHEMA_VERSION;
- }
- else if (jpaPlatformVersion.equals(JptCorePlugin.JPA_FACET_VERSION_2_0)) {
- return JPA2_0.SCHEMA_VERSION;
- }
- else {
- throw new IllegalStateException("Platform version not recognized.");
- }
+ return getJpaPlatform().getMostRecentSupportedResourceType(
+ JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE).getVersion();
}
/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformProvider.java
index b635ecff80..6247e02782 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformProvider.java
@@ -9,8 +9,11 @@
******************************************************************************/
package org.eclipse.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;
@@ -71,6 +74,24 @@ public class Generic2_0JpaPlatformProvider
// ********** 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
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java
index 50ae2c426c..a8322a227c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java
@@ -12,7 +12,6 @@ package org.eclipse.jpt.core.internal.operations;
import java.util.Iterator;
import java.util.Set;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
@@ -97,16 +96,8 @@ public class OrmFileCreationDataModelProvider
if (getProject() == null) {
return null;
}
- try {
- String facetVersion = getJpaFacetVersion(getProject());
- if (facetVersion.equals(JptCorePlugin.JPA_FACET_VERSION_1_0)) {
- return JPA.SCHEMA_VERSION;
- }
- }
- catch (CoreException ce) {
- // fall through to final return
- }
- return JPA2_0.SCHEMA_VERSION;
+ return getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType(
+ JptCorePlugin.ORM_XML_CONTENT_TYPE).getVersion();
}
protected PersistenceUnit getDefaultPersistenceUnit() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java
index 94411c40f1..e8d744dc1f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.jpt.core.internal.operations;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.resource.persistence.JPA;
@@ -44,16 +43,8 @@ public class PersistenceFileCreationDataModelProvider
if (getProject() == null) {
return null;
}
- try {
- String facetVersion = getJpaFacetVersion(getProject());
- if (facetVersion.equals(JptCorePlugin.JPA_FACET_VERSION_1_0)) {
- return JPA.SCHEMA_VERSION;
- }
- }
- catch (CoreException ce) {
- // fall through to final return
- }
- return JPA2_0.SCHEMA_VERSION;
+ return getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType(
+ JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE).getVersion();
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourceAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourceAdapterFactory.java
new file mode 100644
index 0000000000..c03f4b15b8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourceAdapterFactory.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.resource.xml;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.jpt.core.JpaFile;
+import org.eclipse.jpt.core.JpaResourceModel;
+import org.eclipse.jpt.core.JptCorePlugin;
+import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
+
+public class JpaXmlResourceAdapterFactory
+ implements IAdapterFactory
+{
+ private static final Class<?>[] ADAPTER_LIST = new Class[] { JpaXmlResource.class };
+
+ public Class<?>[] getAdapterList() {
+ return ADAPTER_LIST;
+ }
+
+ public Object getAdapter(Object adaptableObject, @SuppressWarnings("unchecked") Class adapterType) {
+ if (adaptableObject instanceof IFile) {
+ return this.getAdapter((IFile) adaptableObject, adapterType);
+ }
+ return null;
+ }
+
+ private Object getAdapter(final IFile file, Class <?>adapterType) {
+ if (adapterType == JpaXmlResource.class) {
+ JpaFile jpaFile = JptCorePlugin.getJpaFile(file);
+ if (jpaFile != null) {
+ JpaResourceModel resourceModel = jpaFile.getResourceModel();
+ if (resourceModel instanceof JpaXmlResource) {
+ return resourceModel;
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourcePropertyTester.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourcePropertyTester.java
new file mode 100644
index 0000000000..6bb19d5084
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/xml/JpaXmlResourcePropertyTester.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.resource.xml;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jpt.core.JpaProject;
+import org.eclipse.jpt.core.context.XmlFile;
+import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
+
+public class JpaXmlResourcePropertyTester
+ extends PropertyTester
+{
+ public static final String IS_LATEST_SUPPORTED_VERSION = "isLatestSupportedVersion";
+
+
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ JpaXmlResource xmlResource = null;
+ if (receiver instanceof JpaXmlResource) {
+ xmlResource = (JpaXmlResource) receiver;
+ }
+ else if (receiver instanceof XmlFile) {
+ xmlResource = ((XmlFile) receiver).getXmlResource();
+ }
+ else {
+ return false;
+ }
+
+ if (IS_LATEST_SUPPORTED_VERSION.equals(property)) {
+ Boolean expectedIsLatestSupportedVersion = (Boolean) expectedValue;
+ JpaProject jpaProject = xmlResource.getJpaProject();
+ IContentType contentType = xmlResource.getContentType();
+ Boolean actualIsLatestSupportedVersion =
+ xmlResource.getVersion() != null
+ && xmlResource.getVersion().equals(
+ jpaProject.getJpaPlatform().getMostRecentSupportedResourceType(contentType).getVersion());
+
+ return actualIsLatestSupportedVersion == expectedIsLatestSupportedVersion;
+ }
+
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java
index 8f4a2c9a2f..e0ad685837 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/xml/JpaXmlResource.java
@@ -13,6 +13,7 @@ package org.eclipse.jpt.core.resource.xml;
import java.io.IOException;
import java.util.Collections;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.content.IContentType;
@@ -24,6 +25,7 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
import org.eclipse.jem.util.plugin.JEMUtilPlugin;
+import org.eclipse.jpt.core.JpaProject;
import org.eclipse.jpt.core.JpaResourceModel;
import org.eclipse.jpt.core.JpaResourceModelListener;
import org.eclipse.jpt.core.JpaResourceType;
@@ -186,6 +188,14 @@ public class JpaXmlResource
return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileName));
}
+ public IProject getProject() {
+ return getFile().getProject();
+ }
+
+ public JpaProject getJpaProject() {
+ return JptCorePlugin.getJpaProject(getProject());
+ }
+
public void modify(Runnable runnable) {
try {
runnable.run();
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformProvider.java
index ff532e8065..f88ba88af5 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformProvider.java
@@ -9,8 +9,11 @@
*******************************************************************************/
package org.eclipse.jpt.eclipselink.core.internal;
+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;
@@ -71,6 +74,27 @@ public class EclipseLinkJpaPlatformProvider
// ********* resource models *********
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+ return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+ return JptCorePlugin.JAR_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE)) {
+ return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
@Override
protected JpaResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
index f5f12b3f11..e4134f2d81 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
@@ -15,10 +15,7 @@ import org.eclipse.jpt.core.internal.context.orm.AbstractEntityMappings;
import org.eclipse.jpt.eclipselink.core.context.orm.EclipseLinkConverterHolder;
import org.eclipse.jpt.eclipselink.core.context.orm.EclipseLinkEntityMappings;
import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
-import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLink;
import org.eclipse.jpt.eclipselink.core.resource.orm.XmlEntityMappings;
-import org.eclipse.jpt.eclipselink.core.resource.orm.v1_1.EclipseLink1_1;
-import org.eclipse.jpt.eclipselink.core.resource.orm.v2_0.EclipseLink2_0;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -57,18 +54,7 @@ public class EclipseLinkEntityMappingsImpl
@Override
protected String latestDocumentVersion() {
- String jpaPlatformVersion = getJpaPlatform().getJpaVersion().getVersion();
- if (jpaPlatformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_1_0)) {
- return EclipseLink.SCHEMA_VERSION;
- }
- else if (jpaPlatformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_1_1)) {
- return EclipseLink1_1.SCHEMA_VERSION;
- }
- else if (jpaPlatformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_2_0)) {
- return EclipseLink2_0.SCHEMA_VERSION;
- }
- else {
- throw new IllegalStateException("Platform version not recognized.");
- }
+ return getJpaPlatform().getMostRecentSupportedResourceType(
+ JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE).getVersion();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
index 6b6566cbd6..c8806df231 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/operations/EclipseLinkOrmFileCreationDataModelProvider.java
@@ -50,19 +50,8 @@ public class EclipseLinkOrmFileCreationDataModelProvider
if (getProject() == null) {
return null;
}
- String platformVersion = getJpaProject().getJpaPlatform().getJpaVersion().getVersion();
- if (platformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_1_0)) {
- return EclipseLink.SCHEMA_VERSION;
- }
- else if (platformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_1_1)) {
- return EclipseLink1_1.SCHEMA_VERSION;
- }
- else if (platformVersion.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_PLATFORM_VERSION_2_0)) {
- return EclipseLink2_0.SCHEMA_VERSION;
- }
- else {
- throw new IllegalStateException("Illegal EclipseLink platform version: " + platformVersion);
- }
+ return getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType(
+ JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE).getVersion();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformProvider.java
index 69240a5abe..314943e1c8 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformProvider.java
@@ -9,8 +9,11 @@
*******************************************************************************/
package org.eclipse.jpt.eclipselink.core.internal.v1_1;
+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;
@@ -32,6 +35,7 @@ import org.eclipse.jpt.core.internal.context.java.JavaTransientMappingDefinition
import org.eclipse.jpt.core.internal.context.java.JavaVersionMappingDefinition;
import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXmlDefinition;
import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkOrmResourceModelProvider;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicCollectionMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicMapMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToManyMappingDefinition;
@@ -73,6 +77,27 @@ public class EclipseLink1_1JpaPlatformProvider
// ********** resource models **********
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+ return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+ return JptCorePlugin.JAR_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE)) {
+ return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_1_1_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
@Override
protected JpaResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
index a0e37e355a..b5c1ff1e1f 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformProvider.java
@@ -9,8 +9,11 @@
*******************************************************************************/
package org.eclipse.jpt.eclipselink.core.internal.v2_0;
+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;
@@ -34,6 +37,7 @@ import org.eclipse.jpt.core.internal.jpa2.context.java.JavaElementCollectionMapp
import org.eclipse.jpt.core.internal.jpa2.context.java.JavaIdMappingDefinition2_0;
import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmXml2_0Definition;
import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkOrmResourceModelProvider;
+import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicCollectionMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicMapMappingDefinition;
import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToManyMappingDefinition;
@@ -77,6 +81,27 @@ public class EclipseLink2_0JpaPlatformProvider
// ********** 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 if (contentType.equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE)) {
+ return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_0_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
@Override
protected JpaResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here
diff --git a/jpa/plugins/org.eclipse.jpt.ui/plugin.properties b/jpa/plugins/org.eclipse.jpt.ui/plugin.properties
index 5939c0ed40..35f0098a57 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/plugin.properties
+++ b/jpa/plugins/org.eclipse.jpt.ui/plugin.properties
@@ -36,6 +36,7 @@ newJpaMappingFileWizardDesc = Create a JPA Mapping File
newJpaEntityFromTableWizardName = Entities From Tables
newJpaEntityFromTableWizardDesc = Create JPA Entities from database tables
+upgradeToLatestVersion = Upgrade document version
jpaStructureViewCommandCategory = JPA Structure View
addPersistentClass = Add Class ...
removePersistentClass = Remove Class
diff --git a/jpa/plugins/org.eclipse.jpt.ui/plugin.xml b/jpa/plugins/org.eclipse.jpt.ui/plugin.xml
index 339bf6442c..5a6a717182 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.ui/plugin.xml
@@ -79,11 +79,11 @@
id="generic.ui"
jpaPlatform="generic"
factoryClass="org.eclipse.jpt.ui.internal.platform.generic.GenericJpaPlatformUiFactory"/>
- <jpaPlatformUi
- factoryClass="org.eclipse.jpt.ui.internal.jpa2.platform.generic.Generic2_0JpaPlatformUiFactory"
- id="generic2_0.ui"
- jpaPlatform="generic2_0">
- </jpaPlatformUi>
+
+ <jpaPlatformUi
+ id="generic2_0.ui"
+ jpaPlatform="generic2_0"
+ factoryClass="org.eclipse.jpt.ui.internal.jpa2.platform.generic.Generic2_0JpaPlatformUiFactory"/>
</extension>
@@ -112,6 +112,10 @@
<extension
point="org.eclipse.ui.commands">
+ <command
+ id="org.eclipse.jpt.ui.xmlFileUpgradeToLatestVersion"
+ name="%upgradeToLatestVersion"/>
+
<category
id="org.eclipse.jpt.ui.jpaStructureViewCommands"
name="%jpaStructureViewCommandCategory">
@@ -167,11 +171,11 @@
name="%mapAsSpecifiedMappingParameterName"
optional="false">
</commandParameter>
- <commandParameter
- id="defaultPersistentAttributeMappingKey"
- name="%mapAsDefaultMappingParameterName"
- optional="false">
- </commandParameter>
+ <commandParameter
+ id="defaultPersistentAttributeMappingKey"
+ name="%mapAsDefaultMappingParameterName"
+ optional="false">
+ </commandParameter>
</command>
</extension>
@@ -201,6 +205,32 @@
point="org.eclipse.ui.handlers">
<handler
+ commandId="org.eclipse.jpt.ui.xmlFileUpgradeToLatestVersion"
+ class="org.eclipse.jpt.ui.internal.commands.UpgradeXmlFileVersionHandler">
+ <enabledWhen>
+ <and>
+ <count value="1"/>
+ <iterate>
+ <or>
+ <adapt
+ type="org.eclipse.jpt.core.context.XmlFile">
+ <test
+ property="org.eclipse.jpt.core.isLatestSupportedVersion"
+ value="false"/>
+ </adapt>
+ <adapt
+ type="org.eclipse.jpt.core.resource.xml.JpaXmlResource">
+ <test
+ property="org.eclipse.jpt.core.isLatestSupportedVersion"
+ value="false"/>
+ </adapt>
+ </or>
+ </iterate>
+ </and>
+ </enabledWhen>
+ </handler>
+
+ <handler
commandId="org.eclipse.jpt.ui.entityMappingsAddPersistentClass"
class="org.eclipse.jpt.ui.internal.commands.AddPersistentClassHandler">
<activeWhen>
@@ -325,6 +355,64 @@
<extension
point="org.eclipse.ui.menus">
+ <!-- contributions for any popup -->
+ <menuContribution
+ locationURI="popup:org.eclipse.ui.popup.any">
+ <!-- "JPA Tools" submenu for anything that adapts to JpaXmlResource (IFile objects, mostly) -->
+ <menu
+ id="org.eclipse.jpt.ui.project.JPATools"
+ label="%jpaMenuName">
+ <visibleWhen>
+ <with
+ variable="selection">
+ <iterate ifEmpty="false">
+ <adapt
+ type="org.eclipse.jpt.core.resource.xml.JpaXmlResource"/>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </menu>
+ <!-- commands for objects that don't need "JPA Tools" submenu -->
+ <command
+ commandId="org.eclipse.jpt.ui.xmlFileUpgradeToLatestVersion">
+ <visibleWhen>
+ <with
+ variable="selection">
+ <iterate ifEmpty="false">
+ <adapt
+ type="org.eclipse.jpt.core.context.XmlFile">
+ <test
+ property="org.eclipse.jpt.core.isLatestSupportedVersion"
+ value="false"/>
+ </adapt>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+
+ <!-- contributions to the "JPA Tools" submenu -->
+ <menuContribution
+ locationURI="popup:org.eclipse.jpt.ui.project.JPATools">
+ <command
+ commandId="org.eclipse.jpt.ui.xmlFileUpgradeToLatestVersion">
+ <visibleWhen>
+ <with
+ variable="selection">
+ <iterate ifEmpty="false">
+ <adapt
+ type="org.eclipse.jpt.core.resource.xml.JpaXmlResource">
+ <test
+ property="org.eclipse.jpt.core.isLatestSupportedVersion"
+ value="false"/>
+ </adapt>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+
+ <!-- contributions to objects in the JPA structure view -->
<menuContribution
locationURI="popup:org.eclipse.jpt.ui.jpaStructureView">
<command
@@ -409,7 +497,7 @@
class="org.eclipse.jpt.ui.internal.menus.PersistentTypeMapAsContribution">
</dynamic>
</menu>
-
+
<menu
id="org.eclipse.jpt.ui.persistentAttributeMapAs"
label="%mapAs"
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/UpgradeXmlFileVersionHandler.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/UpgradeXmlFileVersionHandler.java
new file mode 100644
index 0000000000..afa0169bc2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/UpgradeXmlFileVersionHandler.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.ui.internal.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jpt.core.context.XmlFile;
+import org.eclipse.jpt.core.resource.xml.JpaRootEObject;
+import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class UpgradeXmlFileVersionHandler extends AbstractHandler
+{
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection
+ = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event);
+
+ // only applies for a singly selected objects that adapt to JpaXmlResource or XmlFile
+ Object selectedObject = selection.getFirstElement();
+ JpaXmlResource xmlResource =
+ (JpaXmlResource) Platform.getAdapterManager().getAdapter(selectedObject, JpaXmlResource.class);
+ if (xmlResource == null) {
+ XmlFile xmlFile =
+ (XmlFile) Platform.getAdapterManager().getAdapter(selectedObject, XmlFile.class);
+ if (xmlFile != null) {
+ xmlResource = xmlFile.getXmlResource();
+ }
+ }
+ if (xmlResource == null) {
+ return null;
+ }
+
+ final JpaRootEObject root = xmlResource.getRootObject();
+ IContentType contentType = xmlResource.getContentType();
+ final String newVersion =
+ xmlResource.getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType(contentType).getVersion();
+
+ xmlResource.modify(
+ new Runnable() {
+ public void run() {
+ root.setVersion(newVersion);
+ }
+ });
+
+ return null;
+ }
+}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/src/org/eclipse/jpt/core/tests/extension/resource/TestJpaPlatformProvider.java b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/src/org/eclipse/jpt/core/tests/extension/resource/TestJpaPlatformProvider.java
index f0a5733cff..466b73fd53 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/src/org/eclipse/jpt/core/tests/extension/resource/TestJpaPlatformProvider.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/src/org/eclipse/jpt/core/tests/extension/resource/TestJpaPlatformProvider.java
@@ -9,8 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.core.tests.extension.resource;
+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;
@@ -62,6 +65,24 @@ public class TestJpaPlatformProvider extends AbstractJpaPlatformProvider
// ********** resource models **********
+ public JpaResourceType getMostRecentSupportedResourceType(IContentType contentType) {
+ if (contentType.equals(JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
+ return JptCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.JAR_CONTENT_TYPE)) {
+ return JptCorePlugin.JAR_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.PERSISTENCE_XML_1_0_RESOURCE_TYPE;
+ }
+ else if (contentType.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE)) {
+ return JptCorePlugin.ORM_XML_1_0_RESOURCE_TYPE;
+ }
+ else {
+ throw new IllegalArgumentException(contentType.toString());
+ }
+ }
+
@Override
protected JpaResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here

Back to the top