diff options
65 files changed, 2901 insertions, 150 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java index 2862794e83..efacae6803 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java @@ -139,6 +139,7 @@ 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.eclipse.jpt.core.resource.java.OneToManyAnnotation; /** * Central class that allows extenders to easily replace implementations of @@ -262,7 +263,7 @@ public abstract class AbstractJpaFactory } public JavaOneToManyMapping buildJavaOneToManyMapping(JavaPersistentAttribute parent) { - return new GenericJavaOneToManyMapping(parent); + return new GenericJavaOneToManyMapping<OneToManyAnnotation>(parent); } public JavaOneToOneMapping buildJavaOneToOneMapping(JavaPersistentAttribute parent) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java index f3f5326e2c..a983552a76 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java @@ -10,17 +10,17 @@ package org.eclipse.jpt.core.internal.context.java; import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.core.context.java.JavaOneToManyRelationshipReference; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToManyMapping2_0; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; import org.eclipse.jpt.utility.internal.ArrayTools; -public abstract class AbstractJavaOneToManyMapping - extends AbstractJavaMultiRelationshipMapping<OneToManyAnnotation> - implements JavaOneToManyMapping +public abstract class AbstractJavaOneToManyMapping<T extends OneToManyAnnotation> + extends AbstractJavaMultiRelationshipMapping<T> + implements JavaOneToManyMapping2_0 { protected AbstractJavaOneToManyMapping(JavaPersistentAttribute parent) { @@ -41,7 +41,7 @@ public abstract class AbstractJavaOneToManyMapping } @Override - public OneToManyAnnotation getMappingAnnotation() { + public T getMappingAnnotation() { return super.getMappingAnnotation(); } @@ -53,4 +53,22 @@ public abstract class AbstractJavaOneToManyMapping public JavaOneToManyRelationshipReference getRelationshipReference() { return (JavaOneToManyRelationshipReference) super.getRelationshipReference(); } + + // ********** JPA 2.0 behavior ********** + + public boolean isOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public Boolean getSpecifiedOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public boolean isDefaultOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java index e9bdfba73a..a43aa9d7b5 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java @@ -23,11 +23,11 @@ public abstract class AbstractJavaOneToOneMapping extends AbstractJavaSingleRelationshipMapping<OneToOneAnnotation> implements JavaOneToOneMapping2_0 { + // ********** constructor ********** protected AbstractJavaOneToOneMapping(JavaPersistentAttribute parent) { super(parent); } - - + @Override protected JavaRelationshipReference buildRelationshipReference() { return new GenericJavaOneToOneRelationshipReference(this); @@ -68,4 +68,22 @@ public abstract class AbstractJavaOneToOneMapping protected void setResourceOptional(Boolean newOptional) { this.mappingAnnotation.setOptional(newOptional); } -} + + // ********** JPA 2.0 behavior ********** + + public boolean isOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public Boolean getSpecifiedOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public boolean isDefaultOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToManyMapping.java index bb17a5b49b..c67fcbd2bd 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToManyMapping.java @@ -11,21 +11,21 @@ package org.eclipse.jpt.core.internal.context.orm; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; import org.eclipse.jpt.core.context.orm.OrmOneToManyRelationshipReference; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToManyMapping2_0; import org.eclipse.jpt.core.resource.orm.Attributes; import org.eclipse.jpt.core.resource.orm.XmlOneToMany; public abstract class AbstractOrmOneToManyMapping<T extends XmlOneToMany> extends AbstractOrmMultiRelationshipMapping<T> - implements OrmOneToManyMapping + implements OrmOneToManyMapping2_0 { protected AbstractOrmOneToManyMapping(OrmPersistentAttribute parent, T resourceMapping) { super(parent, resourceMapping); } - + public int getXmlSequence() { return 50; } @@ -50,4 +50,22 @@ public abstract class AbstractOrmOneToManyMapping<T extends XmlOneToMany> public OrmOneToManyRelationshipReference getRelationshipReference() { return (OrmOneToManyRelationshipReference) super.getRelationshipReference(); } + + // ********** JPA 2.0 behavior *********s* + + public boolean isOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public Boolean getSpecifiedOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public boolean isDefaultOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java index c7772ed612..e0a5e202a1 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java @@ -57,4 +57,22 @@ public abstract class AbstractOrmOneToOneMapping<T extends XmlOneToOne> public OrmOneToOneRelationshipReference getRelationshipReference() { return (OrmOneToOneRelationshipReference) super.getRelationshipReference(); } + + // ********** JPA 2.0 behavior ********** + + public boolean isOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public Boolean getSpecifiedOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + public boolean isDefaultOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java index efed113058..827aa2cd06 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java @@ -101,6 +101,17 @@ public class VirtualXmlOneToMany throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ } + + @Override + public boolean isOrphanRemoval() { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + + @Override + public void setOrphanRemoval(boolean newOrphanRemoval) { + throw new UnsupportedOperationException("operation not supported in JPA 1.0"); //$NON-NLS-1$ + } + @Override public XmlJoinTable getJoinTable() { if (this.javaAttributeMapping.getRelationshipReference().getJoinTableJoiningStrategy().getJoinTable() != null) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOneToManyMapping.java index 4b0dee2d33..45ff0ba1a9 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOneToManyMapping.java @@ -12,10 +12,11 @@ package org.eclipse.jpt.core.internal.jpa1.context.java; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaRelationshipReference; import org.eclipse.jpt.core.internal.context.java.AbstractJavaOneToManyMapping; +import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; -public class GenericJavaOneToManyMapping - extends AbstractJavaOneToManyMapping +public class GenericJavaOneToManyMapping<T extends OneToManyAnnotation> + extends AbstractJavaOneToManyMapping<OneToManyAnnotation> { public GenericJavaOneToManyMapping(JavaPersistentAttribute parent) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmManyToManyMapping.java index 8e234abd99..517a92c340 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmManyToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmManyToManyMapping.java @@ -9,14 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.jpa1.context.orm; -import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.internal.context.orm.AbstractOrmManyToManyMapping; import org.eclipse.jpt.core.resource.orm.XmlManyToMany; public class GenericOrmManyToManyMapping extends AbstractOrmManyToManyMapping<XmlManyToMany> - implements OrmManyToManyMapping { public GenericOrmManyToManyMapping(OrmPersistentAttribute parent, XmlManyToMany resourceMapping) { super(parent, resourceMapping); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java index 47a4d04bea..d898415941 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java @@ -17,6 +17,8 @@ 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.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; @@ -29,6 +31,8 @@ import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaDerivedId2_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.GenericJavaMapsId2_0; +import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToManyMapping2_0; +import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToOneMapping2_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; @@ -125,6 +129,16 @@ public class GenericJpaFactory2_0 public JavaMapsId2_0 buildJavaMapsId(JavaSingleRelationshipMapping2_0 parent) { return new GenericJavaMapsId2_0(parent); } + + @Override + public JavaOneToManyMapping buildJavaOneToManyMapping(JavaPersistentAttribute parent) { + return new GenericJavaOneToManyMapping2_0(parent); + } + + @Override + public JavaOneToOneMapping buildJavaOneToOneMapping(JavaPersistentAttribute parent) { + return new GenericJavaOneToOneMapping2_0(parent); + } @Override public JavaCacheable2_0 buildJavaCacheable(JavaTypeMapping parent) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0.java new file mode 100644 index 0000000000..e3bc7e8b34 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0.java @@ -0,0 +1,86 @@ +/******************************************************************************* +* 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.jpa2.context.java; + +import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaOneToManyMapping; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.JPA2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToMany2_0Annotation; +import org.eclipse.jpt.utility.internal.ArrayTools; + +/** + * GenericJavaOneToManyMapping2_0 + */ +public class GenericJavaOneToManyMapping2_0 + extends GenericJavaOneToManyMapping<OneToMany2_0Annotation> +{ + protected Boolean specifiedOrphanRemoval = false; + + // ********** constructor ********** + public GenericJavaOneToManyMapping2_0(JavaPersistentAttribute parent) { + super(parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + protected void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + JPA2_0.ONE_TO_MANY__ORPHAN_REMOVAL); + } + + // ********** OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.specifiedOrphanRemoval != null) ? this.specifiedOrphanRemoval.booleanValue() : this.isDefaultOrphanRemoval(); + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + ((OneToMany2_0Annotation) this.mappingAnnotation).setOrphanRemoval(newOrphanRemoval); + this.firePropertyChanged(OneToManyMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL; + } + + protected Boolean getResourceOrphanRemoval() { + return ((OneToMany2_0Annotation) this.mappingAnnotation).getOrphanRemoval(); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OneToManyMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java new file mode 100644 index 0000000000..e7345e167d --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java @@ -0,0 +1,86 @@ +/******************************************************************************* +* 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.jpa2.context.java; + +import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.internal.jpa1.context.java.GenericJavaOneToOneMapping; +import org.eclipse.jpt.core.jpa2.context.OneToOneMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.JPA2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToOne2_0Annotation; +import org.eclipse.jpt.utility.internal.ArrayTools; + +/** + * GenericJavaOneToOneMapping2_0 + */ +public class GenericJavaOneToOneMapping2_0 + extends GenericJavaOneToOneMapping +{ + private Boolean specifiedOrphanRemoval = false; + + // ********** constructor ********** + public GenericJavaOneToOneMapping2_0(JavaPersistentAttribute parent) { + super(parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + protected void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + JPA2_0.ONE_TO_ONE__ORPHAN_REMOVAL); + } + + // ********** JPA 2.0 - OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.specifiedOrphanRemoval != null) ? this.specifiedOrphanRemoval.booleanValue() : this.isDefaultOrphanRemoval(); + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + ((OneToOne2_0Annotation) this.mappingAnnotation).setOrphanRemoval(newOrphanRemoval); + this.firePropertyChanged(OneToOneMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL; + } + + protected Boolean getResourceOrphanRemoval() { + return ((OneToOne2_0Annotation) this.mappingAnnotation).getOrphanRemoval(); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OneToOneMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0.java new file mode 100644 index 0000000000..52f2e370eb --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0.java @@ -0,0 +1,73 @@ +/******************************************************************************* +* 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.jpa2.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmOneToManyMapping; +import org.eclipse.jpt.core.jpa2.context.OrphanRemovable2_0; +import org.eclipse.jpt.core.resource.orm.XmlOneToMany; + +/** + * GenericOrmOneToManyMapping2_0 + */ +public class GenericOrmOneToManyMapping2_0 + extends GenericOrmOneToManyMapping +{ + protected Boolean specifiedOrphanRemoval; + + // ********** constructor ********** + public GenericOrmOneToManyMapping2_0(OrmPersistentAttribute parent, XmlOneToMany resourceMapping) { + super(parent, resourceMapping); + + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + public void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + protected Boolean getResourceOrphanRemoval() { + return this.resourceAttributeMapping.isOrphanRemoval(); + } + + // ********** OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.getSpecifiedOrphanRemoval() == null) ? this.isDefaultOrphanRemoval() : this.getSpecifiedOrphanRemoval().booleanValue(); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL; + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.resourceAttributeMapping.setOrphanRemoval(newOrphanRemoval); + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java new file mode 100644 index 0000000000..6a3a01f148 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java @@ -0,0 +1,73 @@ +/******************************************************************************* +* 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.jpa2.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmOneToOneMapping; +import org.eclipse.jpt.core.jpa2.context.OrphanRemovable2_0; +import org.eclipse.jpt.core.resource.orm.XmlOneToOne; + +/** + * GenericOrmOneToOneMapping2_0 + */ +public class GenericOrmOneToOneMapping2_0 + extends GenericOrmOneToOneMapping +{ + protected Boolean specifiedOrphanRemoval; + + // ********** constructor ********** + public GenericOrmOneToOneMapping2_0(OrmPersistentAttribute parent, XmlOneToOne resourceMapping) { + super(parent, resourceMapping); + + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + public void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + protected Boolean getResourceOrphanRemoval() { + return this.resourceAttributeMapping.isOrphanRemoval(); + } + + // ********** OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.getSpecifiedOrphanRemoval() == null) ? this.isDefaultOrphanRemoval() : this.getSpecifiedOrphanRemoval().booleanValue(); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL; + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.resourceAttributeMapping.setOrphanRemoval(newOrphanRemoval); + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java index 54d0fc3523..857481ca20 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java @@ -26,6 +26,8 @@ import org.eclipse.jpt.core.context.orm.OrmAssociationOverride; import org.eclipse.jpt.core.context.orm.OrmAssociationOverrideContainer; import org.eclipse.jpt.core.context.orm.OrmAssociationOverrideRelationshipReference; import org.eclipse.jpt.core.context.orm.OrmEmbeddable; +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.OrmSequenceGenerator; @@ -35,6 +37,7 @@ import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNodeFactor import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmAssociationOverrideContainer; import org.eclipse.jpt.core.jpa2.context.java.JavaElementCollectionMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToManyMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmCacheable2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; @@ -117,6 +120,16 @@ public class GenericOrmXml2_0ContextNodeFactory extends AbstractOrmXmlContextNod public OrmCacheable2_0 buildOrmCacheable(OrmTypeMapping parent, XmlCacheable2_0 resource) { return new GenericOrmCacheable2_0(parent, resource); } + + @Override + public OrmOneToManyMapping buildOrmOneToManyMapping(OrmPersistentAttribute parent, XmlOneToMany resourceMapping) { + return new GenericOrmOneToManyMapping2_0(parent, resourceMapping); + } + + @Override + public OrmOneToOneMapping buildOrmOneToOneMapping(OrmPersistentAttribute parent, XmlOneToOne resourceMapping) { + return new GenericOrmOneToOneMapping2_0(parent, resourceMapping); + } // ********** ORM Virtual Resource Model ********** @@ -158,7 +171,7 @@ public class GenericOrmXml2_0ContextNodeFactory extends AbstractOrmXmlContextNod @Override public XmlOneToMany buildVirtualXmlOneToMany(OrmTypeMapping ormTypeMapping, JavaOneToManyMapping javaOneToManyMapping) { - return new VirtualXmlOneToMany2_0(ormTypeMapping, javaOneToManyMapping); + return new VirtualXmlOneToMany2_0(ormTypeMapping, (JavaOneToManyMapping2_0) javaOneToManyMapping); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToMany2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToMany2_0.java index f715a35604..3b179931fd 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToMany2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToMany2_0.java @@ -10,9 +10,9 @@ package org.eclipse.jpt.core.internal.jpa2.context.orm; import org.eclipse.emf.common.util.EList; -import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.core.internal.context.orm.VirtualXmlOneToMany; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToManyMapping2_0; import org.eclipse.jpt.core.resource.orm.AccessType; import org.eclipse.jpt.core.resource.orm.CascadeType; import org.eclipse.jpt.core.resource.orm.FetchType; @@ -31,12 +31,12 @@ public class VirtualXmlOneToMany2_0 extends XmlOneToMany protected OrmTypeMapping ormTypeMapping; - protected final JavaOneToManyMapping javaAttributeMapping; + protected final JavaOneToManyMapping2_0 javaAttributeMapping; protected final VirtualXmlOneToMany virtualXmlOneToMany; public VirtualXmlOneToMany2_0( - OrmTypeMapping ormTypeMapping, JavaOneToManyMapping javaOneToManyMapping) { + OrmTypeMapping ormTypeMapping, JavaOneToManyMapping2_0 javaOneToManyMapping) { super(); this.ormTypeMapping = ormTypeMapping; this.javaAttributeMapping = javaOneToManyMapping; @@ -86,6 +86,19 @@ public class VirtualXmlOneToMany2_0 extends XmlOneToMany public void setCascade(CascadeType value) { this.virtualXmlOneToMany.setCascade(value); } + + @Override + public boolean isOrphanRemoval() { + if (this.isOrmMetadataComplete()) { + return this.javaAttributeMapping.isDefaultOrphanRemoval(); + } + return this.javaAttributeMapping.isOrphanRemoval(); + } + + @Override + public void setOrphanRemoval(boolean newOrphanRemoval) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } @Override public XmlJoinTable getJoinTable() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToOne2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToOne2_0.java index 4f8185ca8e..3df3f83b46 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToOne2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/VirtualXmlOneToOne2_0.java @@ -101,6 +101,19 @@ public class VirtualXmlOneToOne2_0 extends XmlOneToOne } @Override + public boolean isOrphanRemoval() { + if (this.isOrmMetadataComplete()) { + return this.javaAttributeMapping.isDefaultOrphanRemoval(); + } + return this.javaAttributeMapping.isOrphanRemoval(); + } + + @Override + public void setOrphanRemoval(boolean newOrphanRemoval) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } + + @Override public XmlJoinTable getJoinTable() { return this.virtualXmlOneToOne.getJoinTable(); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToMany2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToMany2_0Annotation.java new file mode 100644 index 0000000000..e1f7c07248 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToMany2_0Annotation.java @@ -0,0 +1,49 @@ +/******************************************************************************* +* 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.jpa2.resource.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.core.internal.resource.java.NullOneToManyAnnotation; +import org.eclipse.jpt.core.jpa2.resource.java.OneToMany2_0Annotation; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.utility.TextRange; + +/** + * NullOneToMany2_0Annotation + */ +public final class NullOneToMany2_0Annotation + extends NullOneToManyAnnotation + implements OneToMany2_0Annotation +{ + public NullOneToMany2_0Annotation(JavaResourcePersistentAttribute parent) { + super(parent); + } + + // ********** JPA 2.0 - OrphanRemovable2_0 implementation ********** + public Boolean getOrphanRemoval() { + return null; + } + + public void setOrphanRemoval(Boolean orphanRemoval) { + if (orphanRemoval != null) { + this.addAnnotation().setOrphanRemoval(orphanRemoval); + } + } + + public TextRange getOrphanRemovalTextRange(CompilationUnit astRoot) { + return null; + } + + @Override + protected OneToMany2_0Annotation addAnnotation() { + return (OneToMany2_0Annotation) super.addAnnotation(); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToOne2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToOne2_0Annotation.java new file mode 100644 index 0000000000..686116f6f7 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/NullOneToOne2_0Annotation.java @@ -0,0 +1,49 @@ +/******************************************************************************* +* 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.jpa2.resource.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.core.internal.resource.java.NullOneToOneAnnotation; +import org.eclipse.jpt.core.jpa2.resource.java.OneToOne2_0Annotation; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.utility.TextRange; + +/** + * NullOneToOne2_0Annotation + */ +public final class NullOneToOne2_0Annotation + extends NullOneToOneAnnotation + implements OneToOne2_0Annotation +{ + public NullOneToOne2_0Annotation(JavaResourcePersistentAttribute parent) { + super(parent); + } + + // ********** JPA 2.0 - OrphanRemovable2_0 implementation ********** + public Boolean getOrphanRemoval() { + return null; + } + + public void setOrphanRemoval(Boolean orphanRemoval) { + if (orphanRemoval != null) { + this.addAnnotation().setOrphanRemoval(orphanRemoval); + } + } + + public TextRange getOrphanRemovalTextRange(CompilationUnit astRoot) { + return null; + } + + @Override + protected OneToOne2_0Annotation addAnnotation() { + return (OneToOne2_0Annotation) super.addAnnotation(); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToMany2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToMany2_0AnnotationDefinition.java index 01dd7b5fb2..73fc019d20 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToMany2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToMany2_0AnnotationDefinition.java @@ -12,7 +12,6 @@ package org.eclipse.jpt.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jpt.core.internal.jpa2.resource.java.binary.BinaryOneToMany2_0Annotation; import org.eclipse.jpt.core.internal.jpa2.resource.java.source.SourceOneToMany2_0Annotation; -import org.eclipse.jpt.core.internal.resource.java.NullOneToManyAnnotation; import org.eclipse.jpt.core.resource.java.Annotation; import org.eclipse.jpt.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; @@ -49,7 +48,7 @@ public final class OneToMany2_0AnnotationDefinition } public Annotation buildNullAnnotation(JavaResourcePersistentMember parent) { - return new NullOneToManyAnnotation((JavaResourcePersistentAttribute) parent); + return new NullOneToMany2_0Annotation((JavaResourcePersistentAttribute) parent); } public Annotation buildAnnotation(JavaResourcePersistentMember parent, IAnnotation jdtAnnotation) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToOne2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToOne2_0AnnotationDefinition.java index 11a4fd64cc..c5fdbedc11 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToOne2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/resource/java/OneToOne2_0AnnotationDefinition.java @@ -12,7 +12,6 @@ package org.eclipse.jpt.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jpt.core.internal.jpa2.resource.java.binary.BinaryOneToOne2_0Annotation; import org.eclipse.jpt.core.internal.jpa2.resource.java.source.SourceOneToOne2_0Annotation; -import org.eclipse.jpt.core.internal.resource.java.NullOneToOneAnnotation; import org.eclipse.jpt.core.resource.java.Annotation; import org.eclipse.jpt.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; @@ -49,7 +48,7 @@ public class OneToOne2_0AnnotationDefinition } public Annotation buildNullAnnotation(JavaResourcePersistentMember parent) { - return new NullOneToOneAnnotation((JavaResourcePersistentAttribute) parent); + return new NullOneToOne2_0Annotation((JavaResourcePersistentAttribute) parent); } public Annotation buildAnnotation(JavaResourcePersistentMember parent, IAnnotation jdtAnnotation) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToManyAnnotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToManyAnnotation.java index 4d92110c51..3d5d54013b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToManyAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToManyAnnotation.java @@ -15,7 +15,7 @@ import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; /** * javax.persistence.OneToMany */ -public final class NullOneToManyAnnotation +public class NullOneToManyAnnotation extends NullOwnableRelationshipMappingAnnotation implements OneToManyAnnotation { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToOneAnnotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToOneAnnotation.java index 5a951e9114..747d95dabc 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToOneAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/java/NullOneToOneAnnotation.java @@ -17,7 +17,7 @@ import org.eclipse.jpt.core.utility.TextRange; /** * javax.persistence.OneToOne */ -public final class NullOneToOneAnnotation +public class NullOneToOneAnnotation extends NullOwnableRelationshipMappingAnnotation implements OneToOneAnnotation { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToManyMapping2_0.java new file mode 100644 index 0000000000..c6c5eea257 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToManyMapping2_0.java @@ -0,0 +1,23 @@ +/******************************************************************************* +* 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.jpa2.context; + +import org.eclipse.jpt.core.context.OneToManyMapping; + +/** + * 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 OneToManyMapping2_0 + extends OneToManyMapping, OrphanRemovable2_0 +{} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToOneMapping2_0.java index eef30eaed1..c6e6401c97 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToOneMapping2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OneToOneMapping2_0.java @@ -12,6 +12,13 @@ package org.eclipse.jpt.core.jpa2.context; import org.eclipse.jpt.core.context.OneToOneMapping; +/** + * 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 OneToOneMapping2_0 - extends OneToOneMapping, SingleRelationshipMapping2_0 + extends OneToOneMapping, SingleRelationshipMapping2_0, OrphanRemovable2_0 {} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OrphanRemovable2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OrphanRemovable2_0.java new file mode 100644 index 0000000000..ff45eb83f6 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/OrphanRemovable2_0.java @@ -0,0 +1,37 @@ +/******************************************************************************* +* 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.jpa2.context; + +import org.eclipse.jpt.core.context.JpaContextNode; + +/** + * 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. + * + * @version 3.0 + * @since 3.0 + */ +public interface OrphanRemovable2_0 + extends JpaContextNode +{ + boolean isOrphanRemoval(); + + boolean isDefaultOrphanRemoval(); + String DEFAULT_ORPHAN_REMOVAL_PROPERTY = "defaultOrphanRemoval"; //$NON-NLS-1$ + boolean DEFAULT_ORPHAN_REMOVAL = false; + + Boolean getSpecifiedOrphanRemoval(); + void setSpecifiedOrphanRemoval(Boolean newSpecifiedOrphanRemoval); + String SPECIFIED_ORPHAN_REMOVAL_PROPERTY = "specifiedOrphanRemoval"; //$NON-NLS-1$ + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/java/JavaOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/java/JavaOneToManyMapping2_0.java new file mode 100644 index 0000000000..5e5b7fc862 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/java/JavaOneToManyMapping2_0.java @@ -0,0 +1,20 @@ +/******************************************************************************* +* 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.jpa2.context.java; + +import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; + +/** + * JavaOneToManyMapping2_0 + */ +public interface JavaOneToManyMapping2_0 + extends JavaOneToManyMapping, OneToManyMapping2_0 +{}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmOneToManyMapping2_0.java new file mode 100644 index 0000000000..d76f8d14e1 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmOneToManyMapping2_0.java @@ -0,0 +1,27 @@ +/******************************************************************************* +* 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.jpa2.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; + +/** + * 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. + * + * @version 3.0 + * @since 3.0 + */ +public interface OrmOneToManyMapping2_0 + extends OrmOneToManyMapping, OneToManyMapping2_0 +{} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/resource/java/OneToMany2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/resource/java/OneToMany2_0Annotation.java index 7b3c7e6412..e541a65846 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/resource/java/OneToMany2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/resource/java/OneToMany2_0Annotation.java @@ -25,13 +25,13 @@ public interface OneToMany2_0Annotation * Returns null if the orphanRemoval element does not exist in java. */ Boolean getOrphanRemoval(); + String ORPHAN_REMOVAL_PROPERTY = "orphanRemoval"; //$NON-NLS-1$ /** * Corresponds to the orphanRemoval element of the OneToMany annotation. * Set to null to remove the orphanRemoval element. */ void setOrphanRemoval(Boolean orphanRemoval); - String ORPHAN_REMOVAL_PROPERTY = "orphanRemoval"; //$NON-NLS-1$ /** * Return the {@link TextRange} for the orphanRemoval element. If the orphanRemoval element diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.eclipselink.core/META-INF/MANIFEST.MF index 663d50b7db..fdcd303e7b 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/META-INF/MANIFEST.MF +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/META-INF/MANIFEST.MF @@ -56,13 +56,16 @@ Export-Package: org.eclipse.jpt.eclipselink.core, org.eclipse.jpt.eclipselink.core.internal.v1_1;x-internal:=true, org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm;x-internal:=true, org.eclipse.jpt.eclipselink.core.internal.v2_0;x-internal:=true, + org.eclipse.jpt.eclipselink.core.internal.v2_0.context.java;x-internal:=true, org.eclipse.jpt.eclipselink.core.internal.v2_0.context.orm;x-internal:=true, org.eclipse.jpt.eclipselink.core.internal.v2_0.context.persistence;x-internal:=true, + org.eclipse.jpt.eclipselink.core.internal.v2_0.context.persistence.connection;x-internal:=true, org.eclipse.jpt.eclipselink.core.internal.v2_0.context.persistence.options;x-internal:=true, org.eclipse.jpt.eclipselink.core.resource.java, org.eclipse.jpt.eclipselink.core.resource.orm, org.eclipse.jpt.eclipselink.core.resource.orm.v1_1, org.eclipse.jpt.eclipselink.core.resource.orm.v2_0, + org.eclipse.jpt.eclipselink.core.v2_0.context, org.eclipse.jpt.eclipselink.core.v2_0.context.persistence.connection, org.eclipse.jpt.eclipselink.core.v2_0.context.persistence.options Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java index e55e9a99d1..bf2fd32edc 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java @@ -10,12 +10,14 @@ package org.eclipse.jpt.eclipselink.core.internal.context.java; import java.util.List; + 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.context.java.AbstractJavaOneToManyMapping; -import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToManyMapping; +import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToManyMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkPrivateOwnedAnnotation; @@ -24,7 +26,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class JavaEclipseLinkOneToManyMapping - extends AbstractJavaOneToManyMapping + extends AbstractJavaOneToManyMapping<OneToManyAnnotation> implements EclipseLinkOneToManyMapping { protected final JavaEclipseLinkJoinFetch joinFetch; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java index 5c5b039392..2ba7c0a8ee 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java @@ -10,11 +10,12 @@ package org.eclipse.jpt.eclipselink.core.internal.context.java; import java.util.List; + 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.eclipselink.core.context.EclipseLinkOneToOneMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToOneMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.utility.internal.ArrayTools; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java index bda35b5c68..940441042e 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java @@ -16,6 +16,8 @@ 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.JavaJpaContextNode; +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; @@ -44,6 +46,8 @@ import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory; +import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.java.JavaEclipseLinkOneToManyMapping2_0; +import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.java.JavaEclipseLinkOneToOneMapping2_0; /** * EclipseLink2_0JpaFactory @@ -113,4 +117,14 @@ public class EclipseLink2_0JpaFactory public JavaCacheable2_0 buildJavaCacheable(JavaTypeMapping parent) { return new GenericJavaCacheable2_0(parent); } + + @Override + public JavaOneToManyMapping buildJavaOneToManyMapping(JavaPersistentAttribute parent) { + return new JavaEclipseLinkOneToManyMapping2_0(parent); + } + + @Override + public JavaOneToOneMapping buildJavaOneToOneMapping(JavaPersistentAttribute parent) { + return new JavaEclipseLinkOneToOneMapping2_0(parent); + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToManyMapping2_0.java new file mode 100644 index 0000000000..46f0703b97 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToManyMapping2_0.java @@ -0,0 +1,83 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.java; + +import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToMany2_0Annotation; +import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToManyMapping; +import org.eclipse.jpt.eclipselink.core.v2_0.context.EclipseLinkOneToManyMapping2_0; + +/** + * JavaEclipseLinkOneToManyMapping2_0 + */ +public class JavaEclipseLinkOneToManyMapping2_0 + extends JavaEclipseLinkOneToManyMapping + implements EclipseLinkOneToManyMapping2_0 +{ + private Boolean specifiedOrphanRemoval; + + // ********** constructor ********** + public JavaEclipseLinkOneToManyMapping2_0(JavaPersistentAttribute parent) { + super(parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + protected void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + // ********** JPA 2.0 - OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.specifiedOrphanRemoval != null) ? this.specifiedOrphanRemoval.booleanValue() : this.isDefaultOrphanRemoval(); + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.setResourceOrphanRemoval(newOrphanRemoval); + this.firePropertyChanged(OneToManyMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL; + } + + protected Boolean getResourceOrphanRemoval() { + return ((OneToMany2_0Annotation) this.mappingAnnotation).getOrphanRemoval(); + } + + protected void setResourceOrphanRemoval(Boolean newOrphanRemoval) { + ((OneToMany2_0Annotation) this.mappingAnnotation).setOrphanRemoval(newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OneToManyMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToOneMapping2_0.java new file mode 100644 index 0000000000..d89b625a83 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/java/JavaEclipseLinkOneToOneMapping2_0.java @@ -0,0 +1,83 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.java; + +import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OneToOneMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToOne2_0Annotation; +import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToOneMapping; +import org.eclipse.jpt.eclipselink.core.v2_0.context.EclipseLinkOneToOneMapping2_0; + +/** + * JavaEclipseLinkOneToOneMapping2_0 + */ +public class JavaEclipseLinkOneToOneMapping2_0 + extends JavaEclipseLinkOneToOneMapping + implements EclipseLinkOneToOneMapping2_0 +{ + private Boolean specifiedOrphanRemoval; + + // ********** constructor ********** + public JavaEclipseLinkOneToOneMapping2_0(JavaPersistentAttribute parent) { + super(parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.specifiedOrphanRemoval = this.getResourceOrphanRemoval(); + } + + @Override + protected void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + // ********** JPA 2.0 - OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.specifiedOrphanRemoval != null) ? this.specifiedOrphanRemoval.booleanValue() : this.isDefaultOrphanRemoval(); + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.setResourceOrphanRemoval(newOrphanRemoval); + this.firePropertyChanged(OneToOneMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL; + } + + protected Boolean getResourceOrphanRemoval() { + return ((OneToOne2_0Annotation) this.mappingAnnotation).getOrphanRemoval(); + } + + protected void setResourceOrphanRemoval(Boolean newOrphanRemoval) { + ((OneToOne2_0Annotation) this.mappingAnnotation).setOrphanRemoval(newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OneToOneMapping2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java index 209ddedc5b..1d87b25799 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java @@ -25,6 +25,8 @@ import org.eclipse.jpt.core.context.java.JavaVersionMapping; import org.eclipse.jpt.core.context.orm.OrmAssociationOverride; import org.eclipse.jpt.core.context.orm.OrmAssociationOverrideContainer; import org.eclipse.jpt.core.context.orm.OrmAssociationOverrideRelationshipReference; +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.OrmSequenceGenerator; @@ -39,6 +41,7 @@ import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmMapsId2_0; import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmSequenceGenerator2_0; import org.eclipse.jpt.core.internal.jpa2.context.orm.VirtualXmlAssociationOverride2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaElementCollectionMapping2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmCacheable2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmElementCollectionMapping2_0; @@ -54,7 +57,6 @@ import org.eclipse.jpt.core.resource.orm.v2_0.XmlDerivedId_2_0; import org.eclipse.jpt.core.resource.orm.v2_0.XmlMapsId_2_0; import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicCollectionMapping; import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkBasicMapMapping; -import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkOneToManyMapping; import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkTransformationMapping; import org.eclipse.jpt.eclipselink.core.internal.context.java.JavaEclipseLinkVariableOneToOneMapping; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmXmlContextNodeFactory; @@ -67,12 +69,11 @@ import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipse import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlId1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlManyToMany1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlManyToOne1_1; -import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlOneToMany1_1; -import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlOneToOne1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlTransformation1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlTransient1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlVariableOneToOne1_1; import org.eclipse.jpt.eclipselink.core.internal.v1_1.context.orm.VirtualEclipseLinkXmlVersion1_1; +import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.java.JavaEclipseLinkOneToManyMapping2_0; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlBasic; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlBasicCollection; @@ -128,6 +129,16 @@ public class EclipseLinkOrmXml2_0ContextNodeFactory extends EclipseLinkOrmXmlCon } @Override + public OrmOneToManyMapping buildOrmOneToManyMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlOneToMany resourceMapping) { + return new OrmEclipseLinkOneToManyMapping2_0(parent, (XmlOneToMany) resourceMapping); + } + + @Override + public OrmOneToOneMapping buildOrmOneToOneMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlOneToOne resourceMapping) { + return new OrmEclipseLinkOneToOneMapping2_0(parent, (XmlOneToOne) resourceMapping); + } + + @Override public OrmCacheable2_0 buildOrmCacheable(OrmTypeMapping parent, XmlCacheable2_0 resource) { return new GenericOrmCacheable2_0(parent, resource); } @@ -166,12 +177,12 @@ public class EclipseLinkOrmXml2_0ContextNodeFactory extends EclipseLinkOrmXmlCon @Override public XmlOneToMany buildVirtualXmlOneToMany(OrmTypeMapping ormTypeMapping, JavaOneToManyMapping javaOneToManyMapping) { - return new VirtualEclipseLinkXmlOneToMany1_1(ormTypeMapping, (JavaEclipseLinkOneToManyMapping) javaOneToManyMapping); + return new VirtualEclipseLinkXmlOneToMany2_0(ormTypeMapping, (JavaEclipseLinkOneToManyMapping2_0) javaOneToManyMapping); } @Override public XmlOneToOne buildVirtualXmlOneToOne(OrmTypeMapping ormTypeMapping, JavaOneToOneMapping javaOneToOneMapping) { - return new VirtualEclipseLinkXmlOneToOne1_1(ormTypeMapping, javaOneToOneMapping); + return new VirtualEclipseLinkXmlOneToOne2_0(ormTypeMapping, (JavaOneToOneMapping2_0) javaOneToOneMapping); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToManyMapping2_0.java new file mode 100644 index 0000000000..520dbebe61 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToManyMapping2_0.java @@ -0,0 +1,69 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OrphanRemovable2_0; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkOneToManyMapping; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlOneToMany; + +/** + * OrmEclipseLinkOneToManyMapping2_0 + */ +public class OrmEclipseLinkOneToManyMapping2_0 extends OrmEclipseLinkOneToManyMapping +{ + protected Boolean specifiedOrphanRemoval; + + public OrmEclipseLinkOneToManyMapping2_0(OrmPersistentAttribute parent, XmlOneToMany resourceMapping) { + super(parent, resourceMapping); + } + + @Override + public void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + protected Boolean getResourceOrphanRemoval() { + return this.resourceAttributeMapping.isOrphanRemoval(); + } + + // ********** OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.getSpecifiedOrphanRemoval() == null) ? this.isDefaultOrphanRemoval() : this.getSpecifiedOrphanRemoval().booleanValue(); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL; + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.resourceAttributeMapping.setOrphanRemoval(newOrphanRemoval); + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToOneMapping2_0.java new file mode 100644 index 0000000000..b2bbc81bc8 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/OrmEclipseLinkOneToOneMapping2_0.java @@ -0,0 +1,69 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OrphanRemovable2_0; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.OrmEclipseLinkOneToOneMapping; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlOneToOne; + +/** + * OrmEclipseLinkOneToOneMapping2_0 + */ +public class OrmEclipseLinkOneToOneMapping2_0 extends OrmEclipseLinkOneToOneMapping +{ + protected Boolean specifiedOrphanRemoval; + + public OrmEclipseLinkOneToOneMapping2_0(OrmPersistentAttribute parent, XmlOneToOne resourceMapping) { + super(parent, resourceMapping); + } + + @Override + public void update() { + super.update(); + this.setSpecifiedOrphanRemoval_(this.getResourceOrphanRemoval()); + } + + protected Boolean getResourceOrphanRemoval() { + return this.resourceAttributeMapping.isOrphanRemoval(); + } + + // ********** OrphanRemovable2_0 implementation ********** + + @Override + public boolean isOrphanRemoval() { + return (this.getSpecifiedOrphanRemoval() == null) ? this.isDefaultOrphanRemoval() : this.getSpecifiedOrphanRemoval().booleanValue(); + } + + @Override + public boolean isDefaultOrphanRemoval() { + return OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL; + } + + @Override + public Boolean getSpecifiedOrphanRemoval() { + return this.specifiedOrphanRemoval; + } + + @Override + public void setSpecifiedOrphanRemoval(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + this.resourceAttributeMapping.setOrphanRemoval(newOrphanRemoval); + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + + protected void setSpecifiedOrphanRemoval_(Boolean newOrphanRemoval) { + Boolean old = this.specifiedOrphanRemoval; + this.specifiedOrphanRemoval = newOrphanRemoval; + firePropertyChanged(OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, old, newOrphanRemoval); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToMany2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToMany2_0.java new file mode 100644 index 0000000000..cc6e911962 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToMany2_0.java @@ -0,0 +1,224 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.orm; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.jpt.core.context.orm.OrmTypeMapping; +import org.eclipse.jpt.core.resource.orm.AccessType; +import org.eclipse.jpt.core.resource.orm.CascadeType; +import org.eclipse.jpt.core.resource.orm.FetchType; +import org.eclipse.jpt.core.resource.orm.MapKey; +import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; +import org.eclipse.jpt.core.resource.orm.XmlJoinTable; +import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.VirtualEclipseLinkXmlOneToMany; +import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.java.JavaEclipseLinkOneToManyMapping2_0; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlAccessMethods; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlJoinFetchType; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlOneToMany; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlProperty; + +/** + * VirtualEclipseLinkXmlOneToMany2_0 + */ +public class VirtualEclipseLinkXmlOneToMany2_0 extends XmlOneToMany +{ + protected OrmTypeMapping ormTypeMapping; + + protected final JavaEclipseLinkOneToManyMapping2_0 javaAttributeMapping; + + protected final VirtualEclipseLinkXmlOneToMany virtualXmlOneToMany; + + public VirtualEclipseLinkXmlOneToMany2_0( + OrmTypeMapping ormTypeMapping, JavaEclipseLinkOneToManyMapping2_0 javaOneToManyMapping) { + super(); + this.ormTypeMapping = ormTypeMapping; + this.javaAttributeMapping = javaOneToManyMapping; + this.virtualXmlOneToMany = new VirtualEclipseLinkXmlOneToMany(ormTypeMapping, javaOneToManyMapping); + } + + protected boolean isOrmMetadataComplete() { + return this.ormTypeMapping.isMetadataComplete(); + } + + @Override + public String getMappingKey() { + return this.virtualXmlOneToMany.getMappingKey(); + } + + @Override + public String getName() { + return this.virtualXmlOneToMany.getName(); + } + + @Override + public void setName(String newName) { + this.virtualXmlOneToMany.setName(newName); + } + + @Override + public TextRange getNameTextRange() { + return this.virtualXmlOneToMany.getNameTextRange(); + } + + @Override + public FetchType getFetch() { + return this.virtualXmlOneToMany.getFetch(); + } + + @Override + public void setFetch(FetchType newFetch) { + this.virtualXmlOneToMany.setFetch(newFetch); + } + + @Override + public CascadeType getCascade() { + return this.virtualXmlOneToMany.getCascade(); + } + + @Override + public void setCascade(CascadeType value) { + this.virtualXmlOneToMany.setCascade(value); + } + + @Override + public boolean isOrphanRemoval() { + if (this.isOrmMetadataComplete()) { + return this.javaAttributeMapping.isDefaultOrphanRemoval(); + } + return this.javaAttributeMapping.isOrphanRemoval(); + } + + @Override + public void setOrphanRemoval(boolean newOrphanRemoval) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } + + @Override + public XmlJoinTable getJoinTable() { + return this.virtualXmlOneToMany.getJoinTable(); + } + + @Override + public void setJoinTable(XmlJoinTable value) { + this.virtualXmlOneToMany.setJoinTable(value); + } + + @Override + public String getTargetEntity() { + return this.virtualXmlOneToMany.getTargetEntity(); + } + + @Override + public void setTargetEntity(String value) { + this.virtualXmlOneToMany.setTargetEntity(value); + } + + @Override + public String getMappedBy() { + return this.virtualXmlOneToMany.getMappedBy(); + } + + @Override + public void setMappedBy(String value) { + this.virtualXmlOneToMany.setMappedBy(value); + } + + + @Override + public MapKey getMapKey() { + return this.virtualXmlOneToMany.getMapKey(); + } + + @Override + public void setMapKey(MapKey value) { + this.virtualXmlOneToMany.setMapKey(value); + } + + @Override + public String getOrderBy() { + return this.virtualXmlOneToMany.getOrderBy(); + } + + @Override + public void setOrderBy(String value) { + this.virtualXmlOneToMany.setOrderBy(value); + } + + @Override + public TextRange getMappedByTextRange() { + return this.virtualXmlOneToMany.getMappedByTextRange(); + } + + @Override + public TextRange getTargetEntityTextRange() { + return this.virtualXmlOneToMany.getTargetEntityTextRange(); + } + + @Override + public EList<XmlJoinColumn> getJoinColumns() { + return this.virtualXmlOneToMany.getJoinColumns(); + } + + @Override + public XmlJoinFetchType getJoinFetch() { + return this.virtualXmlOneToMany.getJoinFetch(); + } + + @Override + public void setJoinFetch(XmlJoinFetchType value) { + this.virtualXmlOneToMany.setJoinFetch(value); + } + + @Override + public boolean isPrivateOwned() { + return this.virtualXmlOneToMany.isPrivateOwned(); + } + + @Override + public void setPrivateOwned(boolean value) { + this.virtualXmlOneToMany.setPrivateOwned(value); + } + + @Override + public XmlAccessMethods getAccessMethods() { + return this.virtualXmlOneToMany.getAccessMethods(); + } + + @Override + public void setAccessMethods(XmlAccessMethods value) { + this.virtualXmlOneToMany.setAccessMethods(value); + } + + @Override + public EList<XmlProperty> getProperties() { + return this.virtualXmlOneToMany.getProperties(); + } + + @Override + public TextRange getJoinFetchTextRange() { + return this.virtualXmlOneToMany.getJoinFetchTextRange(); + } + + @Override + public TextRange getPrivateOwnedTextRange() { + return this.virtualXmlOneToMany.getPrivateOwnedTextRange(); + } + + @Override + public AccessType getAccess() { + return org.eclipse.jpt.core.context.AccessType.toOrmResourceModel(this.javaAttributeMapping.getPersistentAttribute().getAccess()); + } + + @Override + public void setAccess(AccessType value) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToOne2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToOne2_0.java new file mode 100644 index 0000000000..06889e9f73 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/context/orm/VirtualEclipseLinkXmlOneToOne2_0.java @@ -0,0 +1,217 @@ +/******************************************************************************* +* 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.eclipselink.core.internal.v2_0.context.orm; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; +import org.eclipse.jpt.core.context.orm.OrmTypeMapping; +import org.eclipse.jpt.core.resource.orm.AccessType; +import org.eclipse.jpt.core.resource.orm.CascadeType; +import org.eclipse.jpt.core.resource.orm.FetchType; +import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; +import org.eclipse.jpt.core.resource.orm.XmlJoinTable; +import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; +import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.VirtualEclipseLinkXmlOneToOne; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlAccessMethods; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlJoinFetchType; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlOneToOne; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlProperty; + +/** + * VirtualEclipseLinkXmlOneToOne2_0 + */ +public class VirtualEclipseLinkXmlOneToOne2_0 extends XmlOneToOne +{ + protected OrmTypeMapping ormTypeMapping; + + protected final JavaOneToOneMapping2_0 javaAttributeMapping; + + protected final VirtualEclipseLinkXmlOneToOne virtualXmlOneToOne; + + public VirtualEclipseLinkXmlOneToOne2_0(OrmTypeMapping ormTypeMapping, JavaOneToOneMapping2_0 javaOneToOneMapping) { + super(); + this.ormTypeMapping = ormTypeMapping; + this.javaAttributeMapping = javaOneToOneMapping; + this.virtualXmlOneToOne = new VirtualEclipseLinkXmlOneToOne(ormTypeMapping, javaOneToOneMapping); + } + + protected boolean isOrmMetadataComplete() { + return this.ormTypeMapping.isMetadataComplete(); + } + + @Override + public String getMappingKey() { + return this.virtualXmlOneToOne.getMappingKey(); + } + + @Override + public String getName() { + return this.virtualXmlOneToOne.getName(); + } + + @Override + public void setName(String newName) { + this.virtualXmlOneToOne.setName(newName); + } + + @Override + public TextRange getNameTextRange() { + return this.virtualXmlOneToOne.getNameTextRange(); + } + + @Override + public FetchType getFetch() { + return this.virtualXmlOneToOne.getFetch(); + } + + @Override + public void setFetch(FetchType newFetch) { + this.virtualXmlOneToOne.setFetch(newFetch); + } + + @Override + public Boolean getOptional() { + return this.virtualXmlOneToOne.getOptional(); + } + + @Override + public void setOptional(Boolean newOptional) { + this.virtualXmlOneToOne.setOptional(newOptional); + } + + @Override + public EList<XmlJoinColumn> getJoinColumns() { + return this.virtualXmlOneToOne.getJoinColumns(); + } + + @Override + public CascadeType getCascade() { + return this.virtualXmlOneToOne.getCascade(); + } + + @Override + public void setCascade(CascadeType value) { + this.virtualXmlOneToOne.setCascade(value); + } + + @Override + public boolean isOrphanRemoval() { + if (this.isOrmMetadataComplete()) { + return this.javaAttributeMapping.isDefaultOrphanRemoval(); + } + return this.javaAttributeMapping.isOrphanRemoval(); + } + + @Override + public void setOrphanRemoval(boolean newOrphanRemoval) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } + + @Override + public XmlJoinTable getJoinTable() { + return this.virtualXmlOneToOne.getJoinTable(); + } + + @Override + public void setJoinTable(XmlJoinTable value) { + this.virtualXmlOneToOne.setJoinTable(value); + } + + @Override + public String getTargetEntity() { + return this.virtualXmlOneToOne.getTargetEntity(); + } + + @Override + public void setTargetEntity(String value) { + this.virtualXmlOneToOne.setTargetEntity(value); + } + + @Override + public String getMappedBy() { + return this.virtualXmlOneToOne.getMappedBy(); + } + + @Override + public void setMappedBy(String value) { + this.virtualXmlOneToOne.setMappedBy(value); + } + + @Override + public EList<XmlPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns() { + return this.virtualXmlOneToOne.getPrimaryKeyJoinColumns(); + } + + @Override + public TextRange getMappedByTextRange() { + return this.virtualXmlOneToOne.getMappedByTextRange(); + } + + @Override + public TextRange getTargetEntityTextRange() { + return this.virtualXmlOneToOne.getTargetEntityTextRange(); + } + + @Override + public XmlJoinFetchType getJoinFetch() { + return this.virtualXmlOneToOne.getJoinFetch(); + } + + @Override + public void setJoinFetch(XmlJoinFetchType value) { + this.virtualXmlOneToOne.setJoinFetch(value); + } + + @Override + public boolean isPrivateOwned() { + return this.virtualXmlOneToOne.isPrivateOwned(); + } + + @Override + public void setPrivateOwned(boolean value) { + this.virtualXmlOneToOne.setPrivateOwned(value); + } + + @Override + public XmlAccessMethods getAccessMethods() { + return this.virtualXmlOneToOne.getAccessMethods(); + } + + @Override + public void setAccessMethods(XmlAccessMethods value) { + this.virtualXmlOneToOne.setAccessMethods(value); + } + + @Override + public EList<XmlProperty> getProperties() { + return this.virtualXmlOneToOne.getProperties(); + } + + @Override + public TextRange getJoinFetchTextRange() { + return this.virtualXmlOneToOne.getJoinFetchTextRange(); + } + + @Override + public TextRange getPrivateOwnedTextRange() { + return this.virtualXmlOneToOne.getPrivateOwnedTextRange(); + } + + @Override + public AccessType getAccess() { + return org.eclipse.jpt.core.context.AccessType.toOrmResourceModel(this.javaAttributeMapping.getPersistentAttribute().getAccess()); + } + + @Override + public void setAccess(AccessType value) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToManyMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToManyMapping2_0.java new file mode 100644 index 0000000000..45ee1bf2dd --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToManyMapping2_0.java @@ -0,0 +1,19 @@ +/******************************************************************************* +* 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.eclipselink.core.v2_0.context; + +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToManyMapping; + +/** + * EclipseLinkOneToManyMapping2_0 + */ +public interface EclipseLinkOneToManyMapping2_0 extends EclipseLinkOneToManyMapping, OneToManyMapping2_0 +{} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToOneMapping2_0.java new file mode 100644 index 0000000000..8450450b51 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/v2_0/context/EclipseLinkOneToOneMapping2_0.java @@ -0,0 +1,19 @@ +/******************************************************************************* +* 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.eclipselink.core.v2_0.context; + +import org.eclipse.jpt.core.jpa2.context.OneToOneMapping2_0; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToOneMapping; + +/** + * EclipseLinkOneToOneMapping2_0 + */ +public interface EclipseLinkOneToOneMapping2_0 extends EclipseLinkOneToOneMapping, OneToOneMapping2_0 +{} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java index b1e1438c8a..3da728716b 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java @@ -34,9 +34,6 @@ import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkOneToOneMappin import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkTransformationMappingComposite; import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkVariableOneToOneMappingComposite; import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkVersionMappingComposite; -import org.eclipse.jpt.eclipselink.ui.internal.details.java.JavaEclipseLinkEmbeddableComposite; -import org.eclipse.jpt.eclipselink.ui.internal.details.java.JavaEclipseLinkEntityComposite; -import org.eclipse.jpt.eclipselink.ui.internal.details.java.JavaEclipseLinkMappedSuperclassComposite; import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.details.java.BaseJavaUiFactory; @@ -109,7 +106,7 @@ public class EclipseLinkJavaUiFactory extends BaseJavaUiFactory @Override public JpaComposite createJavaOneToManyMappingComposite( - PropertyValueModel<? extends JavaOneToManyMapping> subjectHolder, + PropertyValueModel<JavaOneToManyMapping> subjectHolder, Composite parent, WidgetFactory widgetFactory) { return new EclipseLinkOneToManyMappingComposite(subjectHolder, parent, widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java index c1a2c37fde..ea993f20c4 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java @@ -12,6 +12,7 @@ package org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.java; import org.eclipse.jpt.core.context.java.JavaEntity; import org.eclipse.jpt.core.context.java.JavaIdMapping; 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.jpa2.context.java.JavaElementCollectionMapping2_0; import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.java.EclipseLink1_1JavaUiFactory; @@ -59,6 +60,14 @@ public class EclipseLink2_0JavaUiFactory } @Override + public JpaComposite createJavaOneToManyMappingComposite( + PropertyValueModel<JavaOneToManyMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new JavaEclipseLinkOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + } + + @Override public JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, Composite parent, diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java new file mode 100644 index 0000000000..ad1c857478 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java @@ -0,0 +1,140 @@ +/******************************************************************************* +* 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.eclipselink.ui.internal.v2_0.details.java; + +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToManyRelationshipReference; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkPrivateOwned; +import org.eclipse.jpt.eclipselink.core.v2_0.context.EclipseLinkOneToManyMapping2_0; +import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkOneToManyJoiningStrategyPane; +import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.internal.details.AbstractOneToManyMappingComposite; +import org.eclipse.jpt.ui.internal.details.CascadeComposite; +import org.eclipse.jpt.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.ui.internal.details.OrderingComposite; +import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | TargetEntityComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | EclipseLinkOneToManyJoiningStrategyPane | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | FetchTypeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | EclipseLinkJoinFetchComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | EclipseLinkPrivateOwnedComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | CascadeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrderingComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see {@link JavaOneToManyMapping2_0} + * @see {@link TargetEntityComposite} + * @see {@link EclipseLinkOneToManyJoiningStrategyPane} + * @see {@link FetchTypeComposite} + * @see {@link EclipseLinkJoinFetchComposite} + * @see {@link EclipseLinkPrivateOwnedComposite} + * @see {@link CascadeComposite} + * @see {@link OrphanRemoval2_0Composite} + * @see {@link OrderingComposite} + */ +public class JavaEclipseLinkOneToManyMapping2_0Composite<T extends EclipseLinkOneToManyMapping2_0> + extends AbstractOneToManyMappingComposite<T> +{ + public JavaEclipseLinkOneToManyMapping2_0Composite( + PropertyValueModel<? extends T> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + int groupBoxMargin = this.getGroupBoxMargin(); + + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new EclipseLinkOneToManyJoiningStrategyPane(this, this.buildEclipseLinkJoiningHolder(), container); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new EclipseLinkJoinFetchComposite(this, this.buildJoinFetchableHolder(), this.addPane(container, groupBoxMargin)); + new EclipseLinkPrivateOwnedComposite(this, this.buildPrivateOwnableHolder(), this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); + new OrderingComposite(this, container); + } + + protected PropertyValueModel<EclipseLinkOneToManyRelationshipReference> buildEclipseLinkJoiningHolder() { + return new TransformationPropertyValueModel<T, EclipseLinkOneToManyRelationshipReference>(this.getSubjectHolder()) { + @Override + protected EclipseLinkOneToManyRelationshipReference transform_(T value) { + return value.getRelationshipReference(); + } + }; + } + + protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { + return new PropertyAspectAdapter<T, EclipseLinkJoinFetch>(this.getSubjectHolder()) { + @Override + protected EclipseLinkJoinFetch buildValue_() { + return this.subject.getJoinFetch(); + } + }; + } + + protected PropertyValueModel<EclipseLinkPrivateOwned> buildPrivateOwnableHolder() { + return new PropertyAspectAdapter<T, EclipseLinkPrivateOwned>(this.getSubjectHolder()) { + @Override + protected EclipseLinkPrivateOwned buildValue_() { + return this.subject.getPrivateOwned(); + } + }; + } + +} +
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java index c8d750328b..2fcd95953e 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java @@ -23,6 +23,7 @@ import org.eclipse.jpt.ui.internal.details.OptionalComposite; import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; import org.eclipse.jpt.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.ui.internal.jpa2.details.DerivedId2_0Pane; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -61,6 +62,11 @@ import org.eclipse.swt.widgets.Composite; * | | CascadeComposite | | * | | | | * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | * -----------------------------------------------------------------------------</pre> * * @see {@link JavaOneToOneMapping2_0} @@ -70,6 +76,7 @@ import org.eclipse.swt.widgets.Composite; * @see {@link FetchTypeComposite} * @see {@link OptionalComposite} * @see {@link CascadeComposite} + * @see {@link OrphanRemoval2_0Composite} */ public class JavaEclipseLinkOneToOneMapping2_0Composite<T extends JavaOneToOneMapping2_0> extends AbstractOneToOneMapping2_0Composite<T> @@ -85,21 +92,22 @@ public class JavaEclipseLinkOneToOneMapping2_0Composite<T extends JavaOneToOneMa @Override protected void initializeLayout(Composite container) { - int groupBoxMargin = getGroupBoxMargin(); + int groupBoxMargin = this.getGroupBoxMargin(); - new TargetEntityComposite(this, addPane(container, groupBoxMargin)); - new DerivedId2_0Pane(this, buildDerivedIdHolder(), addPane(container, groupBoxMargin)); - new OneToOneJoiningStrategyPane(this, buildJoiningHolder(), container); - new FetchTypeComposite(this, addPane(container, groupBoxMargin)); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), addPane(container, groupBoxMargin)); - new OptionalComposite(this, addPane(container, groupBoxMargin)); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), addPane(container, groupBoxMargin)); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new DerivedId2_0Pane(this, this.buildDerivedIdHolder(), this.addPane(container, groupBoxMargin)); + new OneToOneJoiningStrategyPane(this, this.buildJoiningHolder(), container); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new EclipseLinkJoinFetchComposite(this, this.buildJoinFetchableHolder(), this.addPane(container, groupBoxMargin)); + new OptionalComposite(this, this.addPane(container, groupBoxMargin)); + new EclipseLinkPrivateOwnedComposite(this, this.buildPrivateOwnableHolder(), this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { - return new PropertyAspectAdapter<T, EclipseLinkJoinFetch>(getSubjectHolder()) { + return new PropertyAspectAdapter<T, EclipseLinkJoinFetch>(this.getSubjectHolder()) { @Override protected EclipseLinkJoinFetch buildValue_() { return ((EclipseLinkOneToOneMapping) this.subject).getJoinFetch(); @@ -108,7 +116,7 @@ public class JavaEclipseLinkOneToOneMapping2_0Composite<T extends JavaOneToOneMa } protected PropertyValueModel<EclipseLinkPrivateOwned> buildPrivateOwnableHolder() { - return new PropertyAspectAdapter<T, EclipseLinkPrivateOwned>(getSubjectHolder()) { + return new PropertyAspectAdapter<T, EclipseLinkPrivateOwned>(this.getSubjectHolder()) { @Override protected EclipseLinkPrivateOwned buildValue_() { return ((EclipseLinkOneToOneMapping) this.subject).getPrivateOwned(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details2_0.properties b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details2_0.properties index 6859e94195..da95f18cfd 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details2_0.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details2_0.properties @@ -16,3 +16,6 @@ ElementCollectionMapping2_0_linkLabel=element collection Entity_cacheableLabel=Cacheable Entity_cacheableWithDefaultLabel=Cacheable ({0}) + +OrphanRemoval2_0Composite_orphanRemovableLabel=Orphan Removable +OrphanRemoval2_0Composite_orphanRemovableLabelDefault=Orphan Removable ({0}) diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/java/JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/java/JavaUiFactory.java index a16ae2efca..18f9bda66d 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/java/JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/java/JavaUiFactory.java @@ -206,7 +206,7 @@ public interface JavaUiFactory * @return A new <code>JpaComposite</code> */ JpaComposite createJavaOneToManyMappingComposite( - PropertyValueModel<? extends JavaOneToManyMapping> subjectHolder, + PropertyValueModel<JavaOneToManyMapping> subjectHolder, Composite parent, WidgetFactory widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/java/BaseJavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/java/BaseJavaUiFactory.java index 0c7c888545..85a9ee321f 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/java/BaseJavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/java/BaseJavaUiFactory.java @@ -38,8 +38,6 @@ import org.eclipse.jpt.ui.internal.details.OneToManyMappingComposite; import org.eclipse.jpt.ui.internal.details.OneToOneMappingComposite; import org.eclipse.jpt.ui.internal.details.TransientMappingComposite; import org.eclipse.jpt.ui.internal.details.VersionMappingComposite; -import org.eclipse.jpt.ui.internal.details.java.JavaEntityComposite; -import org.eclipse.jpt.ui.internal.details.java.JavaMappedSuperclassComposite; import org.eclipse.jpt.ui.internal.details.orm.OrmEmbeddableComposite; import org.eclipse.jpt.ui.internal.details.orm.OrmEntityComposite; import org.eclipse.jpt.ui.internal.details.orm.OrmMappedSuperclassComposite; @@ -140,7 +138,7 @@ public abstract class BaseJavaUiFactory implements JavaUiFactory } public JpaComposite createJavaOneToManyMappingComposite( - PropertyValueModel<? extends JavaOneToManyMapping> subjectHolder, + PropertyValueModel<JavaOneToManyMapping> subjectHolder, Composite parent, WidgetFactory widgetFactory) { return new OneToManyMappingComposite(subjectHolder, parent, widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java index b8afe166c3..877028f29c 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java @@ -25,6 +25,9 @@ public class JptUiDetailsMessages2_0 { public static String Entity_cacheableLabel; public static String Entity_cacheableWithDefaultLabel; + + public static String OrphanRemoval2_0Composite_orphanRemovableLabel; + public static String OrphanRemoval2_0Composite_orphanRemovableLabelDefault; private static final String BUNDLE_NAME = "jpt_ui_details2_0"; //$NON-NLS-1$ private static final Class<?> BUNDLE_CLASS = JptUiDetailsMessages2_0.class; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/OrphanRemoval2_0Composite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/OrphanRemoval2_0Composite.java new file mode 100644 index 0000000000..175adcb69a --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/OrphanRemoval2_0Composite.java @@ -0,0 +1,94 @@ +/******************************************************************************* +* 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.jpa2.details; + +import org.eclipse.jpt.core.jpa2.context.OrphanRemovable2_0; +import org.eclipse.jpt.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.ui.internal.widgets.FormPane; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Composite; + +/** + * OrphanRemoval2_0Composite + */ +public class OrphanRemoval2_0Composite extends FormPane<OrphanRemovable2_0> +{ + /** + * Creates a new <code>OrphanRemoval2_0Composite</code>. + * + * @param parentPane The parent container of this one + * @param parent The parent container + */ + public OrphanRemoval2_0Composite( + FormPane<? extends OrphanRemovable2_0> parentPane, + Composite parent) + { + super(parentPane, parent); + } + + @Override + protected void initializeLayout(Composite container) { + + this.addTriStateCheckBoxWithDefault( + this.addSubPane(container, 4), + JptUiDetailsMessages2_0.OrphanRemoval2_0Composite_orphanRemovableLabel, + this.buildOrphanRemovalHolder(), + this.buildOrphanRemovalStringHolder(), + null // TODO + ); + } + private WritablePropertyValueModel<Boolean> buildOrphanRemovalHolder() { + return new PropertyAspectAdapter<OrphanRemovable2_0, Boolean>(this.getSubjectHolder(), OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSpecifiedOrphanRemoval(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSpecifiedOrphanRemoval(value); + } + }; + } + + private PropertyValueModel<String> buildOrphanRemovalStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(this.buildDefaultOrphanRemovalHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptUiDetailsMessages.Boolean_True : JptUiDetailsMessages.Boolean_False; + return NLS.bind(JptUiDetailsMessages2_0.OrphanRemoval2_0Composite_orphanRemovableLabelDefault, defaultStringValue); + } + return JptUiDetailsMessages2_0.OrphanRemoval2_0Composite_orphanRemovableLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultOrphanRemovalHolder() { + return new PropertyAspectAdapter<OrphanRemovable2_0, Boolean>( + this.getSubjectHolder(), + OrphanRemovable2_0.SPECIFIED_ORPHAN_REMOVAL_PROPERTY, + OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSpecifiedOrphanRemoval() != null) { + return null; + } + return Boolean.valueOf(this.subject.isDefaultOrphanRemoval()); + } + }; + } + +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java index 97336b7586..d5ef33af70 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java @@ -15,19 +15,14 @@ import org.eclipse.jpt.core.context.java.JavaEntity; import org.eclipse.jpt.core.context.java.JavaIdMapping; import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; import org.eclipse.jpt.core.context.java.JavaMappedSuperclass; +import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; import org.eclipse.jpt.core.jpa2.context.java.JavaElementCollectionMapping2_0; 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.ui.internal.jpa2.details.ElementCollectionMapping2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaEmbeddable2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaEmbeddedMapping2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaEntity2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaIdMapping2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaManyToOneMapping2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaMappedSuperclass2_0Composite; -import org.eclipse.jpt.ui.internal.jpa2.details.java.JavaOneToOneMapping2_0Composite; +import org.eclipse.jpt.ui.internal.persistence.details.GenericPersistenceXmlUiFactory; import org.eclipse.jpt.ui.jpa2.details.java.JavaUiFactory2_0; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -90,6 +85,14 @@ public class Generic2_0JavaUiFactory WidgetFactory widgetFactory) { return new JavaManyToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); } + + @Override + public JpaComposite createJavaOneToManyMappingComposite( + PropertyValueModel<JavaOneToManyMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new JavaOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + } @Override public JpaComposite createJavaOneToOneMappingComposite( diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java new file mode 100644 index 0000000000..fd7fc1a5d9 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java @@ -0,0 +1,91 @@ +/******************************************************************************* +* 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.jpa2.details.java; + +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToManyMapping2_0; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.internal.details.AbstractOneToManyMappingComposite; +import org.eclipse.jpt.ui.internal.details.CascadeComposite; +import org.eclipse.jpt.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.ui.internal.details.OneToManyJoiningStrategyPane; +import org.eclipse.jpt.ui.internal.details.OrderingComposite; +import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | TargetEntityComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OneToManyJoiningStrategyPane | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | FetchTypeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | CascadeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrderingComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see {@link JavaOneToManyMapping2_0} + * @see {@link TargetEntityComposite} + * @see {@link OneToManyJoiningStrategyPane} + * @see {@link FetchTypeComposite} + * @see {@link CascadeComposite} + * @see {@link OrphanRemoval2_0Composite} + * @see {@link OrderingComposite} + */ +public class JavaOneToManyMapping2_0Composite<T extends JavaOneToManyMapping2_0> + extends AbstractOneToManyMappingComposite<T> +{ + public JavaOneToManyMapping2_0Composite( + PropertyValueModel<T> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + int groupBoxMargin = getGroupBoxMargin(); + + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new OneToManyJoiningStrategyPane(this, this.buildJoiningHolder(), container); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); + new OrderingComposite(this, container); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java index dbb15580fa..06325e7fea 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java @@ -9,6 +9,7 @@ import org.eclipse.jpt.ui.internal.details.OptionalComposite; import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; import org.eclipse.jpt.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.ui.internal.jpa2.details.DerivedId2_0Pane; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -46,6 +47,11 @@ import org.eclipse.swt.widgets.Composite; * | | CascadeComposite | | * | | | | * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | * -----------------------------------------------------------------------------</pre> * * @see {@link JavaOneToOneMapping2_0} @@ -55,6 +61,7 @@ import org.eclipse.swt.widgets.Composite; * @see {@link FetchTypeComposite} * @see {@link OptionalComposite} * @see {@link CascadeComposite} + * @see {@link OrphanRemoval2_0Composite} */ public class JavaOneToOneMapping2_0Composite<T extends JavaOneToOneMapping2_0> extends AbstractOneToOneMapping2_0Composite<T> @@ -72,11 +79,12 @@ public class JavaOneToOneMapping2_0Composite<T extends JavaOneToOneMapping2_0> protected void initializeLayout(Composite container) { int groupBoxMargin = getGroupBoxMargin(); - new TargetEntityComposite(this, addPane(container, groupBoxMargin)); - new DerivedId2_0Pane(this, buildDerivedIdHolder(), addPane(container, groupBoxMargin)); - new OneToOneJoiningStrategyPane(this, buildJoiningHolder(), container); - new FetchTypeComposite(this, addPane(container, groupBoxMargin)); - new OptionalComposite(this, addPane(container, groupBoxMargin)); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new DerivedId2_0Pane(this, this.buildDerivedIdHolder(), this.addPane(container, groupBoxMargin)); + new OneToOneJoiningStrategyPane(this, this.buildJoiningHolder(), container); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new OptionalComposite(this, this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java index 3a071ef7af..beab2a33d3 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java @@ -10,7 +10,9 @@ package org.eclipse.jpt.ui.internal.jpa2.details.orm; import org.eclipse.jpt.core.context.AccessHolder; +import org.eclipse.jpt.core.context.OneToManyMapping; import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; +import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToManyMapping2_0; import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.internal.details.AbstractOneToManyMappingComposite; import org.eclipse.jpt.ui.internal.details.AccessTypeComposite; @@ -19,15 +21,66 @@ import org.eclipse.jpt.ui.internal.details.FetchTypeComposite; import org.eclipse.jpt.ui.internal.details.OneToManyJoiningStrategyPane; import org.eclipse.jpt.ui.internal.details.OrderingComposite; import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; - -public class OrmOneToManyMapping2_0Composite extends AbstractOneToManyMappingComposite<OrmOneToManyMapping> +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | TargetEntityComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OneToManyJoiningStrategyPane | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | AccessTypeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | FetchTypeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | CascadeComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrderingComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see OneToManyMapping + * @see TargetEntityComposite + * @see OneToManyJoiningStrategyPane + * @see AccessTypeComposite + * @see FetchTypeComposite + * @see CascadeComposite + * @see OrphanRemoval2_0Composite + * @see OrderingComposite + */ +public class OrmOneToManyMapping2_0Composite<T extends OrmOneToManyMapping2_0> + extends AbstractOneToManyMappingComposite<T> { public OrmOneToManyMapping2_0Composite( - PropertyValueModel<? extends OrmOneToManyMapping> subjectHolder, + PropertyValueModel<T> subjectHolder, Composite parent, WidgetFactory widgetFactory) { super(subjectHolder, parent, widgetFactory); @@ -37,16 +90,17 @@ public class OrmOneToManyMapping2_0Composite extends AbstractOneToManyMappingCom protected void initializeLayout(Composite container) { int groupBoxMargin = getGroupBoxMargin(); - new TargetEntityComposite(this, addPane(container, groupBoxMargin)); - new OneToManyJoiningStrategyPane(this, buildJoiningHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), addPane(container, groupBoxMargin)); - new FetchTypeComposite(this, addPane(container, groupBoxMargin)); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new OneToManyJoiningStrategyPane(this, this.buildJoiningHolder(), container); + new AccessTypeComposite(this, this.buildAccessHolderHolder(), this.addPane(container, groupBoxMargin)); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); new OrderingComposite(this, container); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { - return new PropertyAspectAdapter<OrmOneToManyMapping, AccessHolder>(getSubjectHolder()) { + return new PropertyAspectAdapter<OrmOneToManyMapping, AccessHolder>(this.getSubjectHolder()) { @Override protected AccessHolder buildValue_() { return this.subject.getPersistentAttribute(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java index 2b86688aa2..5c24ca57cb 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java @@ -21,6 +21,7 @@ import org.eclipse.jpt.ui.internal.details.OptionalComposite; import org.eclipse.jpt.ui.internal.details.TargetEntityComposite; import org.eclipse.jpt.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.ui.internal.jpa2.details.DerivedId2_0Pane; +import org.eclipse.jpt.ui.internal.jpa2.details.OrphanRemoval2_0Composite; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -64,6 +65,11 @@ import org.eclipse.swt.widgets.Composite; * | | CascadeComposite | | * | | | | * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrphanRemoval2_0Composite | | + * | | | | + * | ------------------------------------------------------------------------- | * -----------------------------------------------------------------------------</pre> * * @see {@link OrmOneToOneMapping2_0} @@ -75,6 +81,7 @@ import org.eclipse.swt.widgets.Composite; * @see {@link FetchTypeComposite} * @see {@link OptionalComposite} * @see {@link CascadeComposite} + * @see {@link OrphanRemoval2_0Composite} */ public class OrmOneToOneMapping2_0Composite<T extends OrmOneToOneMapping2_0> extends AbstractOneToOneMapping2_0Composite<T> @@ -92,17 +99,18 @@ public class OrmOneToOneMapping2_0Composite<T extends OrmOneToOneMapping2_0> protected void initializeLayout(Composite container) { int groupBoxMargin = getGroupBoxMargin(); - new TargetEntityComposite(this, addPane(container, groupBoxMargin)); - new DerivedId2_0Pane(this, buildDerivedIdHolder(), addPane(container, groupBoxMargin)); - new OneToOneJoiningStrategyPane(this, buildJoiningHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), addPane(container, groupBoxMargin)); - new FetchTypeComposite(this, addPane(container, groupBoxMargin)); - new OptionalComposite(this, addPane(container, groupBoxMargin)); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + new TargetEntityComposite(this, this.addPane(container, groupBoxMargin)); + new DerivedId2_0Pane(this, this.buildDerivedIdHolder(), this.addPane(container, groupBoxMargin)); + new OneToOneJoiningStrategyPane(this, this.buildJoiningHolder(), container); + new AccessTypeComposite(this, this.buildAccessHolderHolder(), this.addPane(container, groupBoxMargin)); + new FetchTypeComposite(this, this.addPane(container, groupBoxMargin)); + new OptionalComposite(this, this.addPane(container, groupBoxMargin)); + new CascadeComposite(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + new OrphanRemoval2_0Composite(this, this.addPane(container, groupBoxMargin)); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { - return new PropertyAspectAdapter<OrmOneToOneMapping, AccessHolder>(getSubjectHolder()) { + return new PropertyAspectAdapter<OrmOneToOneMapping, AccessHolder>(this.getSubjectHolder()) { @Override protected AccessHolder buildValue_() { return this.subject.getPersistentAttribute(); diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0Tests.java index fc315d2e1e..4e60bfed9d 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0Tests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToManyMapping2_0Tests.java @@ -1,21 +1,25 @@ /******************************************************************************* - * 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 +* 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.tests.internal.jpa2.context.java; import java.util.Iterator; + import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.OneToManyMapping; import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToMany2_0Annotation; import org.eclipse.jpt.core.resource.java.JPA; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.core.tests.internal.jpa2.context.Generic2_0ContextModelTestCase; import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject.SourceWriter; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @@ -27,7 +31,7 @@ public class GenericJavaOneToManyMapping2_0Tests public GenericJavaOneToManyMapping2_0Tests(String name) { super(name); } - + private ICompilationUnit createTestEntityWithValidOneToManyMapping() throws Exception { return this.createTestType(new DefaultAnnotationWriter() { @Override @@ -49,6 +53,28 @@ public class GenericJavaOneToManyMapping2_0Tests } }); } + + private ICompilationUnit createTestEntityWithValidOneToManyMappingOrphanRemovalSpecified() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, JPA.ONE_TO_MANY, JPA.ID, "java.util.Collection"); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity").append(CR); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append(CR); + sb.append(" @OneToMany(orphanRemoval=false)").append(CR); + sb.append(" private Collection<Address> addresses;").append(CR); + sb.append(CR); + sb.append(" @Id").append(CR); + } + }); + } private void createTestTargetEntityAddress() throws Exception { SourceWriter sourceWriter = new SourceWriter() { @@ -151,4 +177,133 @@ public class GenericJavaOneToManyMapping2_0Tests assertEquals("foo", stateFooMapping.getName()); } + public void testDefaultOneToManyGetDefaultOrphanRemoval() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertEquals(false, oneToManyMapping.isDefaultOrphanRemoval()); + } + + public void testSpecifiedOneToManyGetDefaultOrphanRemoval() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + assertEquals(false, oneToManyMapping.isDefaultOrphanRemoval()); + } + + public void testGetOrphanRemoval() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(false, oneToManyMapping.isOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToManyMapping.isOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + oneToMany.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntityWithValidOneToManyMappingOrphanRemovalSpecified(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + } + + public void testSetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + + assertEquals(Boolean.TRUE, oneToMany.getOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_MANY)); // .getElement); + } + + public void testSetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + + assertEquals(Boolean.TRUE, oneToMany.getOrphanRemoval()); + + oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertEquals(Boolean.TRUE, oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_MANY)); + + oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + } + + public void testGetSpecifiedOrphanRemovalUpdatesFromResourceModelChange() throws Exception { + this.createTestEntityWithValidOneToManyMapping(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + oneToMany.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToMany.setOrphanRemoval(null); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + assertSame(oneToManyMapping, persistentAttribute.getSpecifiedMapping()); + + oneToMany.setOrphanRemoval(Boolean.FALSE); + attributeResource.setPrimaryAnnotation(null, new String[0]); + + assertNull(persistentAttribute.getSpecifiedMapping()); + } + } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java index a345738dfd..a3fce9715c 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java @@ -1,16 +1,16 @@ /******************************************************************************* - * 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 +* 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.tests.internal.jpa2.context.java; import java.util.Iterator; + import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AttributeMapping; @@ -20,10 +20,12 @@ import org.eclipse.jpt.core.context.java.JavaBasicMapping; import org.eclipse.jpt.core.context.java.JavaIdMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; +import org.eclipse.jpt.core.jpa2.context.OneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.core.jpa2.resource.java.MapsId2_0Annotation; +import org.eclipse.jpt.core.jpa2.resource.java.OneToOne2_0Annotation; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; @@ -108,6 +110,32 @@ public class GenericJavaOneToOneMapping2_0Tests } }); } + + private void createTestEntityWithValidOneToOneMappingOrphanRemovalSpecified() throws Exception { + createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, JPA.ONE_TO_ONE); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity"); + sb.append(CR); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append(CR); + sb.append(" @OneToOne(orphanRemoval=false)"); + sb.append(CR); + sb.append(" private Address address;"); + sb.append(CR); + sb.append(CR); + sb.append(" @Id"); + } + }); + } private void createTestTargetEntityAddress() throws Exception { SourceWriter sourceWriter = new SourceWriter() { @@ -347,4 +375,133 @@ public class GenericJavaOneToOneMapping2_0Tests assertEquals("foo", stateFooMapping.getName()); } + public void testDefaultOneToOneGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertEquals(false, oneToOneMapping.isDefaultOrphanRemoval()); + } + + public void testSpecifiedOneToOneGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + assertEquals(false, oneToOneMapping.isDefaultOrphanRemoval()); + } + + public void testGetOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(false, oneToOneMapping.isOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToOneMapping.isOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + oneToOne.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntityWithValidOneToOneMappingOrphanRemovalSpecified(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + } + + public void testSetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + + assertEquals(Boolean.TRUE, oneToOne.getOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_ONE)); // .getElement); + } + + public void testSetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + + assertEquals(Boolean.TRUE, oneToOne.getOrphanRemoval()); + + oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertEquals(Boolean.TRUE, oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_ONE)); + + oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + } + + public void testGetSpecifiedOrphanRemovalUpdatesFromResourceModelChange() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + oneToOne.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOne.setOrphanRemoval(null); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + assertSame(oneToOneMapping, persistentAttribute.getSpecifiedMapping()); + + oneToOne.setOrphanRemoval(Boolean.FALSE); + attributeResource.setPrimaryAnnotation(null, new String[0]); + + assertNull(persistentAttribute.getSpecifiedMapping()); + } + } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0Tests.java index 87460ab6f5..4100022b4a 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0Tests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToManyMapping2_0Tests.java @@ -1,23 +1,26 @@ /******************************************************************************* - * 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 +* 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.tests.internal.jpa2.context.orm; import java.util.Iterator; + import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.OneToManyMapping; import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToManyMapping2_0; import org.eclipse.jpt.core.resource.java.JPA; +import org.eclipse.jpt.core.resource.orm.XmlOneToMany; import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject.SourceWriter; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @@ -153,4 +156,42 @@ public class GenericOrmOneToManyMapping2_0Tests AttributeMapping stateFooMapping = oneToManyMapping.getResolvedTargetEntity().resolveAttributeMapping("state.foo"); assertEquals("foo", stateFooMapping.getName()); } + + public void testUpdateSpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY, "oneToManyMapping"); + OrmOneToManyMapping2_0 ormOneToManyMapping = (OrmOneToManyMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToMany oneToManyResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToManys().get(0); + + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToManyMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToManyResource.isOrphanRemoval()); + + //set enumerated in the resource model, verify context model updated + oneToManyResource.setOrphanRemoval(Boolean.TRUE); + assertEquals(Boolean.TRUE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + assertEquals(true, oneToManyResource.isOrphanRemoval()); + + oneToManyResource.setOrphanRemoval(Boolean.FALSE); + assertEquals(Boolean.FALSE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + assertEquals(false, oneToManyResource.isOrphanRemoval()); + } + + public void testModifySpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY, "oneToManyMapping"); + OrmOneToManyMapping2_0 ormOneToManyMapping = (OrmOneToManyMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToMany oneToManyResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToManys().get(0); + + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToManyMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToManyResource.isOrphanRemoval()); + + //set enumerated in the context model, verify resource model updated + ormOneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToManyResource.isOrphanRemoval()); + assertEquals(Boolean.TRUE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + + ormOneToManyMapping.setSpecifiedOrphanRemoval(Boolean.FALSE); + assertEquals(false, oneToManyResource.isOrphanRemoval()); + assertEquals(Boolean.FALSE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + } } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java index 7a36591719..f53de09582 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java @@ -1,16 +1,16 @@ /******************************************************************************* - * 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 +* 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.tests.internal.jpa2.context.orm; import java.util.Iterator; + import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AttributeMapping; @@ -335,4 +335,42 @@ public class GenericOrmOneToOneMapping2_0Tests AttributeMapping stateFooMapping = oneToOneMapping.getResolvedTargetEntity().resolveAttributeMapping("state.foo"); assertEquals("foo", stateFooMapping.getName()); } + + public void testUpdateSpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY, "oneToOneMapping"); + OrmOneToOneMapping2_0 ormOneToOneMapping = (OrmOneToOneMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToOne oneToOneResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToOnes().get(0); + + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToOneMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToOneResource.isOrphanRemoval()); + + //set enumerated in the resource model, verify context model updated + oneToOneResource.setOrphanRemoval(Boolean.TRUE); + assertEquals(Boolean.TRUE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + assertEquals(true, oneToOneResource.isOrphanRemoval()); + + oneToOneResource.setOrphanRemoval(Boolean.FALSE); + assertEquals(Boolean.FALSE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + assertEquals(false, oneToOneResource.isOrphanRemoval()); + } + + public void testModifySpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY, "oneToOneMapping"); + OrmOneToOneMapping2_0 ormOneToOneMapping = (OrmOneToOneMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToOne oneToOneResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToOnes().get(0); + + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToOneMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToOneResource.isOrphanRemoval()); + + //set enumerated in the context model, verify resource model updated + ormOneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToOneResource.isOrphanRemoval()); + assertEquals(Boolean.TRUE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + + ormOneToOneMapping.setSpecifiedOrphanRemoval(Boolean.FALSE); + assertEquals(false, oneToOneResource.isOrphanRemoval()); + assertEquals(Boolean.FALSE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + } } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToManyMappingTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToManyMappingTests.java new file mode 100644 index 0000000000..caca95b2d2 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToManyMappingTests.java @@ -0,0 +1,207 @@ +/******************************************************************************* +* 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.eclipselink2_0.core.tests.internal.context.java; + +import java.util.Iterator; + +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.jpa2.context.OneToManyMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.java.OneToMany2_0Annotation; +import org.eclipse.jpt.core.resource.java.JPA; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; +import org.eclipse.jpt.eclipselink2_0.core.tests.internal.context.EclipseLink2_0ContextModelTestCase; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + +/** + * EclipseLink2_0JavaOneToManyMappingTests + */ +public class EclipseLink2_0JavaOneToManyMappingTests + extends EclipseLink2_0ContextModelTestCase +{ + public EclipseLink2_0JavaOneToManyMappingTests(String name) { + super(name); + } + + private ICompilationUnit createTestEntity() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, JPA.ONE_TO_MANY, JPA.ID, "java.util.Collection"); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity").append(CR); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append(CR); + sb.append(" @OneToMany").append(CR); + sb.append(" private Collection<Address> addresses;").append(CR); + sb.append(CR); + sb.append(" @Id").append(CR); + } + }); + } + + private ICompilationUnit createTestEntityWithValidOneToManyMappingOrphanRemovalSpecified() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, JPA.ONE_TO_MANY, JPA.ID, "java.util.Collection"); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity").append(CR); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append(CR); + sb.append(" @OneToMany(orphanRemoval=false)").append(CR); + sb.append(" private Collection<Address> addresses;").append(CR); + sb.append(CR); + sb.append(" @Id").append(CR); + } + }); + } + + public void testDefaultOneToManyGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertEquals(false, oneToManyMapping.isDefaultOrphanRemoval()); + } + + public void testSpecifiedOneToManyGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + assertEquals(false, oneToManyMapping.isDefaultOrphanRemoval()); + } + + public void testGetOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(false, oneToManyMapping.isOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToManyMapping.isOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + oneToMany.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntityWithValidOneToManyMappingOrphanRemovalSpecified(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + } + + public void testSetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + + assertEquals(Boolean.TRUE, oneToMany.getOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_MANY)); // .getElement); + } + + public void testSetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + + assertEquals(Boolean.TRUE, oneToMany.getOrphanRemoval()); + + oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + assertEquals(Boolean.TRUE, oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToManyMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_MANY)); + + oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getMapping(); + } + + public void testGetSpecifiedOrphanRemovalUpdatesFromResourceModelChange() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToManyMapping2_0 oneToManyMapping = (OneToManyMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToMany2_0Annotation oneToMany = (OneToMany2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_MANY); + oneToMany.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToManyMapping.getSpecifiedOrphanRemoval()); + + oneToMany.setOrphanRemoval(null); + assertNull(oneToManyMapping.getSpecifiedOrphanRemoval()); + assertSame(oneToManyMapping, persistentAttribute.getSpecifiedMapping()); + + oneToMany.setOrphanRemoval(Boolean.FALSE); + attributeResource.setPrimaryAnnotation(null, new String[0]); + + assertNull(persistentAttribute.getSpecifiedMapping()); + } + +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToOneMappingTests.java index cfa1b1f45d..6fea6a4ce8 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToOneMappingTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaOneToOneMappingTests.java @@ -1,16 +1,16 @@ /******************************************************************************* - * 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 +* 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.eclipselink2_0.core.tests.internal.context.java; import java.util.Iterator; + import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AttributeMapping; @@ -20,10 +20,12 @@ import org.eclipse.jpt.core.context.java.JavaBasicMapping; import org.eclipse.jpt.core.context.java.JavaIdMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; +import org.eclipse.jpt.core.jpa2.context.OneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; import org.eclipse.jpt.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.core.jpa2.resource.java.MapsId2_0Annotation; +import org.eclipse.jpt.core.jpa2.resource.java.OneToOne2_0Annotation; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; @@ -65,6 +67,32 @@ public class EclipseLink2_0JavaOneToOneMappingTests } }); } + + private void createTestEntityWithValidOneToOneMappingOrphanRemovalSpecified() throws Exception { + createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, JPA.ONE_TO_ONE); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity"); + sb.append(CR); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append(CR); + sb.append(" @OneToOne(orphanRemoval=false)"); + sb.append(CR); + sb.append(" private Address address;"); + sb.append(CR); + sb.append(CR); + sb.append(" @Id"); + } + }); + } private ICompilationUnit createTestEntityWithDerivedId() throws Exception { return this.createTestType(new DefaultAnnotationWriter() { @@ -347,4 +375,133 @@ public class EclipseLink2_0JavaOneToOneMappingTests assertEquals("foo", stateFooMapping.getName()); } + public void testDefaultOneToOneGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertEquals(false, oneToOneMapping.isDefaultOrphanRemoval()); + } + + public void testSpecifiedOneToOneGetDefaultOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + assertEquals(false, oneToOneMapping.isDefaultOrphanRemoval()); + } + + public void testGetOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(false, oneToOneMapping.isOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToOneMapping.isOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + oneToOne.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + } + + public void testGetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntityWithValidOneToOneMappingOrphanRemovalSpecified(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + } + + public void testSetSpecifiedOrphanRemoval() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + + assertEquals(Boolean.TRUE, oneToOne.getOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_ONE)); // .getElement); + } + + public void testSetSpecifiedOrphanRemoval2() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + + assertEquals(Boolean.TRUE, oneToOne.getOrphanRemoval()); + + oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + assertEquals(Boolean.TRUE, oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOneMapping.setSpecifiedOrphanRemoval(null); + assertNotNull(attributeResource.getAnnotation(JPA.ONE_TO_ONE)); + + oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getMapping(); + } + + public void testGetSpecifiedOrphanRemovalUpdatesFromResourceModelChange() throws Exception { + this.createTestEntity(); + this.addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + + PersistentAttribute persistentAttribute = getJavaPersistentType().attributes().next(); + OneToOneMapping2_0 oneToOneMapping = (OneToOneMapping2_0) persistentAttribute.getSpecifiedMapping(); + + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); + JavaResourcePersistentAttribute attributeResource = typeResource.persistableAttributes().next(); + OneToOne2_0Annotation oneToOne = (OneToOne2_0Annotation) attributeResource.getAnnotation(JPA.ONE_TO_ONE); + oneToOne.setOrphanRemoval(Boolean.FALSE); + + assertEquals(Boolean.FALSE, oneToOneMapping.getSpecifiedOrphanRemoval()); + + oneToOne.setOrphanRemoval(null); + assertNull(oneToOneMapping.getSpecifiedOrphanRemoval()); + assertSame(oneToOneMapping, persistentAttribute.getSpecifiedMapping()); + + oneToOne.setOrphanRemoval(Boolean.FALSE); + attributeResource.setPrimaryAnnotation(null, new String[0]); + + assertNull(persistentAttribute.getSpecifiedMapping()); + } + } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/JptEclipseLink2_0JavaContextModelTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/JptEclipseLink2_0JavaContextModelTests.java index 42f23e2616..7f4dd87d23 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/JptEclipseLink2_0JavaContextModelTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/JptEclipseLink2_0JavaContextModelTests.java @@ -1,12 +1,11 @@ /******************************************************************************* - * 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 +* 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.eclipselink2_0.core.tests.internal.context.java; @@ -20,6 +19,7 @@ public class JptEclipseLink2_0JavaContextModelTests extends TestCase TestSuite suite = new TestSuite(JptEclipseLink2_0JavaContextModelTests.class.getName()); suite.addTestSuite(EclipseLink2_0JavaManyToOneMappingTests.class); suite.addTestSuite(EclipseLink2_0JavaOneToOneMappingTests.class); + suite.addTestSuite(EclipseLink2_0JavaOneToManyMappingTests.class); return suite; } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToManyMappingTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToManyMappingTests.java new file mode 100644 index 0000000000..5c23717e38 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToManyMappingTests.java @@ -0,0 +1,65 @@ +/******************************************************************************* +* 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.eclipselink2_0.core.tests.internal.context.orm; + +import org.eclipse.jpt.core.MappingKeys; +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToManyMapping2_0; +import org.eclipse.jpt.core.resource.orm.XmlOneToMany; + +/** + * EclipseLink2_0OrmOneToManyMappingTests + */ +public class EclipseLink2_0OrmOneToManyMappingTests + extends EclipseLink2_0OrmContextModelTestCase +{ + public EclipseLink2_0OrmOneToManyMappingTests(String name) { + super(name); + } + + public void testUpdateSpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY, "oneToManyMapping"); + OrmOneToManyMapping2_0 ormOneToManyMapping = (OrmOneToManyMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToMany oneToManyResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToManys().get(0); + + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToManyMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToManyResource.isOrphanRemoval()); + + //set enumerated in the resource model, verify context model updated + oneToManyResource.setOrphanRemoval(Boolean.TRUE); + assertEquals(Boolean.TRUE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + assertEquals(true, oneToManyResource.isOrphanRemoval()); + + oneToManyResource.setOrphanRemoval(Boolean.FALSE); + assertEquals(Boolean.FALSE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + assertEquals(false, oneToManyResource.isOrphanRemoval()); + } + + public void testModifySpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY, "oneToManyMapping"); + OrmOneToManyMapping2_0 ormOneToManyMapping = (OrmOneToManyMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToMany oneToManyResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToManys().get(0); + + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToManyMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToManyMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToManyResource.isOrphanRemoval()); + + //set enumerated in the context model, verify resource model updated + ormOneToManyMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToManyResource.isOrphanRemoval()); + assertEquals(Boolean.TRUE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + + ormOneToManyMapping.setSpecifiedOrphanRemoval(Boolean.FALSE); + assertEquals(false, oneToManyResource.isOrphanRemoval()); + assertEquals(Boolean.FALSE, ormOneToManyMapping.getSpecifiedOrphanRemoval()); + } +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java index 05f417e4c7..1f3fdc2505 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java @@ -1,12 +1,11 @@ /******************************************************************************* - * 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 +* 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.eclipselink2_0.core.tests.internal.context.orm; @@ -335,4 +334,42 @@ public class EclipseLink2_0OrmOneToOneMappingTests AttributeMapping stateFooMapping = oneToOneMapping.getResolvedTargetEntity().resolveAttributeMapping("state.foo"); assertEquals("foo", stateFooMapping.getName()); } + + public void testUpdateSpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY, "oneToOneMapping"); + OrmOneToOneMapping2_0 ormOneToOneMapping = (OrmOneToOneMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToOne oneToOneResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToOnes().get(0); + + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToOneMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToOneResource.isOrphanRemoval()); + + //set enumerated in the resource model, verify context model updated + oneToOneResource.setOrphanRemoval(Boolean.TRUE); + assertEquals(Boolean.TRUE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + assertEquals(true, oneToOneResource.isOrphanRemoval()); + + oneToOneResource.setOrphanRemoval(Boolean.FALSE); + assertEquals(Boolean.FALSE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + assertEquals(false, oneToOneResource.isOrphanRemoval()); + } + + public void testModifySpecifiedOrphanRemoval() throws Exception { + OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo"); + OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedPersistentAttribute(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY, "oneToOneMapping"); + OrmOneToOneMapping2_0 ormOneToOneMapping = (OrmOneToOneMapping2_0) ormPersistentAttribute.getMapping(); + XmlOneToOne oneToOneResource = getXmlEntityMappings().getEntities().get(0).getAttributes().getOneToOnes().get(0); + + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, ormOneToOneMapping.getSpecifiedOrphanRemoval().booleanValue()); + assertEquals(OrmOneToOneMapping2_0.DEFAULT_ORPHAN_REMOVAL, oneToOneResource.isOrphanRemoval()); + + //set enumerated in the context model, verify resource model updated + ormOneToOneMapping.setSpecifiedOrphanRemoval(Boolean.TRUE); + assertEquals(true, oneToOneResource.isOrphanRemoval()); + assertEquals(Boolean.TRUE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + + ormOneToOneMapping.setSpecifiedOrphanRemoval(Boolean.FALSE); + assertEquals(false, oneToOneResource.isOrphanRemoval()); + assertEquals(Boolean.FALSE, ormOneToOneMapping.getSpecifiedOrphanRemoval()); + } } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/JptEclipseLink2_0OrmContextModelTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/JptEclipseLink2_0OrmContextModelTests.java index 059b2bb7a7..f89333b993 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/JptEclipseLink2_0OrmContextModelTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/orm/JptEclipseLink2_0OrmContextModelTests.java @@ -1,12 +1,11 @@ /******************************************************************************* - * 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 +* 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.eclipselink2_0.core.tests.internal.context.orm; @@ -20,6 +19,7 @@ public class JptEclipseLink2_0OrmContextModelTests extends TestCase TestSuite suite = new TestSuite(JptEclipseLink2_0OrmContextModelTests.class.getName()); suite.addTestSuite(Eclipselink2_0OrmManyToOneMappingTests.class); suite.addTestSuite(EclipseLink2_0OrmOneToOneMappingTests.class); + suite.addTestSuite(EclipseLink2_0OrmOneToManyMappingTests.class); return suite; } |