diff options
author | pfullbright | 2008-11-11 20:43:51 +0000 |
---|---|---|
committer | pfullbright | 2008-11-11 20:43:51 +0000 |
commit | 27c745e4d3545ddfef5e379ca0950b8da0b74b54 (patch) | |
tree | b96ae67a7ab73c13ccfb6d0a164ec5ba68153631 /jpa | |
parent | 7134cfd42f11f1f2d3032699f590e31aceb95eca (diff) | |
download | webtools.dali-27c745e4d3545ddfef5e379ca0950b8da0b74b54.tar.gz webtools.dali-27c745e4d3545ddfef5e379ca0950b8da0b74b54.tar.xz webtools.dali-27c745e4d3545ddfef5e379ca0950b8da0b74b54.zip |
unreversion
Diffstat (limited to 'jpa')
4 files changed, 34 insertions, 17 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java index b0ad9ed707..fe716a1356 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java @@ -14,6 +14,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.internal.JpaConstants; import org.eclipse.jpt.core.internal.resource.JpaResourceModelProviderManager; @@ -24,7 +25,7 @@ import org.eclipse.jpt.core.resource.orm.OrmResource; import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; public class OrmResourceModelProvider - extends AbstractResourceModelProvider + extends AbstractResourceModelProvider<OrmResource> { /** * (Convenience method) Returns an ORM resource model provider for @@ -80,7 +81,7 @@ public class OrmResourceModelProvider } @Override - public OrmResource getResource() { - return (OrmResource) super.getResource(); + protected OrmResource ensureCorrectType(Resource resource) throws ClassCastException { + return (OrmResource) resource; } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java index 6d8c5be80f..18337a7940 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java @@ -14,6 +14,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.internal.JpaConstants; import org.eclipse.jpt.core.internal.resource.JpaResourceModelProviderManager; @@ -25,7 +26,7 @@ import org.eclipse.jpt.core.resource.persistence.XmlPersistence; import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit; public class PersistenceResourceModelProvider - extends AbstractResourceModelProvider + extends AbstractResourceModelProvider<PersistenceResource> { /** * (Convenience method) Returns a persistence resource model provider for @@ -84,7 +85,7 @@ public class PersistenceResourceModelProvider } @Override - public PersistenceResource getResource() { - return (PersistenceResource) super.getResource(); + protected PersistenceResource ensureCorrectType(Resource resource) throws ClassCastException { + return (PersistenceResource) resource; } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java index 57f4216acc..da88edbc93 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java @@ -52,14 +52,21 @@ import org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateVa import org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateValidatorImpl; import org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateValidatorPresenter; -public abstract class AbstractResourceModelProvider +/** + * 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 abstract class AbstractResourceModelProvider<R extends JpaXmlResource> implements JpaResourceModelProvider, ResourceStateInputProvider, ResourceStateValidator { protected IProject project; protected URI fileUri; - protected JpaXmlResource resource; + protected R resource; protected final ResourceAdapter resourceAdapter = new ResourceAdapter(); @@ -102,23 +109,29 @@ public abstract class AbstractResourceModelProvider * this will return a stub resource. You must call #createResource() to * create the file on the file system. */ - public JpaXmlResource getResource() { + public R getResource() { if (this.resource == null) { try { - this.resource = - (JpaXmlResource) WorkbenchResourceHelper.getOrCreateResource(this.fileUri, getResourceSet()); + this.resource = ensureCorrectType(WorkbenchResourceHelper.getOrCreateResource(this.fileUri, getResourceSet())); } catch (ClassCastException cce) { Resource.Factory resourceFactory = WTPResourceFactoryRegistry.INSTANCE.getFactory(fileUri, getContentType(getContentTypeDescriber())); this.resource = - (JpaXmlResource)((FlexibleProjectResourceSet) getResourceSet()).createResource(fileUri, resourceFactory); + (R)((FlexibleProjectResourceSet) getResourceSet()).createResource(fileUri, resourceFactory); } } return this.resource; } - public JpaXmlResource createResource() throws CoreException { + /** + * Ensure that the given resource is of the expected type for this resource + * model provider. + * Return it if so, throw a ClassCastException otherwise. + */ + protected abstract R ensureCorrectType(Resource resource) throws ClassCastException; + + public R createResource() throws CoreException { IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRunnable runnable = new IWorkspaceRunnable() { public void run(IProgressMonitor monitor) throws CoreException { diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java index 00bebd7873..94cd0f7e8f 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java @@ -14,9 +14,10 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.internal.resource.JpaResourceModelProviderManager; -import org.eclipse.jpt.core.internal.resource.orm.OrmResourceModelProvider; +import org.eclipse.jpt.core.resource.AbstractResourceModelProvider; import org.eclipse.jpt.core.resource.common.JpaXmlResource; import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkConstants; @@ -24,7 +25,8 @@ import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmResource; -public class EclipseLinkOrmResourceModelProvider extends OrmResourceModelProvider +public class EclipseLinkOrmResourceModelProvider + extends AbstractResourceModelProvider<EclipseLinkOrmResource> { /** * (Convenience method) Returns an EclipseLink ORM resource model provider for @@ -81,7 +83,7 @@ public class EclipseLinkOrmResourceModelProvider extends OrmResourceModelProvide } @Override - public EclipseLinkOrmResource getResource() { - return (EclipseLinkOrmResource) super.getResource(); + protected EclipseLinkOrmResource ensureCorrectType(Resource resource) throws ClassCastException { + return (EclipseLinkOrmResource) resource; } } |