diff options
author | kmoore | 2011-07-13 11:25:45 +0000 |
---|---|---|
committer | kmoore | 2011-07-13 11:25:45 +0000 |
commit | 7409c599c538e6259aacb588e7e2381c7663d14e (patch) | |
tree | 2ed2fa199d6ccea697386acd8950dcb630d360b3 | |
parent | c3868f51d33681402aceb2e67b7e121d0f7396f6 (diff) | |
download | webtools.dali-7409c599c538e6259aacb588e7e2381c7663d14e.tar.gz webtools.dali-7409c599c538e6259aacb588e7e2381c7663d14e.tar.xz webtools.dali-7409c599c538e6259aacb588e7e2381c7663d14e.zip |
refactor specifiedAccess to simplify and remove extra PersistentType implementations
6 files changed, 42 insertions, 165 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaPersistentType.java index 6ec801509b..a572011016 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaPersistentType.java @@ -46,6 +46,7 @@ import org.eclipse.jpt.jpa.core.context.java.JavaTypeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaTypeMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNode; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; import org.eclipse.jpt.jpa.core.resource.java.Annotation; import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; @@ -186,6 +187,27 @@ public abstract class AbstractJavaPersistentType return this.getPersistenceUnit().getPersistentType(typeName); } + // ********** access annotation ********** + + protected Access2_0Annotation getAccessAnnotation() { + return (Access2_0Annotation) this.resourcePersistentType.getNonNullAnnotation(this.getAccessAnnotationName()); + } + + protected void removeAccessAnnotationIfUnset() { + Access2_0Annotation accessAnnotation = this.getAccessAnnotation(); + if (accessAnnotation != null && accessAnnotation.isUnset()) { + this.removeAccessAnnotation(); + } + } + + protected void removeAccessAnnotation() { + this.resourcePersistentType.removeAnnotation(this.getAccessAnnotationName()); + } + + protected String getAccessAnnotationName() { + return Access2_0Annotation.ANNOTATION_NAME; + } + // ********** access ********** @@ -197,17 +219,23 @@ public abstract class AbstractJavaPersistentType return this.specifiedAccess; } + public void setSpecifiedAccess(AccessType access) { + if (this.valuesAreDifferent(this.specifiedAccess, access)) { + this.getAccessAnnotation().setValue(AccessType.toJavaResourceModel(access)); + this.removeAccessAnnotationIfUnset(); + this.setSpecifiedAccess_(access); + } + } + protected void setSpecifiedAccess_(AccessType access) { AccessType old = this.specifiedAccess; this.specifiedAccess = access; this.firePropertyChanged(SPECIFIED_ACCESS_PROPERTY, old, access); } - - /** - * Build an access type based on annotations from the resource model. - * (This is JPA platform-dependent.) - */ - protected abstract AccessType buildSpecifiedAccess(); + + protected AccessType buildSpecifiedAccess() { + return AccessType.fromJavaResourceModel(this.getAccessAnnotation().getValue()); + } public AccessType getDefaultAccess() { return this.defaultAccess; @@ -436,6 +464,10 @@ public abstract class AbstractJavaPersistentType } protected Iterator<JavaResourcePersistentAttribute> resourceAttributes() { + if (this.specifiedAccess != null) { + return this.resourcePersistentType.persistableAttributes(AccessType.toJavaResourceModel(this.specifiedAccess)); + } + return (this.getAccess() == AccessType.PROPERTY) ? this.resourcePersistentType.persistableProperties() : this.resourcePersistentType.persistableFields(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java index b66d1aecf2..bf74484e4e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java @@ -39,7 +39,8 @@ public class GenericJavaPersistentType /** * JPA 1.0 does not support a specified access. */ + @Override public void setSpecifiedAccess(AccessType specifiedAccess) { - throw new UnsupportedOperationException(); + throw new UnsupportedOperationException("JPA 1.0 does not support a specified access type in java."); //$NON-NLS-1$ } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java index 284b7c5b0c..4c125250bb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java @@ -10,19 +10,15 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java; import java.util.Collection; -import java.util.Iterator; import java.util.ListIterator; import java.util.Map; import org.eclipse.core.resources.IFile; import org.eclipse.jpt.common.core.utility.BodySourceWriter; -import org.eclipse.jpt.jpa.core.context.AccessType; import org.eclipse.jpt.jpa.core.context.PersistentType; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelSourceType; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentType2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** @@ -54,43 +50,6 @@ public class GenericJavaPersistentType2_0 } - // ********** access annotation ********** - - protected Access2_0Annotation getAccessAnnotation() { - return (Access2_0Annotation) this.resourcePersistentType.getNonNullAnnotation(this.getAccessAnnotationName()); - } - - protected void removeAccessAnnotationIfUnset() { - if (this.getAccessAnnotation().isUnset()) { - this.removeAccessAnnotation(); - } - } - - protected void removeAccessAnnotation() { - this.resourcePersistentType.removeAnnotation(this.getAccessAnnotationName()); - } - - protected String getAccessAnnotationName() { - return Access2_0Annotation.ANNOTATION_NAME; - } - - - // ********** access ********** - - public void setSpecifiedAccess(AccessType access) { - if (this.valuesAreDifferent(this.specifiedAccess, access)) { - this.getAccessAnnotation().setValue(AccessType.toJavaResourceModel(access)); - this.removeAccessAnnotationIfUnset(); - this.setSpecifiedAccess_(access); - } - } - - @Override - protected AccessType buildSpecifiedAccess() { - return AccessType.fromJavaResourceModel(this.getAccessAnnotation().getValue()); - } - - // ********** attributes ********** // suppress type-safety warning @@ -99,13 +58,6 @@ public class GenericJavaPersistentType2_0 return super.attributes(); } - @Override - protected Iterator<JavaResourcePersistentAttribute> resourceAttributes() { - return (this.specifiedAccess == null) ? - super.resourceAttributes() : - this.resourcePersistentType.persistableAttributes(AccessType.toJavaResourceModel(this.specifiedAccess)); - } - // ********** declaring type name ********** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaFactory.java deleted file mode 100644 index e99f456150..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 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.jpa.eclipselink.core.internal.v1_2; - -import org.eclipse.jpt.jpa.core.context.PersistentType.Owner; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaFactory; -import org.eclipse.jpt.jpa.eclipselink.core.internal.v1_2.context.java.EclipseLinkJavaPersistentType1_2; - -public class EclipseLink1_2JpaFactory - extends EclipseLinkJpaFactory -{ - public EclipseLink1_2JpaFactory() { - super(); - } - - // ********** Java Context Model ********** - - @Override - public JavaPersistentType buildJavaPersistentType(Owner owner, JavaResourcePersistentType jrpt) { - return new EclipseLinkJavaPersistentType1_2(owner, jrpt); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java index d36164faa2..96f549008a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/EclipseLink1_2JpaPlatformFactory.java @@ -19,6 +19,7 @@ import org.eclipse.jpt.jpa.core.internal.GenericJpaAnnotationProvider; import org.eclipse.jpt.jpa.core.internal.GenericJpaPlatform; import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin; import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaAnnotationDefinitionProvider; +import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaFactory; import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaPlatformFactory.EclipseLinkVersion; /** @@ -40,7 +41,7 @@ public class EclipseLink1_2JpaPlatformFactory return new GenericJpaPlatform( id, buildJpaVersion(), - new EclipseLink1_2JpaFactory(), + new EclipseLinkJpaFactory(), buildJpaAnnotationProvider(), EclipseLink1_2JpaPlatformProvider.instance(), buildJpaPlatformVariation()); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/context/java/EclipseLinkJavaPersistentType1_2.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/context/java/EclipseLinkJavaPersistentType1_2.java deleted file mode 100644 index 84ce179b71..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_2/context/java/EclipseLinkJavaPersistentType1_2.java +++ /dev/null @@ -1,78 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 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.jpa.eclipselink.core.internal.v1_2.context.java; - -import java.util.Iterator; - -import org.eclipse.jpt.jpa.core.context.AccessType; -import org.eclipse.jpt.jpa.core.context.PersistentType; -import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; - -/** - * EclipseLink Java 1.2 - * Support for specified access. - */ -public class EclipseLinkJavaPersistentType1_2 - extends AbstractJavaPersistentType -{ - public EclipseLinkJavaPersistentType1_2(PersistentType.Owner parent, JavaResourcePersistentType jrpt) { - super(parent, jrpt); - } - - - // ********** access annotation ********** - - protected Access2_0Annotation getAccessAnnotation() { - return (Access2_0Annotation) this.resourcePersistentType.getNonNullAnnotation(this.getAccessAnnotationName()); - } - - protected void removeAccessAnnotationIfUnset() { - if (this.getAccessAnnotation().isUnset()) { - this.removeAccessAnnotation(); - } - } - - protected void removeAccessAnnotation() { - this.resourcePersistentType.removeAnnotation(this.getAccessAnnotationName()); - } - - protected String getAccessAnnotationName() { - return Access2_0Annotation.ANNOTATION_NAME; - } - - - // ********** access ********** - - public void setSpecifiedAccess(AccessType access) { - if (this.valuesAreDifferent(this.specifiedAccess, access)) { - this.getAccessAnnotation().setValue(AccessType.toJavaResourceModel(access)); - this.removeAccessAnnotationIfUnset(); - this.setSpecifiedAccess_(access); - } - } - - @Override - protected AccessType buildSpecifiedAccess() { - return AccessType.fromJavaResourceModel(this.getAccessAnnotation().getValue()); - } - - - // ********** attributes ********** - - @Override - protected Iterator<JavaResourcePersistentAttribute> resourceAttributes() { - return (this.specifiedAccess == null) ? - super.resourceAttributes() : - this.resourcePersistentType.persistableAttributes(AccessType.toJavaResourceModel(this.specifiedAccess)); - } -} |