diff options
author | kmoore | 2008-10-17 13:57:47 +0000 |
---|---|---|
committer | kmoore | 2008-10-17 13:57:47 +0000 |
commit | 61b0514ddefc1f535d03760eed83bd47c0a4d1ee (patch) | |
tree | 1f0bf65a06f79d78e9587b4ca6e3bbfd19caf021 | |
parent | b1f140a014036f8ff3f68b5c95a545263098fa6d (diff) | |
download | webtools.dali-61b0514ddefc1f535d03760eed83bd47c0a4d1ee.tar.gz webtools.dali-61b0514ddefc1f535d03760eed83bd47c0a4d1ee.tar.xz webtools.dali-61b0514ddefc1f535d03760eed83bd47c0a4d1ee.zip |
250019 - customizer eclipselink-orm.xml support in entity, mappedsuperclass, and embeddable
28 files changed, 1082 insertions, 101 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/translators/EmbeddableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/translators/EmbeddableTranslator.java index 881359acd2..6308f12b10 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/translators/EmbeddableTranslator.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/translators/EmbeddableTranslator.java @@ -39,23 +39,23 @@ public class EmbeddableTranslator extends Translator }; } - private Translator createClassTranslator() { + protected Translator createClassTranslator() { return new Translator(CLASS, ORM_PKG.getAbstractXmlTypeMapping_ClassName(), DOM_ATTRIBUTE); } - private Translator createAccessTranslator() { + protected Translator createAccessTranslator() { return new Translator(ACCESS, ORM_PKG.getAbstractXmlTypeMapping_Access(), DOM_ATTRIBUTE); } - private Translator createMetadataCompleteTranslator() { + protected Translator createMetadataCompleteTranslator() { return new Translator(METADATA_COMPLETE, ORM_PKG.getAbstractXmlTypeMapping_MetadataComplete(), DOM_ATTRIBUTE); } - private Translator createDescriptionTranslator() { + protected Translator createDescriptionTranslator() { return new Translator(DESCRIPTION, ORM_PKG.getAbstractXmlTypeMapping_Description()); } - private Translator createAttributesTranslator() { + protected Translator createAttributesTranslator() { return new AttributesTranslator(ATTRIBUTES, ORM_PKG.getAbstractXmlTypeMapping_Attributes()); } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/context/Customizer.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/context/Customizer.java index 8c2cfa8aeb..d8729979fe 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/context/Customizer.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/context/Customizer.java @@ -25,9 +25,14 @@ import org.eclipse.jpt.core.context.JpaContextNode; */ public interface Customizer extends JpaContextNode { - - String getCustomizerClass(); - void setCustomizerClass(String customizerClass); - String CUSTOMIZER_CLASS_PROPERTY = "customizerClassProperty"; //$NON-NLS-1$ + + String getCustomizerClass(); + + String getDefaultCustomizerClass(); + String DEFAULT_CUSTOMIZER_CLASS_PROPERTY = "defaultCustomizerClassProperty"; //$NON-NLS-1$ + + String getSpecifiedCustomizerClass(); + void setSpecifiedCustomizerClass(String customizerClass); + String SPECIFIED_CUSTOMIZER_CLASS_PROPERTY = "specifiedCustomizerClassProperty"; //$NON-NLS-1$ } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaFactory.java index 369f1bd8ad..96145df5cb 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaFactory.java @@ -27,6 +27,7 @@ import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; import org.eclipse.jpt.core.context.java.JavaTypeMapping; import org.eclipse.jpt.core.context.java.JavaVersionMapping; +import org.eclipse.jpt.core.context.orm.OrmEmbeddable; import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass; import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.context.orm.OrmTypeMapping; @@ -81,6 +82,8 @@ import org.eclipse.jpt.eclipselink.core.internal.context.java.EclipseLinkJavaRea import org.eclipse.jpt.eclipselink.core.internal.context.java.EclipseLinkJavaStructConverter; import org.eclipse.jpt.eclipselink.core.internal.context.java.EclipseLinkJavaTypeConverter; import org.eclipse.jpt.eclipselink.core.internal.context.java.EclipseLinkJavaVersionMappingImpl; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmCustomizer; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmEmbeddable; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmEntity; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmMappedSuperclass; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmReadOnly; @@ -136,6 +139,11 @@ public class EclipseLinkJpaFactory extends GenericJpaFactory } @Override + public OrmEmbeddable buildOrmEmbeddable(OrmPersistentType parent) { + return new EclipseLinkOrmEmbeddable(parent); + } + + @Override public EclipseLinkOrmEntity buildOrmEntity(OrmPersistentType parent) { return new EclipseLinkOrmEntity(parent); } @@ -149,6 +157,10 @@ public class EclipseLinkJpaFactory extends GenericJpaFactory return new EclipseLinkOrmReadOnly(parent); } + public EclipseLinkOrmCustomizer buildOrmCustomizer(OrmTypeMapping parent) { + return new EclipseLinkOrmCustomizer(parent); + } + // **************** java context objects *********************************** diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaCustomizer.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaCustomizer.java index 3572bc310b..5bbb8752d3 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaCustomizer.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaCustomizer.java @@ -58,10 +58,18 @@ public class EclipseLinkJavaCustomizer extends AbstractJavaJpaContextNode implem } public String getCustomizerClass() { + return getSpecifiedCustomizerClass(); + } + + public String getDefaultCustomizerClass() { + return null; + } + + public String getSpecifiedCustomizerClass() { return this.customizerClass; } - public void setCustomizerClass(String newCustomizerClass) { + public void setSpecifiedCustomizerClass(String newCustomizerClass) { if (attributeValueHasNotChanged(this.customizerClass, newCustomizerClass)) { return; } @@ -76,13 +84,13 @@ public class EclipseLinkJavaCustomizer extends AbstractJavaJpaContextNode implem if (newCustomizerClass != null) { getResourceCustomizer().setValue(newCustomizerClass); } - firePropertyChanged(CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); + firePropertyChanged(SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); } protected void setCustomizerClass_(String newCustomizerClass) { String oldCustomizerClass = this.customizerClass; this.customizerClass = newCustomizerClass; - firePropertyChanged(CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); + firePropertyChanged(SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); } public void initialize(JavaResourcePersistentType jrpt) { diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmCustomizer.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmCustomizer.java new file mode 100644 index 0000000000..d84caab5e7 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmCustomizer.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright (c) 2008 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.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmTypeMapping; +import org.eclipse.jpt.core.internal.context.persistence.AbstractXmlContextNode; +import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.eclipselink.core.context.Customizer; +import org.eclipse.jpt.eclipselink.core.context.java.JavaCustomizer; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlCustomizer; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlCustomizerHolder; + +public class EclipseLinkOrmCustomizer extends AbstractXmlContextNode + implements Customizer +{ + protected XmlCustomizerHolder resource; + + protected String specifiedCustomizerClass; + + protected String defaultCustomizerClass; + + public EclipseLinkOrmCustomizer(OrmTypeMapping parent) { + super(parent); + } + + public String getCustomizerClass() { + return this.specifiedCustomizerClass == null ? this.defaultCustomizerClass : this.specifiedCustomizerClass; + } + + public String getDefaultCustomizerClass() { + return this.defaultCustomizerClass; + } + + protected void setDefaultCustomizerClass(String newDefaultCustomizerClass) { + String oldDefaultCustomizerClass = this.defaultCustomizerClass; + this.defaultCustomizerClass = newDefaultCustomizerClass; + firePropertyChanged(DEFAULT_CUSTOMIZER_CLASS_PROPERTY, oldDefaultCustomizerClass, newDefaultCustomizerClass); + } + + public String getSpecifiedCustomizerClass() { + return this.specifiedCustomizerClass; + } + + public void setSpecifiedCustomizerClass(String newCustomizerClass) { + String oldCustomizerClass = this.specifiedCustomizerClass; + this.specifiedCustomizerClass = newCustomizerClass; + if (oldCustomizerClass != newCustomizerClass) { + if (this.getResourceCustomizer() != null) { + this.getResourceCustomizer().setCustomizerClassName(newCustomizerClass); + if (this.getResourceCustomizer().isAllFeaturesUnset()) { + removeResourceCustomizer(); + } + } + else if (newCustomizerClass != null) { + addResourceCustomizer(); + getResourceCustomizer().setCustomizerClassName(newCustomizerClass); + } + } + firePropertyChanged(SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); + } + + protected void setSpecifiedCustomizerClass_(String newCustomizerClass) { + String oldCustomizerClass = this.specifiedCustomizerClass; + this.specifiedCustomizerClass = newCustomizerClass; + firePropertyChanged(SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, oldCustomizerClass, newCustomizerClass); + } + + protected XmlCustomizer getResourceCustomizer() { + return this.resource.getCustomizer(); + } + + protected void addResourceCustomizer() { + this.resource.setCustomizer(EclipseLinkOrmFactory.eINSTANCE.createXmlCustomizer()); + } + + protected void removeResourceCustomizer() { + this.resource.setCustomizer(null); + } + + // **************** initialize/update ************************************** + + protected void initialize(XmlCustomizerHolder resource, JavaCustomizer javaCustomizer) { + this.resource = resource; + this.defaultCustomizerClass = (javaCustomizer == null) ? null : javaCustomizer.getCustomizerClass(); + this.specifiedCustomizerClass = specifiedCustomizerClass(getResourceCustomizer()); + } + + protected void update(XmlCustomizerHolder resource, JavaCustomizer javaCustomizer) { + this.resource = resource; + setDefaultCustomizerClass((javaCustomizer == null) ? null : javaCustomizer.getCustomizerClass()); + setSpecifiedCustomizerClass_(specifiedCustomizerClass(getResourceCustomizer())); + } + + protected String specifiedCustomizerClass(XmlCustomizer resource) { + return (resource == null) ? null : resource.getCustomizerClassName(); + } + + + // **************** validation ************************************** + + public TextRange getValidationTextRange() { + XmlCustomizer resource = getResourceCustomizer(); + return resource == null ? null : resource.getCustomizerClassNameTextRange(); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEmbeddable.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEmbeddable.java new file mode 100644 index 0000000000..e46f8d47dc --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEmbeddable.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2008 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.context.orm; + +import java.util.List; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.internal.context.orm.GenericOrmEmbeddable; +import org.eclipse.jpt.core.resource.orm.XmlEmbeddable; +import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; +import org.eclipse.jpt.eclipselink.core.context.ChangeTracking; +import org.eclipse.jpt.eclipselink.core.context.Customizer; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkEmbeddable; +import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaEmbeddable; +import org.eclipse.jpt.eclipselink.core.context.java.JavaCustomizer; +import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlCustomizerHolder; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; + +public class EclipseLinkOrmEmbeddable extends GenericOrmEmbeddable + implements EclipseLinkEmbeddable +{ + protected final EclipseLinkOrmCustomizer customizer; + + + public EclipseLinkOrmEmbeddable(OrmPersistentType parent) { + super(parent); + this.customizer = getJpaFactory().buildOrmCustomizer(this); + } + + + @Override + protected EclipseLinkJpaFactory getJpaFactory() { + return (EclipseLinkJpaFactory) super.getJpaFactory(); + } + + public ChangeTracking getChangeTracking() { + // TODO Auto-generated method stub + return null; + } + + public Customizer getCustomizer() { + return this.customizer; + } + + + + // **************** resource-context interaction *************************** + + @Override + public XmlEmbeddable addToResourceModel(XmlEntityMappings entityMappings) { + XmlEmbeddable embeddable = EclipseLinkOrmFactory.eINSTANCE.createXmlEmbeddable(); + getPersistentType().initialize(embeddable); + entityMappings.getEmbeddables().add(embeddable); + return embeddable; + } + + @Override + public void initialize(XmlEmbeddable mappedSuperclass) { + super.initialize(mappedSuperclass); + this.customizer.initialize((XmlCustomizerHolder) mappedSuperclass, getJavaCustomizer()); + } + + @Override + public void update(XmlEmbeddable mappedSuperclass) { + super.update(mappedSuperclass); + this.customizer.update((XmlCustomizerHolder) mappedSuperclass, getJavaCustomizer()); + } + + @Override + protected EclipseLinkJavaEmbeddable getJavaEmbeddableForDefaults() { + return (EclipseLinkJavaEmbeddable) super.getJavaEmbeddableForDefaults(); + } + + + protected JavaCustomizer getJavaCustomizer() { + EclipseLinkJavaEmbeddable javaEmbeddable = getJavaEmbeddableForDefaults(); + return (javaEmbeddable == null) ? null : javaEmbeddable.getCustomizer(); + } + + + // **************** validation ************************************** + + @Override + public void validate(List<IMessage> messages) { + super.validate(messages); + this.customizer.validate(messages); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEntity.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEntity.java index 288b32074e..2c7d97f16d 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEntity.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmEntity.java @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.orm; +import java.util.List; import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.internal.context.orm.GenericOrmEntity; import org.eclipse.jpt.core.resource.orm.XmlEntity; @@ -18,20 +19,25 @@ import org.eclipse.jpt.eclipselink.core.context.ChangeTracking; import org.eclipse.jpt.eclipselink.core.context.Customizer; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkEntity; import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaEntity; +import org.eclipse.jpt.eclipselink.core.context.java.JavaCustomizer; import org.eclipse.jpt.eclipselink.core.context.java.JavaReadOnly; import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory; import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlCustomizerHolder; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlReadOnly; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; public class EclipseLinkOrmEntity extends GenericOrmEntity implements EclipseLinkEntity { protected final EclipseLinkOrmReadOnly readOnly; + protected final EclipseLinkOrmCustomizer customizer; public EclipseLinkOrmEntity(OrmPersistentType parent) { super(parent); this.readOnly = getJpaFactory().buildOrmReadOnly(this); + this.customizer = getJpaFactory().buildOrmCustomizer(this); } @@ -51,12 +57,11 @@ public class EclipseLinkOrmEntity extends GenericOrmEntity } public Customizer getCustomizer() { - // TODO Auto-generated method stub - return null; + return this.customizer; } public EclipseLinkOrmReadOnly getReadOnly() { - return readOnly; + return this.readOnly; } @@ -72,23 +77,40 @@ public class EclipseLinkOrmEntity extends GenericOrmEntity @Override public void initialize(XmlEntity entity) { - super.initialize(entity); - getReadOnly().initialize((XmlReadOnly) entity, getJavaReadOnly()); + super.initialize(entity); + this.readOnly.initialize((XmlReadOnly) entity, getJavaReadOnly()); + this.customizer.initialize((XmlCustomizerHolder) entity, getJavaCustomizer()); } @Override public void update(XmlEntity entity) { super.update(entity); - getReadOnly().update((XmlReadOnly) entity, getJavaReadOnly()); + this.readOnly.update((XmlReadOnly) entity, getJavaReadOnly()); + this.customizer.update((XmlCustomizerHolder) entity, getJavaCustomizer()); } @Override - public EclipseLinkJavaEntity getJavaEntity() { - return (EclipseLinkJavaEntity) super.getJavaEntity(); + protected EclipseLinkJavaEntity getJavaEntityForDefaults() { + return (EclipseLinkJavaEntity) super.getJavaEntityForDefaults(); } protected JavaReadOnly getJavaReadOnly() { - EclipseLinkJavaEntity javaEntity = getJavaEntity(); + EclipseLinkJavaEntity javaEntity = getJavaEntityForDefaults(); return (javaEntity == null) ? null : javaEntity.getReadOnly(); } + + protected JavaCustomizer getJavaCustomizer() { + EclipseLinkJavaEntity javaEntity = getJavaEntityForDefaults(); + return (javaEntity == null) ? null : javaEntity.getCustomizer(); + } + + + // **************** validation ************************************** + + @Override + public void validate(List<IMessage> messages) { + super.validate(messages); + this.readOnly.validate(messages); + this.customizer.validate(messages); + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmMappedSuperclass.java index 2f89659951..1a2db4015f 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmMappedSuperclass.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmMappedSuperclass.java @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.orm; +import java.util.List; import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.internal.context.orm.GenericOrmMappedSuperclass; import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; @@ -18,20 +19,25 @@ import org.eclipse.jpt.eclipselink.core.context.ChangeTracking; import org.eclipse.jpt.eclipselink.core.context.Customizer; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkMappedSuperclass; import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaMappedSuperclass; +import org.eclipse.jpt.eclipselink.core.context.java.JavaCustomizer; import org.eclipse.jpt.eclipselink.core.context.java.JavaReadOnly; import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory; import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlCustomizerHolder; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlReadOnly; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; public class EclipseLinkOrmMappedSuperclass extends GenericOrmMappedSuperclass implements EclipseLinkMappedSuperclass { protected final EclipseLinkOrmReadOnly readOnly; + protected final EclipseLinkOrmCustomizer customizer; public EclipseLinkOrmMappedSuperclass(OrmPersistentType parent) { super(parent); this.readOnly = getJpaFactory().buildOrmReadOnly(this); + this.customizer = getJpaFactory().buildOrmCustomizer(this); } @@ -51,8 +57,7 @@ public class EclipseLinkOrmMappedSuperclass extends GenericOrmMappedSuperclass } public Customizer getCustomizer() { - // TODO Auto-generated method stub - return null; + return this.customizer; } public EclipseLinkOrmReadOnly getReadOnly() { @@ -73,22 +78,39 @@ public class EclipseLinkOrmMappedSuperclass extends GenericOrmMappedSuperclass @Override public void initialize(XmlMappedSuperclass mappedSuperclass) { super.initialize(mappedSuperclass); - getReadOnly().initialize((XmlReadOnly) mappedSuperclass, getJavaReadOnly()); + this.readOnly.initialize((XmlReadOnly) mappedSuperclass, getJavaReadOnly()); + this.customizer.initialize((XmlCustomizerHolder) mappedSuperclass, getJavaCustomizer()); } @Override public void update(XmlMappedSuperclass mappedSuperclass) { super.update(mappedSuperclass); - getReadOnly().update((XmlReadOnly) mappedSuperclass, getJavaReadOnly()); + this.readOnly.update((XmlReadOnly) mappedSuperclass, getJavaReadOnly()); + this.customizer.update((XmlCustomizerHolder) mappedSuperclass, getJavaCustomizer()); } @Override - public EclipseLinkJavaMappedSuperclass getJavaMappedSuperclass() { - return (EclipseLinkJavaMappedSuperclass) super.getJavaMappedSuperclass(); + protected EclipseLinkJavaMappedSuperclass getJavaMappedSuperclassForDefaults() { + return (EclipseLinkJavaMappedSuperclass) super.getJavaMappedSuperclassForDefaults(); } protected JavaReadOnly getJavaReadOnly() { - EclipseLinkJavaMappedSuperclass javaMappedSuperclass = getJavaMappedSuperclass(); + EclipseLinkJavaMappedSuperclass javaMappedSuperclass = getJavaMappedSuperclassForDefaults(); return (javaMappedSuperclass == null) ? null : javaMappedSuperclass.getReadOnly(); } + + protected JavaCustomizer getJavaCustomizer() { + EclipseLinkJavaMappedSuperclass javaMappedSuperclass = getJavaMappedSuperclassForDefaults(); + return (javaMappedSuperclass == null) ? null : javaMappedSuperclass.getCustomizer(); + } + + + // **************** validation ************************************** + + @Override + public void validate(List<IMessage> messages) { + super.validate(messages); + this.readOnly.validate(messages); + this.customizer.validate(messages); + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmReadOnly.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmReadOnly.java index f55f287f4f..54fa0190ef 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmReadOnly.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmReadOnly.java @@ -11,12 +11,13 @@ package org.eclipse.jpt.eclipselink.core.internal.context.orm; import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.internal.context.AbstractJpaContextNode; +import org.eclipse.jpt.core.internal.context.persistence.AbstractXmlContextNode; +import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.eclipselink.core.context.ReadOnly; import org.eclipse.jpt.eclipselink.core.context.java.JavaReadOnly; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlReadOnly; -public class EclipseLinkOrmReadOnly extends AbstractJpaContextNode +public class EclipseLinkOrmReadOnly extends AbstractXmlContextNode implements ReadOnly { protected XmlReadOnly resource; @@ -32,11 +33,11 @@ public class EclipseLinkOrmReadOnly extends AbstractJpaContextNode public boolean isReadOnly() { - return (getSpecifiedReadOnly() == null) ? isDefaultReadOnly() : getSpecifiedReadOnly(); + return (this.specifiedReadOnly == null) ? this.defaultReadOnly : this.specifiedReadOnly.booleanValue(); } public boolean isDefaultReadOnly() { - return defaultReadOnly; + return this.defaultReadOnly; } public void setDefaultReadOnly(boolean newValue) { @@ -46,7 +47,7 @@ public class EclipseLinkOrmReadOnly extends AbstractJpaContextNode } public Boolean getSpecifiedReadOnly() { - return specifiedReadOnly; + return this.specifiedReadOnly; } public void setSpecifiedReadOnly(Boolean newReadOnly) { @@ -70,4 +71,11 @@ public class EclipseLinkOrmReadOnly extends AbstractJpaContextNode setDefaultReadOnly((javaReadOnly == null) ? false : javaReadOnly.isReadOnly()); setSpecifiedReadOnly(resource.getReadOnly()); } + + + // **************** validation ************************************** + + public TextRange getValidationTextRange() { + return this.resource.getReadOnlyTextRange(); + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/CustomizerTranslator.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/CustomizerTranslator.java new file mode 100644 index 0000000000..aae1aaa5f7 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/CustomizerTranslator.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2008 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.resource.orm.translators; + +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.wst.common.internal.emf.resource.Translator; + +public class CustomizerTranslator extends Translator + implements EclipseLinkOrmXmlMapper +{ + private Translator[] children; + + + public CustomizerTranslator(String domNameAndPath, EStructuralFeature aFeature) { + super(domNameAndPath, aFeature, END_TAG_NO_INDENT); + } + + @Override + public Translator[] getChildren(Object target, int versionID) { + if (this.children == null) { + this.children = createChildren(); + } + return this.children; + } + + protected Translator[] createChildren() { + return new Translator[] { + createClassTranslator() + }; + } + + protected Translator createClassTranslator() { + return new Translator(CLASS, ECLIPSELINK_ORM_PKG.getXmlCustomizer_CustomizerClassName(), DOM_ATTRIBUTE); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEmbeddableTranslator.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEmbeddableTranslator.java new file mode 100644 index 0000000000..4cef1531c2 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEmbeddableTranslator.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008 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.resource.orm.translators; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.jpt.core.internal.resource.orm.translators.EmbeddableTranslator; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.wst.common.internal.emf.resource.Translator; + +public class EclipseLinkEmbeddableTranslator extends EmbeddableTranslator + implements EclipseLinkOrmXmlMapper +{ + public EclipseLinkEmbeddableTranslator(String domNameAndPath, EStructuralFeature aFeature) { + super(domNameAndPath, aFeature); + } + + + @Override + public EObject createEMFObject(String nodeName, String readAheadName) { + return EclipseLinkOrmFactory.eINSTANCE.createXmlEmbeddable(); + } + + + @Override + protected Translator[] createChildren() { + return new Translator[] { + createClassTranslator(), + createAccessTranslator(), + createMetadataCompleteTranslator(), + createDescriptionTranslator(), + createCustomizerTranslator(), + createAttributesTranslator() + }; + } + + protected Translator createCustomizerTranslator() { + return new CustomizerTranslator(CUSTOMIZER, ECLIPSELINK_ORM_PKG.getXmlCustomizerHolder_Customizer()); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityMappingsTranslator.java index d35e42b415..a8a0c84151 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityMappingsTranslator.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityMappingsTranslator.java @@ -34,6 +34,11 @@ public class EclipseLinkEntityMappingsTranslator extends EntityMappingsTranslato } @Override + protected Translator createEmbeddableTranslator() { + return new EclipseLinkEmbeddableTranslator(EMBEDDABLE, ORM_PKG.getXmlEntityMappings_Embeddables()); + } + + @Override protected Translator createEntityTranslator() { return new EclipseLinkEntityTranslator(ENTITY, ORM_PKG.getXmlEntityMappings_Entities()); } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityTranslator.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityTranslator.java index a7a410f0de..c32a8b4088 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityTranslator.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkEntityTranslator.java @@ -39,6 +39,7 @@ public class EclipseLinkEntityTranslator extends EntityTranslator createMetadataCompleteTranslator(), createReadOnlyTranslator(), createDescriptionTranslator(), + createCustomizerTranslator(), createTableTranslator(), createSecondaryTableTranslator(), createPrimaryKeyJoinColumnTranslator(), @@ -72,7 +73,7 @@ public class EclipseLinkEntityTranslator extends EntityTranslator } protected Translator createCustomizerTranslator() { - return new Translator(CLASS, ECLIPSELINK_ORM_PKG.getXmlCustomizer_CustomizerClassName(), DOM_ATTRIBUTE); + return new CustomizerTranslator(CUSTOMIZER, ECLIPSELINK_ORM_PKG.getXmlCustomizerHolder_Customizer()); } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkMappedSuperclassTranslator.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkMappedSuperclassTranslator.java index 91115b5521..0aca15f529 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkMappedSuperclassTranslator.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/translators/EclipseLinkMappedSuperclassTranslator.java @@ -38,6 +38,7 @@ public class EclipseLinkMappedSuperclassTranslator extends MappedSuperclassTrans createMetadataCompleteTranslator(), createReadOnlyTranslator(), createDescriptionTranslator(), + createCustomizerTranslator(), createIdClassTranslator(), createExcludeDefaultListenersTranslator(), createExcludeSuperclassListenersTranslator(), @@ -56,4 +57,9 @@ public class EclipseLinkMappedSuperclassTranslator extends MappedSuperclassTrans protected Translator createReadOnlyTranslator() { return new Translator(READ_ONLY, ECLIPSELINK_ORM_PKG.getXmlReadOnly_ReadOnly(), DOM_ATTRIBUTE); } + + protected Translator createCustomizerTranslator() { + return new CustomizerTranslator(CUSTOMIZER, ECLIPSELINK_ORM_PKG.getXmlCustomizerHolder_Customizer()); + } + } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlCustomizer.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlCustomizer.java index 3a54d2cc7c..e13bc28777 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlCustomizer.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlCustomizer.java @@ -15,8 +15,10 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.jpt.core.internal.resource.orm.translators.OrmXmlMapper; import org.eclipse.jpt.core.resource.common.AbstractJpaEObject; import org.eclipse.jpt.core.resource.common.JpaEObject; +import org.eclipse.jpt.core.utility.TextRange; /** * <!-- begin-user-doc --> @@ -196,4 +198,8 @@ public class XmlCustomizer extends AbstractJpaEObject implements JpaEObject return result.toString(); } + public TextRange getCustomizerClassNameTextRange() { + return getAttributeTextRange(OrmXmlMapper.CLASS); + } + } // XmlCustomizer diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntity.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntity.java index 5435ce6e5d..7757876887 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntity.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlEntity.java @@ -15,6 +15,8 @@ import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.eclipselink.core.internal.resource.orm.translators.EclipseLinkOrmXmlMapper; /** * <!-- begin-user-doc --> @@ -337,4 +339,7 @@ public class XmlEntity extends org.eclipse.jpt.core.resource.orm.XmlEntity imple return result.toString(); } + public TextRange getReadOnlyTextRange() { + return getAttributeTextRange(EclipseLinkOrmXmlMapper.READ_ONLY); + } } // XmlEntity diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlMappedSuperclass.java index f287a6db47..003b1d9a89 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlMappedSuperclass.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlMappedSuperclass.java @@ -16,6 +16,8 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.eclipselink.core.internal.resource.orm.translators.EclipseLinkOrmXmlMapper; /** * <!-- begin-user-doc --> @@ -338,4 +340,7 @@ public class XmlMappedSuperclass extends org.eclipse.jpt.core.resource.orm.XmlMa return result.toString(); } + public TextRange getReadOnlyTextRange() { + return getAttributeTextRange(EclipseLinkOrmXmlMapper.READ_ONLY); + } } // XmlMappedSuperclass diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlReadOnly.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlReadOnly.java index 531f07a219..ea5c9adba3 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlReadOnly.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/resource/orm/XmlReadOnly.java @@ -1,12 +1,16 @@ -/** - * <copyright> - * </copyright> - * - * $Id: XmlReadOnly.java,v 1.1 2008/10/16 00:28:38 pfullbright Exp $ - */ +/******************************************************************************* + * Copyright (c) 2008 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.resource.orm; import org.eclipse.jpt.core.resource.common.JpaEObject; +import org.eclipse.jpt.core.utility.TextRange; /** * <!-- begin-user-doc --> @@ -52,5 +56,11 @@ public interface XmlReadOnly extends JpaEObject * @generated */ void setReadOnly(Boolean value); + + /** + * Return the {@link TextRange} for the read-only attibute. + */ + TextRange getReadOnlyTextRange(); + } // XmlReadOnly diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkJpaUiFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkJpaUiFactory.java index 74ef52b7b6..c39d4c526d 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkJpaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkJpaUiFactory.java @@ -21,6 +21,7 @@ import org.eclipse.jpt.core.context.VersionMapping; import org.eclipse.jpt.core.context.java.JavaEmbeddable; import org.eclipse.jpt.core.context.java.JavaEntity; import org.eclipse.jpt.core.context.java.JavaMappedSuperclass; +import org.eclipse.jpt.core.context.orm.OrmEmbeddable; import org.eclipse.jpt.core.context.orm.OrmEntity; import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass; import org.eclipse.jpt.core.context.persistence.PersistenceUnit; @@ -46,6 +47,7 @@ import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkVersi import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipselinkOneToManyMappingComposite; import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipselinkOneToOneMappingComposite; import org.eclipse.jpt.eclipselink.ui.internal.options.PersistenceXmlOptionsTab; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEmbeddableComposite; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEntityComposite; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmMappedSuperclassComposite; import org.eclipse.jpt.eclipselink.ui.internal.schema.generation.PersistenceXmlSchemaGenerationTab; @@ -286,4 +288,12 @@ public class EclipseLinkJpaUiFactory extends BaseJpaUiFactory Composite parent, WidgetFactory widgetFactory) { return new EclipseLinkOrmMappedSuperclassComposite(subjectHolder, parent, widgetFactory); } + + @Override + public JpaComposite createOrmEmbeddableComposite( + PropertyValueModel<OrmEmbeddable> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new EclipseLinkOrmEmbeddableComposite(subjectHolder, parent, widgetFactory); + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/CustomizerComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/CustomizerComposite.java index 95623f1958..e4cb77daad 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/CustomizerComposite.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/CustomizerComposite.java @@ -53,10 +53,10 @@ public class CustomizerComposite extends FormPane<Customizer> @Override protected WritablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<Customizer, String>(getSubjectHolder(), Customizer.CUSTOMIZER_CLASS_PROPERTY) { + return new PropertyAspectAdapter<Customizer, String>(getSubjectHolder(), Customizer.SPECIFIED_CUSTOMIZER_CLASS_PROPERTY) { @Override protected String buildValue_() { - return this.subject.getCustomizerClass(); + return this.subject.getSpecifiedCustomizerClass(); } @Override @@ -66,14 +66,14 @@ public class CustomizerComposite extends FormPane<Customizer> value = null; } - this.subject.setCustomizerClass(value); + this.subject.setSpecifiedCustomizerClass(value); } }; } @Override protected String getClassName() { - return getSubject().getCustomizerClass(); + return getSubject().getSpecifiedCustomizerClass(); } @Override @@ -92,7 +92,7 @@ public class CustomizerComposite extends FormPane<Customizer> if (type != null) { String className = type.getFullyQualifiedName('.'); - getSubject().setCustomizerClass(className); + getSubject().setSpecifiedCustomizerClass(className); } } }; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddableComposite.java new file mode 100644 index 0000000000..3ff2d35acb --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddableComposite.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2008 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.orm.details; + +import org.eclipse.jpt.core.context.orm.OrmEmbeddable; +import org.eclipse.jpt.eclipselink.core.context.ChangeTracking; +import org.eclipse.jpt.eclipselink.core.context.Customizer; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkEmbeddable; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.ChangeTrackingComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.CustomizerComposite; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.ui.internal.widgets.FormPane; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * This pane does not have any widgets. + * + * @see Embeddable + * @see BaseJpaUiFactory - The factory creating this pane + * @see EmbeddableUiProvider + * + * @version 2.1 + * @since 2.1 + */ +public class EclipseLinkOrmEmbeddableComposite extends FormPane<OrmEmbeddable> + implements JpaComposite +{ + /** + * Creates a new <code>EmbeddableComposite</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public EclipseLinkOrmEmbeddableComposite(PropertyValueModel<? extends OrmEmbeddable> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { +// initializeConvertersPane(container); + initializeAdvancedPane(container); + } +// +// protected void initializeConvertersPane(Composite container) { +// +// container = addCollapsableSection( +// addSubPane(container, 5), +// EclipseLinkUiMappingsMessages.EclipseLinkTypeMappingComposite_converters +// ); +// +// new ConvertersComposite(this, buildConverterHolderValueModel(), container); +// } +// +// protected PropertyValueModel<JavaConverterHolder> buildConverterHolderValueModel() { +// return new PropertyAspectAdapter<JavaEmbeddable, JavaConverterHolder>(getSubjectHolder()) { +// @Override +// protected JavaConverterHolder buildValue_() { +// return ((EclipseLinkJavaEmbeddable) this.subject).getConverterHolder(); +// } +// }; +// } + + + protected void initializeAdvancedPane(Composite container) { + container = addCollapsableSection( + container, + EclipseLinkUiMappingsMessages.EclipseLinkTypeMappingComposite_advanced + ); + + new CustomizerComposite(this, buildCustomizerHolder(), container); + new ChangeTrackingComposite(this, buildChangeTrackingHolder(), container); + } + + private PropertyValueModel<Customizer> buildCustomizerHolder() { + return new PropertyAspectAdapter<OrmEmbeddable, Customizer>(getSubjectHolder()) { + @Override + protected Customizer buildValue_() { + return ((EclipseLinkEmbeddable) this.subject).getCustomizer(); + } + }; + } + + private PropertyValueModel<ChangeTracking> buildChangeTrackingHolder() { + return new PropertyAspectAdapter<OrmEmbeddable, ChangeTracking>(getSubjectHolder()) { + @Override + protected ChangeTracking buildValue_() { + return ((EclipseLinkEmbeddable) this.subject).getChangeTracking(); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEmbeddableTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEmbeddableTests.java index 0bc73b2bf2..cc9ee6ee4a 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEmbeddableTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEmbeddableTests.java @@ -80,7 +80,7 @@ public class EclipseLinkJavaEmbeddableTests extends EclipseLinkJavaContextModelT Customizer customizer = ((EclipseLinkEmbeddable) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); } public void testSetCustomizerClass() throws Exception { @@ -88,24 +88,24 @@ public class EclipseLinkJavaEmbeddableTests extends EclipseLinkJavaContextModelT addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); Customizer customizer = ((EclipseLinkEmbeddable) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); - customizer.setCustomizerClass(null); - assertEquals(null, customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass(null); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals(null, customizerAnnotation); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); } @@ -116,21 +116,21 @@ public class EclipseLinkJavaEmbeddableTests extends EclipseLinkJavaContextModelT EclipseLinkEmbeddable embeddable = (EclipseLinkEmbeddable) javaPersistentType().getMapping(); Customizer customizer = embeddable.getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); customizerAnnotation.setValue("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); typeResource.removeAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.addAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation.setValue("FooBar"); - assertEquals("FooBar", customizer.getCustomizerClass()); + assertEquals("FooBar", customizer.getSpecifiedCustomizerClass()); } public void testHasChangeTracking() throws Exception { diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEntityTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEntityTests.java index 2fe70ad858..3352941555 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaEntityTests.java @@ -103,7 +103,7 @@ public class EclipseLinkJavaEntityTests extends EclipseLinkJavaContextModelTestC Customizer customizer = ((EclipseLinkEntity) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); } public void testSetCustomizerClass() throws Exception { @@ -111,24 +111,24 @@ public class EclipseLinkJavaEntityTests extends EclipseLinkJavaContextModelTestC addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); Customizer customizer = ((EclipseLinkEntity) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); - customizer.setCustomizerClass(null); - assertEquals(null, customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass(null); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals(null, customizerAnnotation); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); } @@ -139,21 +139,21 @@ public class EclipseLinkJavaEntityTests extends EclipseLinkJavaContextModelTestC EclipseLinkEntity entity = (EclipseLinkEntity) javaPersistentType().getMapping(); Customizer customizer = entity.getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); customizerAnnotation.setValue("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); typeResource.removeAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.addAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation.setValue("FooBar"); - assertEquals("FooBar", customizer.getCustomizerClass()); + assertEquals("FooBar", customizer.getSpecifiedCustomizerClass()); } public void testHasChangeTracking() throws Exception { diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaMappedSuperclassTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaMappedSuperclassTests.java index bfd826ea32..d0c87954c9 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaMappedSuperclassTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/java/EclipseLinkJavaMappedSuperclassTests.java @@ -172,7 +172,7 @@ public class EclipseLinkJavaMappedSuperclassTests extends EclipseLinkJavaContext Customizer customizer = ((EclipseLinkMappedSuperclass) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); } public void testSetCustomizerClass() throws Exception { @@ -180,24 +180,24 @@ public class EclipseLinkJavaMappedSuperclassTests extends EclipseLinkJavaContext addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); Customizer customizer = ((EclipseLinkMappedSuperclass) javaPersistentType().getMapping()).getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); - customizer.setCustomizerClass(null); - assertEquals(null, customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass(null); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals(null, customizerAnnotation); - customizer.setCustomizerClass("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + customizer.setSpecifiedCustomizerClass("Bar"); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); assertEquals("Bar", customizerAnnotation.getValue()); } @@ -208,21 +208,21 @@ public class EclipseLinkJavaMappedSuperclassTests extends EclipseLinkJavaContext EclipseLinkMappedSuperclass mappedSuperclass = (EclipseLinkMappedSuperclass) javaPersistentType().getMapping(); Customizer customizer = mappedSuperclass.getCustomizer(); - assertEquals("Foo", customizer.getCustomizerClass()); + assertEquals("Foo", customizer.getSpecifiedCustomizerClass()); JavaResourcePersistentType typeResource = jpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); CustomizerAnnotation customizerAnnotation = (CustomizerAnnotation) typeResource.getAnnotation(CustomizerAnnotation.ANNOTATION_NAME); customizerAnnotation.setValue("Bar"); - assertEquals("Bar", customizer.getCustomizerClass()); + assertEquals("Bar", customizer.getSpecifiedCustomizerClass()); typeResource.removeAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation = (CustomizerAnnotation) typeResource.addAnnotation(CustomizerAnnotation.ANNOTATION_NAME); - assertEquals(null, customizer.getCustomizerClass()); + assertEquals(null, customizer.getSpecifiedCustomizerClass()); customizerAnnotation.setValue("FooBar"); - assertEquals("FooBar", customizer.getCustomizerClass()); + assertEquals("FooBar", customizer.getSpecifiedCustomizerClass()); } public void testHasChangeTracking() throws Exception { diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java new file mode 100644 index 0000000000..5682201fd9 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java @@ -0,0 +1,161 @@ +/******************************************************************************* + * Copyright (c) 2008 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.tests.internal.context.orm; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.MappingKeys; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.resource.java.JPA; +import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaEmbeddable; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmEmbeddable; +import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; +import org.eclipse.jpt.eclipselink.core.resource.orm.XmlEmbeddable; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + + +public class EclipseLinkOrmEmbeddableTests extends EclipseLinkOrmContextModelTestCase +{ + public EclipseLinkOrmEmbeddableTests(String name) { + super(name); + } + + private ICompilationUnit createTestEmbeddableForCustomizer() throws Exception { + createCustomizerAnnotation(); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.EMBEDDABLE, EclipseLinkJPA.CUSTOMIZER); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Embeddable").append(CR); + } + }); + } + + private void createCustomizerAnnotation() throws Exception{ + this.createAnnotationAndMembers(EclipseLinkJPA.PACKAGE, "Customizer", "Class value()"); + } + + public void testUpdateCustomizerClass() throws Exception { + createTestEmbeddableForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkJavaEmbeddable javaContextEmbeddable = (EclipseLinkJavaEmbeddable) ormPersistentType.getJavaPersistentType().getMapping(); + EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping(); + XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0); + + + // check defaults + + assertNull(resourceEmbeddable.getCustomizer()); + assertNull(javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + // set xml customizer, check defaults + resourceEmbeddable.setCustomizer(EclipseLinkOrmFactory.eINSTANCE.createXmlCustomizer()); + assertNull(resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertNull(javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + + // set xml customizer class, check override + + resourceEmbeddable.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertNull(javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + // clear xml customizer class, set java customizer class, check defaults + + resourceEmbeddable.getCustomizer().setCustomizerClassName(null); + javaContextEmbeddable.getCustomizer().setSpecifiedCustomizerClass("bar"); + + assertNull(resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + // set metadataComplete to True, check defaults not from java + + ormContextEmbeddable.setSpecifiedMetadataComplete(Boolean.TRUE); + + assertNull(resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + ormContextEmbeddable.setSpecifiedMetadataComplete(null); + + // set xml customizer class, check override + + resourceEmbeddable.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + //set xml customizer null + javaContextEmbeddable.getCustomizer().setSpecifiedCustomizerClass(null); + resourceEmbeddable.setCustomizer(null); + assertNull(resourceEmbeddable.getCustomizer()); + assertNull(javaContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + } + + public void testModifyCustomizerClass() throws Exception { + createTestEmbeddableForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping(); + XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0); + + // check defaults + + assertNull(resourceEmbeddable.getCustomizer()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer, check resource + + ormContextEmbeddable.getCustomizer().setSpecifiedCustomizerClass("foo"); + + assertEquals("foo", resourceEmbeddable.getCustomizer().getCustomizerClassName()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer to null, check resource + + ormContextEmbeddable.getCustomizer().setSpecifiedCustomizerClass(null); + + assertNull(resourceEmbeddable.getCustomizer()); + assertNull(ormContextEmbeddable.getCustomizer().getCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEmbeddable.getCustomizer().getSpecifiedCustomizerClass()); + } + +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEntityTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEntityTests.java index 054962aec3..49851fb989 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEntityTests.java @@ -18,6 +18,7 @@ import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaEntity; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmEntity; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlEntity; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @@ -47,6 +48,24 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas this.createAnnotationAndMembers(EclipseLinkJPA.PACKAGE, "ReadOnly", ""); } + private ICompilationUnit createTestEntityForCustomizer() throws Exception { + createCustomizerAnnotation(); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.ENTITY, EclipseLinkJPA.CUSTOMIZER); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@Entity").append(CR); + } + }); + } + + private void createCustomizerAnnotation() throws Exception{ + this.createAnnotationAndMembers(EclipseLinkJPA.PACKAGE, "Customizer", "Class value()"); + } + public void testUpdateReadOnly() throws Exception { createTestEntityForReadOnly(); OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); @@ -66,21 +85,21 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas resourceEntity.setReadOnly(Boolean.FALSE); - assertFalse(resourceEntity.getReadOnly()); + assertEquals(Boolean.FALSE, resourceEntity.getReadOnly()); assertFalse(javaContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertFalse(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.FALSE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // set xml read only to true, check override resourceEntity.setReadOnly(Boolean.TRUE); - assertTrue(resourceEntity.getReadOnly()); + assertEquals(Boolean.TRUE, resourceEntity.getReadOnly()); assertFalse(javaContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertTrue(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.TRUE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // clear xml read only, set java read only to true, check defaults @@ -92,27 +111,39 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas assertTrue(ormContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isDefaultReadOnly()); assertNull(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + + // set metadataComplete to True, check defaults not from java + + ormContextEntity.setSpecifiedMetadataComplete(Boolean.TRUE); + + assertNull(resourceEntity.getReadOnly()); + assertTrue(javaContextEntity.getReadOnly().isReadOnly()); + assertFalse(ormContextEntity.getReadOnly().isReadOnly()); + assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); + assertNull(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + + ormContextEntity.setSpecifiedMetadataComplete(null); // set xml read only to false, check override resourceEntity.setReadOnly(Boolean.FALSE); - assertFalse(resourceEntity.getReadOnly()); + assertEquals(Boolean.FALSE, resourceEntity.getReadOnly()); assertTrue(javaContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertFalse(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.FALSE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // set xml read only to true, check override resourceEntity.setReadOnly(Boolean.TRUE); - assertTrue(resourceEntity.getReadOnly()); + assertEquals(Boolean.TRUE, resourceEntity.getReadOnly()); assertTrue(javaContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertTrue(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); - + assertEquals(Boolean.TRUE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + // clear xml read only, set java read only to false, check defaults resourceEntity.setReadOnly(null); @@ -124,25 +155,27 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); assertNull(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + + // set xml read only to false, check override resourceEntity.setReadOnly(Boolean.FALSE); - assertFalse(resourceEntity.getReadOnly()); + assertEquals(Boolean.FALSE, resourceEntity.getReadOnly()); assertFalse(javaContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertFalse(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.FALSE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // set xml read only to true, check override resourceEntity.setReadOnly(Boolean.TRUE); - assertTrue(resourceEntity.getReadOnly()); + assertEquals(Boolean.TRUE, resourceEntity.getReadOnly()); assertFalse(javaContextEntity.getReadOnly().isReadOnly()); assertTrue(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertTrue(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.TRUE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); } public void testModifyReadOnly() throws Exception { @@ -162,19 +195,19 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas ormContextEntity.getReadOnly().setSpecifiedReadOnly(Boolean.TRUE); - assertTrue(resourceEntity.getReadOnly()); + assertEquals(Boolean.TRUE, resourceEntity.getReadOnly()); assertTrue(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertTrue(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.TRUE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // set context read only to false, check resource ormContextEntity.getReadOnly().setSpecifiedReadOnly(Boolean.FALSE); - assertFalse(resourceEntity.getReadOnly()); + assertEquals(Boolean.FALSE, resourceEntity.getReadOnly()); assertFalse(ormContextEntity.getReadOnly().isReadOnly()); assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); - assertFalse(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); + assertEquals(Boolean.FALSE, ormContextEntity.getReadOnly().getSpecifiedReadOnly()); // set context read only to null, check resource @@ -185,4 +218,117 @@ public class EclipseLinkOrmEntityTests extends EclipseLinkOrmContextModelTestCas assertFalse(ormContextEntity.getReadOnly().isDefaultReadOnly()); assertNull(ormContextEntity.getReadOnly().getSpecifiedReadOnly()); } + + + public void testUpdateCustomizerClass() throws Exception { + createTestEntityForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkJavaEntity javaContextEntity = (EclipseLinkJavaEntity) ormPersistentType.getJavaPersistentType().getMapping(); + EclipseLinkOrmEntity ormContextEntity = (EclipseLinkOrmEntity) ormPersistentType.getMapping(); + XmlEntity resourceEntity = (XmlEntity) ormResource().getEntityMappings().getEntities().get(0); + + + // check defaults + + assertNull(resourceEntity.getCustomizer()); + assertNull(javaContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + // set xml customizer, check defaults + resourceEntity.setCustomizer(EclipseLinkOrmFactory.eINSTANCE.createXmlCustomizer()); + assertNull(resourceEntity.getCustomizer().getCustomizerClassName()); + assertNull(javaContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + + // set xml customizer class, check override + + resourceEntity.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceEntity.getCustomizer().getCustomizerClassName()); + assertNull(javaContextEntity.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + // clear xml customizer class, set java customizer class, check defaults + + resourceEntity.getCustomizer().setCustomizerClassName(null); + javaContextEntity.getCustomizer().setSpecifiedCustomizerClass("bar"); + + assertNull(resourceEntity.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEntity.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEntity.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + // set metadataComplete to True, check defaults not from java + + ormContextEntity.setSpecifiedMetadataComplete(Boolean.TRUE); + + assertNull(resourceEntity.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + ormContextEntity.setSpecifiedMetadataComplete(null); + + // set xml customizer class, check override + + resourceEntity.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceEntity.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextEntity.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextEntity.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + //set xml customizer null + javaContextEntity.getCustomizer().setSpecifiedCustomizerClass(null); + resourceEntity.setCustomizer(null); + assertNull(resourceEntity.getCustomizer()); + assertNull(javaContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + } + + public void testModifyCustomizerClass() throws Exception { + createTestEntityForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkOrmEntity ormContextEntity = (EclipseLinkOrmEntity) ormPersistentType.getMapping(); + XmlEntity resourceEntity = (XmlEntity) ormResource().getEntityMappings().getEntities().get(0); + + // check defaults + + assertNull(resourceEntity.getCustomizer()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer, check resource + + ormContextEntity.getCustomizer().setSpecifiedCustomizerClass("foo"); + + assertEquals("foo", resourceEntity.getCustomizer().getCustomizerClassName()); + assertEquals("foo", ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer to null, check resource + + ormContextEntity.getCustomizer().setSpecifiedCustomizerClass(null); + + assertNull(resourceEntity.getCustomizer()); + assertNull(ormContextEntity.getCustomizer().getCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextEntity.getCustomizer().getSpecifiedCustomizerClass()); + } + } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmMappedSuperclassTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmMappedSuperclassTests.java index 01167cb7ed..f34b72f430 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmMappedSuperclassTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmMappedSuperclassTests.java @@ -18,6 +18,7 @@ import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaMappedSuperclass; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmMappedSuperclass; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlMappedSuperclass; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @@ -47,6 +48,24 @@ public class EclipseLinkOrmMappedSuperclassTests extends EclipseLinkOrmContextMo this.createAnnotationAndMembers(EclipseLinkJPA.PACKAGE, "ReadOnly", ""); } + private ICompilationUnit createTestMappedSuperclassForCustomizer() throws Exception { + createCustomizerAnnotation(); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JPA.MAPPED_SUPERCLASS, EclipseLinkJPA.CUSTOMIZER); + } + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@MappedSuperclass").append(CR); + } + }); + } + + private void createCustomizerAnnotation() throws Exception{ + this.createAnnotationAndMembers(EclipseLinkJPA.PACKAGE, "Customizer", "Class value()"); + } + public void testUpdateReadOnly() throws Exception { createTestMappedSuperclassForReadOnly(); OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); @@ -93,6 +112,18 @@ public class EclipseLinkOrmMappedSuperclassTests extends EclipseLinkOrmContextMo assertTrue(ormContextMappedSuperclass.getReadOnly().isDefaultReadOnly()); assertNull(ormContextMappedSuperclass.getReadOnly().getSpecifiedReadOnly()); + // set metadataComplete to True, check defaults not from java + + ormContextMappedSuperclass.setSpecifiedMetadataComplete(Boolean.TRUE); + + assertNull(resourceMappedSuperclass.getReadOnly()); + assertTrue(javaContextMappedSuperclass.getReadOnly().isReadOnly()); + assertFalse(ormContextMappedSuperclass.getReadOnly().isReadOnly()); + assertFalse(ormContextMappedSuperclass.getReadOnly().isDefaultReadOnly()); + assertNull(ormContextMappedSuperclass.getReadOnly().getSpecifiedReadOnly()); + + ormContextMappedSuperclass.setSpecifiedMetadataComplete(null); + // set xml read only to false, check override resourceMappedSuperclass.setReadOnly(Boolean.FALSE); @@ -185,4 +216,116 @@ public class EclipseLinkOrmMappedSuperclassTests extends EclipseLinkOrmContextMo assertFalse(ormContextMappedSuperclass.getReadOnly().isDefaultReadOnly()); assertNull(ormContextMappedSuperclass.getReadOnly().getSpecifiedReadOnly()); } + + public void testUpdateCustomizerClass() throws Exception { + createTestMappedSuperclassForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkJavaMappedSuperclass javaContextMappedSuperclass = (EclipseLinkJavaMappedSuperclass) ormPersistentType.getJavaPersistentType().getMapping(); + EclipseLinkOrmMappedSuperclass ormContextMappedSuperclass = (EclipseLinkOrmMappedSuperclass) ormPersistentType.getMapping(); + XmlMappedSuperclass resourceMappedSuperclass = (XmlMappedSuperclass) ormResource().getEntityMappings().getMappedSuperclasses().get(0); + + + // check defaults + + assertNull(resourceMappedSuperclass.getCustomizer()); + assertNull(javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + // set xml customizer, check defaults + resourceMappedSuperclass.setCustomizer(EclipseLinkOrmFactory.eINSTANCE.createXmlCustomizer()); + assertNull(resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertNull(javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + + // set xml customizer class, check override + + resourceMappedSuperclass.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertNull(javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + // clear xml customizer class, set java customizer class, check defaults + + resourceMappedSuperclass.getCustomizer().setCustomizerClassName(null); + javaContextMappedSuperclass.getCustomizer().setSpecifiedCustomizerClass("bar"); + + assertNull(resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + // set metadataComplete to True, check defaults not from java + + ormContextMappedSuperclass.setSpecifiedMetadataComplete(Boolean.TRUE); + + assertNull(resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + ormContextMappedSuperclass.setSpecifiedMetadataComplete(null); + + // set xml customizer class, check override + + resourceMappedSuperclass.getCustomizer().setCustomizerClassName("foo"); + + assertEquals("foo", resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertEquals("bar", javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertEquals("bar", ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + //set xml customizer null + javaContextMappedSuperclass.getCustomizer().setSpecifiedCustomizerClass(null); + resourceMappedSuperclass.setCustomizer(null); + assertNull(resourceMappedSuperclass.getCustomizer()); + assertNull(javaContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + } + + public void testModifyCustomizerClass() throws Exception { + createTestMappedSuperclassForCustomizer(); + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + EclipseLinkOrmMappedSuperclass ormContextMappedSuperclass = (EclipseLinkOrmMappedSuperclass) ormPersistentType.getMapping(); + XmlMappedSuperclass resourceMappedSuperclass = (XmlMappedSuperclass) ormResource().getEntityMappings().getMappedSuperclasses().get(0); + + // check defaults + + assertNull(resourceMappedSuperclass.getCustomizer()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer, check resource + + ormContextMappedSuperclass.getCustomizer().setSpecifiedCustomizerClass("foo"); + + assertEquals("foo", resourceMappedSuperclass.getCustomizer().getCustomizerClassName()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertEquals("foo", ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + + // set context customizer to null, check resource + + ormContextMappedSuperclass.getCustomizer().setSpecifiedCustomizerClass(null); + + assertNull(resourceMappedSuperclass.getCustomizer()); + assertNull(ormContextMappedSuperclass.getCustomizer().getCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getDefaultCustomizerClass()); + assertNull(ormContextMappedSuperclass.getCustomizer().getSpecifiedCustomizerClass()); + } + } diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/JptEclipseLinkCoreOrmContextModelTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/JptEclipseLinkCoreOrmContextModelTests.java index 50fb1f94f2..f6b0c24427 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/JptEclipseLinkCoreOrmContextModelTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/JptEclipseLinkCoreOrmContextModelTests.java @@ -22,6 +22,7 @@ public class JptEclipseLinkCoreOrmContextModelTests extends TestCase public static Test suite(boolean all) { TestSuite suite = new TestSuite(JptEclipseLinkCoreOrmContextModelTests.class.getName()); + suite.addTestSuite(EclipseLinkOrmEmbeddableTests.class); suite.addTestSuite(EclipseLinkOrmEntityTests.class); suite.addTestSuite(EclipseLinkOrmMappedSuperclassTests.class); return suite; |