Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 162793 Details for
Bug 306777
[JPA 2.0] Incorrect validation/defaults when maps-id is used on a relationship
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
proposed patch
305777.txt (text/plain), 283.69 KB, created by
Paul Fullbright
on 2010-03-23 13:22:02 EDT
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Paul Fullbright
Created:
2010-03-23 13:22:02 EDT
Size:
283.69 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jpt.eclipselink.ui >Index: src/org/eclipse/jpt/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java,v >retrieving revision 1.6 >diff -u -r1.6 EclipseLinkIdMappingComposite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java 2 Mar 2010 20:32:35 -0000 1.6 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java 23 Mar 2010 17:21:07 -0000 >@@ -18,7 +18,6 @@ > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite; > import org.eclipse.jpt.ui.internal.details.ColumnComposite; >-import org.eclipse.jpt.ui.internal.details.IdMappingGenerationComposite; > import org.eclipse.jpt.ui.internal.details.JptUiDetailsMessages; > import org.eclipse.jpt.ui.internal.details.TemporalTypeComposite; > import org.eclipse.jpt.ui.internal.widgets.Pane; >@@ -30,52 +29,19 @@ > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | TemporalTypeComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | GenerationComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see IdMapping >- * @see ColumnComposite >- * @see TemporalTypeComposite >- * @see IdMappingGenerationComposite >- * >- * @version 2.3 >- * @since 2.1 >- */ >-public class EclipseLinkIdMappingComposite<T extends IdMapping> extends AbstractIdMappingComposite<T> >- implements JpaComposite >+public class EclipseLinkIdMappingComposite<T extends IdMapping> >+ extends AbstractIdMappingComposite<T> >+ implements JpaComposite > { >- /** >- * Creates a new <code>IdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public EclipseLinkIdMappingComposite(PropertyValueModel<? extends T> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public EclipseLinkIdMappingComposite( >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeIdSection(Composite container) { > new ColumnComposite(this, buildColumnHolder(), container); >@@ -85,7 +51,7 @@ > @Override > protected void initializeTypeSection(Composite container) { > ((GridLayout) container.getLayout()).numColumns = 2; >- >+ > // No converter > Button noConverterButton = addRadioButton( > container, >@@ -110,18 +76,18 @@ > buildConverterBooleanHolder(EclipseLinkConvert.ECLIPSE_LINK_CONVERTER), > null); > ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; >- >+ > Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), container); > GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); > gridData.horizontalSpan = 2; > gridData.horizontalIndent = 20; > registerSubPane(convertComposite); > } >- >+ > protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { > return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); > } >- >+ > protected PropertyValueModel<EclipseLinkConvert> buildEclipseLinkConverterHolder(PropertyValueModel<Converter> converterHolder) { > return new TransformationPropertyValueModel<Converter, EclipseLinkConvert>(converterHolder) { > @Override >@@ -130,7 +96,7 @@ > } > }; > } >- >+ > protected PropertyValueModel<EclipseLinkMutable> buildMutableHolder() { > return new PropertyAspectAdapter<T, EclipseLinkMutable>(getSubjectHolder()) { > @Override >@@ -139,4 +105,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java,v >retrieving revision 1.6 >diff -u -r1.6 EclipseLink2_0JavaUiFactory.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java 22 Jan 2010 17:32:59 -0000 1.6 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/EclipseLink2_0JavaUiFactory.java 23 Mar 2010 17:21:08 -0000 >@@ -9,6 +9,7 @@ > *******************************************************************************/ > package org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.java; > >+import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; > import org.eclipse.jpt.core.context.java.JavaEntity; > import org.eclipse.jpt.core.context.java.JavaIdMapping; > import org.eclipse.jpt.core.context.java.JavaManyToManyMapping; >@@ -21,6 +22,7 @@ > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.jpa2.details.ElementCollectionMapping2_0Composite; >+import org.eclipse.jpt.ui.internal.jpa2.details.EmbeddedIdMapping2_0Composite; > import org.eclipse.jpt.ui.jpa2.details.java.JavaUiFactory2_0; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; >@@ -35,7 +37,7 @@ > public EclipseLink2_0JavaUiFactory() { > super(); > } >- >+ > > // **************** java type mapping composites *************************** > >@@ -53,6 +55,9 @@ > return new JavaEclipseLinkMappedSuperclass2_0Composite(subjectHolder, parent, widgetFactory); > } > >+ >+ // **************** java attribute mapping composites ********************** >+ > @Override > public JpaComposite createJavaIdMappingComposite( > PropertyValueModel<JavaIdMapping> subjectHolder, >@@ -61,6 +66,14 @@ > return new JavaEclipseLinkIdMapping2_0Composite(subjectHolder, parent, widgetFactory); > } > >+ @Override >+ public JpaComposite createJavaEmbeddedIdMappingComposite( >+ PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ return new EmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); >+ } >+ > public JpaComposite createJavaElementCollectionMapping2_0Composite( > PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder, > Composite parent, >@@ -99,5 +112,4 @@ > WidgetFactory widgetFactory) { > return new JavaEclipseLinkManyToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); > } >- > } >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkIdMapping2_0Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkIdMapping2_0Composite.java,v >retrieving revision 1.3 >diff -u -r1.3 JavaEclipseLinkIdMapping2_0Composite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkIdMapping2_0Composite.java 2 Mar 2010 20:32:34 -0000 1.3 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/java/JavaEclipseLinkIdMapping2_0Composite.java 23 Mar 2010 17:21:08 -0000 >@@ -9,67 +9,39 @@ > ******************************************************************************/ > package org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.java; > >-import org.eclipse.jpt.core.context.IdMapping; > import org.eclipse.jpt.core.context.java.JavaIdMapping; > import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkIdMappingComposite; >+import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkMutableComposite; > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.details.ColumnComposite; >-import org.eclipse.jpt.ui.internal.details.IdMappingGenerationComposite; >-import org.eclipse.jpt.ui.internal.details.TemporalTypeComposite; >+import org.eclipse.jpt.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; > import org.eclipse.jpt.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | TemporalTypeComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | GenerationComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see IdMapping >- * @see JavaUiFactory - The factory creating this pane >- * @see ColumnComposite >- * @see TemporalTypeComposite >- * @see IdMappingGenerationComposite >- * >- * @version 2.3 >- * @since 2.1 >- */ >-public class JavaEclipseLinkIdMapping2_0Composite extends EclipseLinkIdMappingComposite<JavaIdMapping> >- implements JpaComposite >+public class JavaEclipseLinkIdMapping2_0Composite >+ extends EclipseLinkIdMappingComposite<JavaIdMapping> >+ implements JpaComposite > { >- /** >- * Creates a new <code>IdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public JavaEclipseLinkIdMapping2_0Composite(PropertyValueModel<? extends JavaIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public JavaEclipseLinkIdMapping2_0Composite( >+ PropertyValueModel<? extends JavaIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ >+ @Override >+ protected void initializeIdSection(Composite container) { >+ new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); >+ new ColumnComposite(this, buildColumnHolder(), container); >+ new EclipseLinkMutableComposite(this, buildMutableHolder(), container); >+ } >+ > @Override > protected void initializeGenerationCollapsibleSection(Composite container) { > new IdMappingGeneration2_0Composite(this, container); > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkIdMapping2_0Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkIdMapping2_0Composite.java,v >retrieving revision 1.2 >diff -u -r1.2 OrmEclipseLinkIdMapping2_0Composite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkIdMapping2_0Composite.java 2 Mar 2010 20:32:33 -0000 1.2 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkIdMapping2_0Composite.java 23 Mar 2010 17:21:08 -0000 >@@ -10,31 +10,40 @@ > package org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.orm; > > import org.eclipse.jpt.core.context.orm.OrmIdMapping; >+import org.eclipse.jpt.eclipselink.ui.internal.details.EclipseLinkMutableComposite; > import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.OrmEclipseLinkIdMapping1_1Composite; > import org.eclipse.jpt.ui.WidgetFactory; >+import org.eclipse.jpt.ui.internal.details.AccessTypeComposite; >+import org.eclipse.jpt.ui.internal.details.ColumnComposite; >+import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; >+import org.eclipse.jpt.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; > import org.eclipse.jpt.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-public class OrmEclipseLinkIdMapping2_0Composite extends OrmEclipseLinkIdMapping1_1Composite >+public class OrmEclipseLinkIdMapping2_0Composite >+ extends OrmEclipseLinkIdMapping1_1Composite > { >- /** >- * Creates a new <code>public</code>. >- * >- * @param subjectHolder The holder of the subject <code>IdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public OrmEclipseLinkIdMapping2_0Composite(PropertyValueModel<? extends OrmIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEclipseLinkIdMapping2_0Composite( >+ PropertyValueModel<? extends OrmIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ >+ @Override >+ protected void initializeIdSection(Composite container) { >+ new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); >+ new ColumnComposite(this, buildColumnHolder(), container); >+ new OrmMappingNameChooser(this, getSubjectHolder(), container); >+ new AccessTypeComposite(this, buildAccessHolderHolder(), container); >+ new EclipseLinkMutableComposite(this, buildMutableHolder(), container); >+ } >+ > @Override > protected void initializeGenerationCollapsibleSection(Composite container) { > new IdMappingGeneration2_0Composite(this, container); > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiFactory.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiFactory.java,v >retrieving revision 1.9 >diff -u -r1.9 EclipseLinkOrmXml2_0UiFactory.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiFactory.java 25 Feb 2010 19:09:22 -0000 1.9 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/EclipseLinkOrmXml2_0UiFactory.java 23 Mar 2010 17:21:08 -0000 >@@ -23,7 +23,6 @@ > import org.eclipse.jpt.core.jpa2.context.orm.OrmElementCollectionMapping2_0; > import org.eclipse.jpt.eclipselink.ui.internal.details.orm.BaseEclipseLinkOrmXmlUiFactory; > import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.OrmEclipseLinkBasicMapping1_1Composite; >-import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.OrmEclipseLinkEmbeddedIdMapping1_1Composite; > import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.OrmEclipseLinkVersionMapping1_1Composite; > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.details.JpaComposite; >@@ -77,7 +76,7 @@ > PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, > Composite parent, > WidgetFactory widgetFactory) { >- return new OrmEclipseLinkEmbeddedIdMapping1_1Composite(subjectHolder, parent, widgetFactory); >+ return new OrmEclipseLinkEmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); > } > > @Override >Index: src/org/eclipse/jpt/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java,v >retrieving revision 1.3 >diff -u -r1.3 OrmEclipseLinkIdMappingComposite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java 2 Mar 2010 20:32:29 -0000 1.3 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java 23 Mar 2010 17:21:08 -0000 >@@ -22,32 +22,28 @@ > > //Remove the Converters section from 1.0 orm id mappings. > //This is supported in EclipseLink in version 1.1, but not 1.0 >-public class OrmEclipseLinkIdMappingComposite extends EclipseLinkIdMappingComposite<OrmIdMapping> >+public class OrmEclipseLinkIdMappingComposite >+ extends EclipseLinkIdMappingComposite<OrmIdMapping> > { >- /** >- * Creates a new <code>EclipseLinkOrmIdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public OrmEclipseLinkIdMappingComposite(PropertyValueModel<? extends OrmIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEclipseLinkIdMappingComposite( >+ PropertyValueModel<? extends OrmIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ > @Override > protected void initializeIdSection(Composite container) { > new ColumnComposite(this, buildColumnHolder(), container); > new OrmMappingNameChooser(this, getSubjectHolder(), container); > new EclipseLinkMutableComposite(this, buildMutableHolder(), container); > } >- >+ > @Override > //everything but the 'Define Converter' section. This is not supported in eclipselink 1.0, but is in 1.1 > protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { > return new OrmEclipseLinkConvert1_0Composite(convertHolder, container, getWidgetFactory()); > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java,v >retrieving revision 1.6 >diff -u -r1.6 OrmEclipseLinkEmbeddedIdMapping1_1Composite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java 2 Mar 2010 20:32:31 -0000 1.6 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java 23 Mar 2010 17:21:08 -0000 >@@ -22,48 +22,27 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here's the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | EmbeddedAttributeOverridesComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedIdMapping >- * >- * @version 2.3 >- * @since 2.2 >- */ >-public class OrmEclipseLinkEmbeddedIdMapping1_1Composite extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >- implements JpaComposite >+public class OrmEclipseLinkEmbeddedIdMapping1_1Composite >+ extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >+ implements JpaComposite > { >- /** >- * Creates a new <code>EclipseLink1_1OrmEmbeddedIdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>EmbeddedIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public OrmEclipseLinkEmbeddedIdMapping1_1Composite(PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEclipseLinkEmbeddedIdMapping1_1Composite( >+ PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ > @Override > protected void initializeEmbeddedIdSection(Composite container) { > new OrmMappingNameChooser(this, getSubjectHolder(), container); > new AccessTypeComposite(this, buildAccessHolderHolder(), container); > > new EmbeddedMappingOverridesComposite( >- this, >- container >- ); >+ this, >+ container); > } > > protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { >@@ -74,4 +53,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkIdMapping1_1Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkIdMapping1_1Composite.java,v >retrieving revision 1.2 >diff -u -r1.2 OrmEclipseLinkIdMapping1_1Composite.java >--- src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkIdMapping1_1Composite.java 2 Mar 2010 20:32:33 -0000 1.2 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v1_1/details/orm/OrmEclipseLinkIdMapping1_1Composite.java 23 Mar 2010 17:21:08 -0000 >@@ -22,15 +22,18 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-public class OrmEclipseLinkIdMapping1_1Composite extends EclipseLinkIdMappingComposite<OrmIdMapping> >+public class OrmEclipseLinkIdMapping1_1Composite >+ extends EclipseLinkIdMappingComposite<OrmIdMapping> > { >- public OrmEclipseLinkIdMapping1_1Composite(PropertyValueModel<? extends OrmIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEclipseLinkIdMapping1_1Composite( >+ PropertyValueModel<? extends OrmIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeIdSection(Composite container) { > new ColumnComposite(this, buildColumnHolder(), container); >@@ -47,4 +50,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java >=================================================================== >RCS file: src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java >diff -N src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/eclipselink/ui/internal/v2_0/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,43 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Oracle. >+ * All rights reserved. This program and the accompanying materials are >+ * made available under the terms of the Eclipse Public License v1.0 which >+ * accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oracle - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jpt.eclipselink.ui.internal.v2_0.details.orm; >+ >+import org.eclipse.jpt.core.context.orm.OrmEmbeddedIdMapping; >+import org.eclipse.jpt.eclipselink.ui.internal.v1_1.details.orm.OrmEclipseLinkEmbeddedIdMapping1_1Composite; >+import org.eclipse.jpt.ui.WidgetFactory; >+import org.eclipse.jpt.ui.internal.details.AccessTypeComposite; >+import org.eclipse.jpt.ui.internal.details.EmbeddedMappingOverridesComposite; >+import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; >+import org.eclipse.jpt.ui.internal.jpa2.details.EmbeddedIdMapping2_0MappedByRelationshipPane; >+import org.eclipse.jpt.utility.model.value.PropertyValueModel; >+import org.eclipse.swt.widgets.Composite; >+ >+public class OrmEclipseLinkEmbeddedIdMapping2_0Composite >+ extends OrmEclipseLinkEmbeddedIdMapping1_1Composite >+{ >+ public OrmEclipseLinkEmbeddedIdMapping2_0Composite( >+ PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ >+ super(subjectHolder, parent, widgetFactory); >+ } >+ >+ >+ @Override >+ protected void initializeEmbeddedIdSection(Composite container) { >+ new OrmMappingNameChooser(this, getSubjectHolder(), container); >+ new AccessTypeComposite(this, buildAccessHolderHolder(), container); >+ >+ new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); >+ new EmbeddedMappingOverridesComposite(this, container); >+ } >+} >#P org.eclipse.jpt.ui >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java,v >retrieving revision 1.1 >diff -u -r1.1 ElementCollectionValueOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java 12 Jan 2010 19:08:53 -0000 1.1 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java 23 Mar 2010 17:21:11 -0000 >@@ -21,51 +21,17 @@ > import org.eclipse.swt.widgets.Composite; > import org.eclipse.ui.part.PageBook; > >-/** >- * Here is the layout of this pane: >- * <pre> >- * -------------------------------------------------------------------------------- >- * | | >- * | - Attribute Overrides ------------------------------------------------------ | >- * | | ------------------------------------------------------------------------ | | >- * | | | | | | >- * | | | AddRemoveListPane | | | >- * | | | | | | >- * | | ------------------------------------------------------------------------ | | >- * | | | | >- * | | x Override Default | | >- * | | | | >- * | | ------------------------------------------------------------------------ | | >- * | | | | | | >- * | | | PageBook (AttributeOverrideComposite/AssociationOverride2_0Composite)| | | >- * | | | | | | >- * | | ------------------------------------------------------------------------ | | >- * | ---------------------------------------------------------------------------- | >- * --------------------------------------------------------------------------------</pre> >- * >- * @see ElementCollectionMapping2_0 >- * @see AbstractElementCollectionMapping2_0Composite - The parent container >- * @see AttributeOverrideComposite >- * @see AssociationOverride2_0Composite >- * >- * @version 3.0 >- * @since 3.0 >- */ >-public final class ElementCollectionValueOverridesComposite extends AbstractOverridesComposite<ElementCollectionMapping2_0> >+public final class ElementCollectionValueOverridesComposite >+ extends AbstractOverridesComposite<ElementCollectionMapping2_0> > { >- >- /** >- * Creates a new <code>OverridesComposite</code>. >- * >- * @param parentPane The parent controller of this one >- * @param parent The parent container >- */ >- public ElementCollectionValueOverridesComposite(Pane<? extends ElementCollectionMapping2_0> parentPane, >- Composite parent) { >- >+ public ElementCollectionValueOverridesComposite( >+ Pane<? extends ElementCollectionMapping2_0> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } > >+ > @Override > protected boolean supportsAssociationOverrides() { > return true; >@@ -85,7 +51,7 @@ > } > }; > } >- >+ > @Override > protected PropertyValueModel<AssociationOverrideContainer> buildAssociationOverrideContainerHolder() { > return new PropertyAspectAdapter<ElementCollectionMapping2_0, AssociationOverrideContainer>(getSubjectHolder()) { >@@ -95,5 +61,4 @@ > } > }; > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/Entity2_0OverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/Entity2_0OverridesComposite.java,v >retrieving revision 1.2 >diff -u -r1.2 Entity2_0OverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/Entity2_0OverridesComposite.java 6 Jan 2010 20:45:44 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/Entity2_0OverridesComposite.java 23 Mar 2010 17:21:11 -0000 >@@ -17,54 +17,19 @@ > import org.eclipse.swt.widgets.Composite; > import org.eclipse.ui.part.PageBook; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | | >- * | - Attribute Overrides --------------------------------------------------- | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | AddRemoveListPane | | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | >- * | | x Override Default | | >- * | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | PageBook (AttributeOverrideComposite/AssociationOverrideComposite)| | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see Entity >- * @see Entity2_0Composite - The parent container >- * @see AttributeOverrideComposite >- * @see AssociationOverride2_0Composite >- * >- * @version 3.0 >- * @since 2.2 >- */ >-public class Entity2_0OverridesComposite extends AbstractEntityOverridesComposite >+public class Entity2_0OverridesComposite >+ extends AbstractEntityOverridesComposite > { >- >- /** >- * Creates a new <code>OverridesComposite</code>. >- * >- * @param parentPane The parent controller of this one >- * @param parent The parent container >- */ >- public Entity2_0OverridesComposite(Pane<? extends Entity> parentPane, >- Composite parent) { >- >+ public Entity2_0OverridesComposite( >+ Pane<? extends Entity> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } >- >+ >+ > @Override > protected Pane<AssociationOverride> buildAssociationOverridePane(PageBook pageBook, PropertyValueModel<AssociationOverride> associationOverrideHolder) { > return new AssociationOverride2_0Composite(this, associationOverrideHolder, pageBook); > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java,v >retrieving revision 1.12 >diff -u -r1.12 JptUiDetailsMessages2_0.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java 3 Mar 2010 21:18:37 -0000 1.12 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/JptUiDetailsMessages2_0.java 23 Mar 2010 17:21:11 -0000 >@@ -42,7 +42,11 @@ > > public static String Entity_cacheableLabel; > public static String Entity_cacheableWithDefaultLabel; >- >+ >+ public static String EmbeddedIdMapping2_0MappedByRelationshipPane_label; >+ >+ public static String IdMapping2_0MappedByRelationshipPane_label; >+ > public static String OrderingComposite_orderColumn; > > public static String OrphanRemoval2_0Composite_orphanRemovalLabel; >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedMapping2_0OverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedMapping2_0OverridesComposite.java,v >retrieving revision 1.3 >diff -u -r1.3 EmbeddedMapping2_0OverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedMapping2_0OverridesComposite.java 2 Mar 2010 20:32:17 -0000 1.3 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedMapping2_0OverridesComposite.java 23 Mar 2010 17:21:11 -0000 >@@ -21,46 +21,17 @@ > import org.eclipse.swt.widgets.Composite; > import org.eclipse.ui.part.PageBook; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | AddRemoveListPane | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | | >- * | x Override Default | >- * | | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedMapping >- * @see ColumnComposite >- * >- * @version 2.3 >- * @since 2.3 >- */ >-public class EmbeddedMapping2_0OverridesComposite extends AbstractEmbeddedMappingOverridesComposite<EmbeddedMapping> >+public class EmbeddedMapping2_0OverridesComposite >+ extends AbstractEmbeddedMappingOverridesComposite<EmbeddedMapping> > { >- >- /** >- * Creates a new <code>EmbeddedAttributeOverridesComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param parent The parent container >- */ >- public EmbeddedMapping2_0OverridesComposite(Pane<? extends EmbeddedMapping> parentPane, >- Composite parent) { >- >+ public EmbeddedMapping2_0OverridesComposite( >+ Pane<? extends EmbeddedMapping> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } > >+ > @Override > protected boolean supportsAssociationOverrides() { > return true; >@@ -75,7 +46,7 @@ > } > }; > } >- >+ > @Override > protected Pane<AssociationOverride> buildAssociationOverridePane(PageBook pageBook, PropertyValueModel<AssociationOverride> associationOverrideHolder) { > return new AssociationOverride2_0Composite(this, associationOverrideHolder, pageBook); >@@ -90,5 +61,4 @@ > } > }; > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedIdMappingComposite.java,v >retrieving revision 1.1 >diff -u -r1.1 AbstractEmbeddedIdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedIdMappingComposite.java 2 Mar 2010 20:32:07 -0000 1.1 >+++ src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedIdMappingComposite.java 23 Mar 2010 17:21:09 -0000 >@@ -10,7 +10,6 @@ > package org.eclipse.jpt.ui.internal.details; > > import org.eclipse.jpt.core.context.EmbeddedIdMapping; >-import org.eclipse.jpt.core.context.EmbeddedMapping; > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.widgets.Pane; >@@ -18,40 +17,19 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | EmbeddedAttributeOverridesComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedMapping >- * >- * @version 2.3 >- * @since 1.0 >- */ > public abstract class AbstractEmbeddedIdMappingComposite<T extends EmbeddedIdMapping> > extends Pane<T> > implements JpaComposite > { >- /** >- * Creates a new <code>EmbeddedMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>EmbeddedMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- protected AbstractEmbeddedIdMappingComposite(PropertyValueModel<? extends T> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ protected AbstractEmbeddedIdMappingComposite( >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeLayout(Composite container) { > initializeEmbeddedIdCollapsibleSection(container); >@@ -59,18 +37,12 @@ > > protected void initializeEmbeddedIdCollapsibleSection(Composite container) { > container = addCollapsibleSection( >- container, >- JptUiDetailsMessages.EmbeddedIdSection_title, >- new SimplePropertyValueModel<Boolean>(Boolean.TRUE) >- ); >- >+ container, >+ JptUiDetailsMessages.EmbeddedIdSection_title, >+ new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); >+ > this.initializeEmbeddedIdSection(container); > } > >- protected void initializeEmbeddedIdSection(Composite container) { >- new EmbeddedMappingOverridesComposite( >- this, >- container >- ); >- } >-} >\ No newline at end of file >+ protected abstract void initializeEmbeddedIdSection(Composite container); >+} >Index: src/org/eclipse/jpt/ui/internal/details/EntityOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/EntityOverridesComposite.java,v >retrieving revision 1.2 >diff -u -r1.2 EntityOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/details/EntityOverridesComposite.java 6 Jan 2010 20:45:40 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/details/EntityOverridesComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -13,49 +13,13 @@ > import org.eclipse.jpt.ui.internal.widgets.Pane; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | | >- * | - Attribute Overrides --------------------------------------------------- | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | AddRemoveListPane | | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | >- * | | x Override Default | | >- * | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | PageBook (AttributeOverrideComposite/AssociationOverrideComposite)| | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see Entity >- * @see EntityComposite - The parent container >- * @see AttributeOverrideComposite >- * @see AssociationOverrideComposite >- * >- * @version 3.0 >- * @since 1.0 >- */ >-public class EntityOverridesComposite extends AbstractEntityOverridesComposite >+public class EntityOverridesComposite >+ extends AbstractEntityOverridesComposite > { >- >- /** >- * Creates a new <code>OverridesComposite</code>. >- * >- * @param parentPane The parent controller of this one >- * @param parent The parent container >- */ >- public EntityOverridesComposite(Pane<? extends Entity> parentPane, >- Composite parent) { >- >+ public EntityOverridesComposite( >+ Pane<? extends Entity> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/AbstractEntityOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/AbstractEntityOverridesComposite.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractEntityOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/details/AbstractEntityOverridesComposite.java 6 Jan 2010 20:45:40 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/details/AbstractEntityOverridesComposite.java 23 Mar 2010 17:21:09 -0000 >@@ -17,51 +17,17 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | | >- * | - Attribute Overrides --------------------------------------------------- | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | AddRemoveListPane | | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | >- * | | x Override Default | | >- * | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | PageBook (AttributeOverrideComposite/AssociationOverrideComposite)| | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see Entity >- * @see EntityComposite - The parent container >- * @see AttributeOverrideComposite >- * @see AssociationOverrideComposite >- * >- * @version 3.0 >- * @since 1.0 >- */ >-public abstract class AbstractEntityOverridesComposite extends AbstractOverridesComposite<Entity> >+public abstract class AbstractEntityOverridesComposite >+ extends AbstractOverridesComposite<Entity> > { >- >- /** >- * Creates a new <code>OverridesComposite</code>. >- * >- * @param parentPane The parent controller of this one >- * @param parent The parent container >- */ >- protected AbstractEntityOverridesComposite(Pane<? extends Entity> parentPane, >- Composite parent) { >- >+ protected AbstractEntityOverridesComposite( >+ Pane<? extends Entity> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } > >+ > @Override > protected boolean supportsAssociationOverrides() { > return true; >@@ -76,7 +42,7 @@ > } > }; > } >- >+ > @Override > protected PropertyValueModel<AssociationOverrideContainer> buildAssociationOverrideContainerHolder() { > return new PropertyAspectAdapter<Entity, AssociationOverrideContainer>(getSubjectHolder()) { >@@ -86,5 +52,4 @@ > } > }; > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/AbstractOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/AbstractOverridesComposite.java,v >retrieving revision 1.4 >diff -u -r1.4 AbstractOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/details/AbstractOverridesComposite.java 6 Jan 2010 20:45:40 -0000 1.4 >+++ src/org/eclipse/jpt/ui/internal/details/AbstractOverridesComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -12,7 +12,6 @@ > import java.util.ArrayList; > import java.util.List; > import java.util.ListIterator; >- > import org.eclipse.jface.viewers.ILabelProvider; > import org.eclipse.jface.viewers.LabelProvider; > import org.eclipse.jpt.core.context.AssociationOverride; >@@ -47,85 +46,55 @@ > import org.eclipse.swt.widgets.Control; > import org.eclipse.ui.part.PageBook; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | | >- * | - Attribute Overrides --------------------------------------------------- | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | AddRemoveListPane | | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | >- * | | x Override Default | | >- * | | | | >- * | | --------------------------------------------------------------------- | | >- * | | | | | | >- * | | | PageBook (attribute/association override composite) | | | >- * | | | | | | >- * | | --------------------------------------------------------------------- | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @version 3.0 >- * @since 1.0 >- */ > @SuppressWarnings("nls") >-public abstract class AbstractOverridesComposite<T extends JpaContextNode> extends Pane<T> >+public abstract class AbstractOverridesComposite<T extends JpaContextNode> >+ extends Pane<T> > { > private Pane<AttributeOverride> attributeOverridePane; > private Pane<AssociationOverride> associationOverridePane; > > private WritablePropertyValueModel<BaseOverride> selectedOverrideHolder; > private WritablePropertyValueModel<Boolean> overrideVirtualOverrideHolder; >- >- /** >- * Creates a new <code>OverridesComposite</code>. >- * >- * @param parentPane The parent controller of this one >- * @param parent The parent container >- */ >- protected AbstractOverridesComposite(Pane<? extends T> parentPane, >- Composite parent) { >- >+ >+ >+ protected AbstractOverridesComposite( >+ Pane<? extends T> parentPane, >+ Composite parent) { >+ > super(parentPane, parent, false); > } >- >+ >+ > @Override > protected void initialize() { > super.initialize(); > this.selectedOverrideHolder = buildSelectedOverrideHolder(); > } >- >+ > private WritablePropertyValueModel<BaseOverride> buildSelectedOverrideHolder() { > return new SimplePropertyValueModel<BaseOverride>(); > } >- >+ > protected abstract boolean supportsAssociationOverrides(); >- >+ > @Override > protected void initializeLayout(Composite container) { >- > // Overrides group pane > container = addTitledGroup( >- container, >- JptUiDetailsMessages.OverridesComposite_attributeOverridesGroup >- ); >- >+ container, >+ JptUiDetailsMessages.OverridesComposite_attributeOverridesGroup); >+ > // Overrides list pane > initializeOverridesList(container); >- >+ > int groupBoxMargin = getGroupBoxMargin(); > > // Override Default check box > Button overrideCheckBox = addCheckBox( >- addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin), >- JptUiDetailsMessages.OverridesComposite_overrideDefault, >- getOverrideVirtualOverrideHolder(), >- null >- ); >+ addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin), >+ JptUiDetailsMessages.OverridesComposite_overrideDefault, >+ getOverrideVirtualOverrideHolder(), >+ null); > SWTTools.controlVisibleState(buildSelectedOverrideBooleanHolder(), overrideCheckBox); > > // Property pane >@@ -151,22 +120,20 @@ > } > > private void initializeOverridesList(Composite container) { >- > new AddRemoveListPane<T>( >- this, >- addSubPane(container, 8), >- buildOverridesAdapter(), >- buildOverridesListModel(), >- this.selectedOverrideHolder, >- buildOverrideLabelProvider(), >- JpaHelpContextIds.ENTITY_ATTRIBUTE_OVERRIDES >- ) >- { >+ this, >+ addSubPane(container, 8), >+ buildOverridesAdapter(), >+ buildOverridesListModel(), >+ this.selectedOverrideHolder, >+ buildOverrideLabelProvider(), >+ JpaHelpContextIds.ENTITY_ATTRIBUTE_OVERRIDES) { >+ > @Override > protected void initializeButtonPane(Composite container, String helpId) { > //no buttons: no way to add/remove/edit overrides, they are all defaulted in > } >- >+ > @Override > protected void updateButtons() { > //no buttons: no way to add/remove/edit overrides, they are all defaulted in >@@ -179,18 +146,17 @@ > this.attributeOverridePane = buildAttributeOverridePane(pageBook, attributeOverrideHolder); > installAttributeOverridePaneEnabler(this.attributeOverridePane, attributeOverrideHolder); > } >- >+ > protected Pane<AttributeOverride> buildAttributeOverridePane(PageBook pageBook, PropertyValueModel<AttributeOverride> attributeOverrideHolder) { > return new AttributeOverrideComposite(this, attributeOverrideHolder, pageBook); > } > > private void installAttributeOverridePaneEnabler(Pane<AttributeOverride> pane, PropertyValueModel<AttributeOverride> overrideHolder) { > new PaneEnabler( >- buildOverrideBooleanHolder(overrideHolder), >- pane >- ); >+ buildOverrideBooleanHolder(overrideHolder), >+ pane); > } >- >+ > private PropertyValueModel<Boolean> buildOverrideBooleanHolder(PropertyValueModel<? extends BaseOverride> overrideHolder) { > return new CachingTransformationPropertyValueModel<BaseOverride, Boolean>(overrideHolder) { > @Override >@@ -205,26 +171,25 @@ > this.associationOverridePane = buildAssociationOverridePane(pageBook, associationOverrideHolder); > installAssociationOverridePaneEnabler(this.associationOverridePane, associationOverrideHolder); > } >- >+ > protected Pane<AssociationOverride> buildAssociationOverridePane(PageBook pageBook, PropertyValueModel<AssociationOverride> associationOverrideHolder) { > return new AssociationOverrideComposite(this, associationOverrideHolder, pageBook); > } >- >+ > private void installAssociationOverridePaneEnabler(Pane<AssociationOverride> pane, PropertyValueModel<AssociationOverride> overrideHolder) { > new PaneEnabler( >- buildOverrideBooleanHolder(overrideHolder), >- pane >- ); >+ buildOverrideBooleanHolder(overrideHolder), >+ pane); > } >- >- private void installOverrideControlSwitcher(PropertyValueModel<BaseOverride> overrideHolder, >- PageBook pageBook) { >- >+ >+ private void installOverrideControlSwitcher( >+ PropertyValueModel<BaseOverride> overrideHolder, >+ PageBook pageBook) { >+ > new ControlSwitcher( >- overrideHolder, >- buildPaneTransformer(), >- pageBook >- ); >+ overrideHolder, >+ buildPaneTransformer(), >+ pageBook); > } > > private WritablePropertyValueModel<AssociationOverride> buildAssociationOverrideHolder() { >@@ -251,53 +216,52 @@ > protected ListIterator<AssociationOverride> listIterator_() { > return this.subject.virtualAssociationOverrides(); > } >- >+ > @Override > protected int size_() { > return this.subject.virtualAssociationOverridesSize(); > } > }; > } >- >+ > private ListValueModel<AttributeOverride> buildDefaultAttributeOverridesListHolder(PropertyValueModel<AttributeOverrideContainer> containerHolder) { > return new ListAspectAdapter<AttributeOverrideContainer, AttributeOverride>(containerHolder, AttributeOverrideContainer.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST) { > @Override > protected ListIterator<AttributeOverride> listIterator_() { > return this.subject.virtualAttributeOverrides(); > } >- >+ > @Override > protected int size_() { > return this.subject.virtualAttributeOverridesSize(); > } > }; > } >- >+ > protected WritablePropertyValueModel<Boolean> getOverrideVirtualOverrideHolder() { > if (this.overrideVirtualOverrideHolder == null) { > this.overrideVirtualOverrideHolder = buildOverrideVirtualOverrideHolder(); > } > return this.overrideVirtualOverrideHolder; > } >- >- >+ > private WritablePropertyValueModel<Boolean> buildOverrideVirtualOverrideHolder() { > return new CachingTransformationWritablePropertyValueModel<BaseOverride, Boolean>(this.selectedOverrideHolder) { > @Override > public void setValue(Boolean value) { > updateOverride(value.booleanValue()); > } >- >+ > @Override > protected Boolean transform_(BaseOverride value) { > return Boolean.valueOf(!value.isVirtual()); > } > }; > } >- >+ > private String buildOverrideDisplayString(BaseOverride override) { > String overrideType; >- >+ > // Retrieve the type > if (override instanceof AssociationOverride) { > overrideType = JptUiDetailsMessages.OverridesComposite_association; >@@ -305,14 +269,14 @@ > else { > overrideType = JptUiDetailsMessages.OverridesComposite_attribute; > } >- >+ > // Format the name > String name = override.getName(); >- >+ > if (StringTools.stringIsEmpty(name)) { > name = JptUiDetailsMessages.OverridesComposite_noName; > } >- >+ > // Format: <name> (Attribute/Association Override) > StringBuilder sb = new StringBuilder(); > sb.append(name); >@@ -321,7 +285,7 @@ > sb.append(") "); > return sb.toString(); > } >- >+ > protected ILabelProvider buildOverrideLabelProvider() { > return new LabelProvider() { > @Override >@@ -330,20 +294,19 @@ > } > }; > } >- >+ > protected Adapter buildOverridesAdapter() { > return new AddRemoveListPane.AbstractAdapter() { >- > public void addNewItem(ObjectListSelectionModel listSelectionModel) { > //no way to add/remove/edit overrides, they are all defaulted in > } >- >+ > public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { > //no way to add/remove/edit overrides, they are all defaulted in > } > }; > } >- >+ > protected ListValueModel<BaseOverride> buildOverridesListHolder() { > PropertyValueModel<AttributeOverrideContainer> attributeOverrideContainerHolder = buildAttributeOverrideContainerHolder(); > List<ListValueModel<? extends BaseOverride>> list = new ArrayList<ListValueModel<? extends BaseOverride>>(); >@@ -359,18 +322,17 @@ > > return new CompositeListValueModel<ListValueModel<? extends BaseOverride>, BaseOverride>(list); > } >- >+ > protected abstract PropertyValueModel<AttributeOverrideContainer> buildAttributeOverrideContainerHolder(); >- >+ > protected abstract PropertyValueModel<AssociationOverrideContainer> buildAssociationOverrideContainerHolder(); >- >+ > private ListValueModel<BaseOverride> buildOverridesListModel() { > return new ItemPropertyListValueModelAdapter<BaseOverride>( >- buildOverridesListHolder(), >- BaseOverride.NAME_PROPERTY >- ); >+ buildOverridesListHolder(), >+ BaseOverride.NAME_PROPERTY); > } >- >+ > private Transformer<BaseOverride, Control> buildPaneTransformer() { > return new Transformer<BaseOverride, Control>() { > public Control transform(BaseOverride override) { >@@ -378,7 +340,7 @@ > } > }; > } >- >+ > /** > * Given the selected override, return the control that will be displayed > */ >@@ -386,11 +348,11 @@ > if (selectedOverride instanceof AttributeOverride) { > return AbstractOverridesComposite.this.attributeOverridePane.getControl(); > } >- >+ > if (selectedOverride instanceof AssociationOverride) { > return AbstractOverridesComposite.this.associationOverridePane.getControl(); > } >- >+ > return null; > } > >@@ -400,39 +362,38 @@ > protected ListIterator<AssociationOverride> listIterator_() { > return this.subject.specifiedAssociationOverrides(); > } >- >+ > @Override > protected int size_() { > return this.subject.specifiedAssociationOverridesSize(); > } > }; > } >- >+ > private ListValueModel<AttributeOverride> buildSpecifiedAttributeOverridesListHolder(PropertyValueModel<AttributeOverrideContainer> containerHolder) { > return new ListAspectAdapter<AttributeOverrideContainer, AttributeOverride>(containerHolder, AttributeOverrideContainer.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST) { > @Override > protected ListIterator<AttributeOverride> listIterator_() { > return this.subject.specifiedAttributeOverrides(); > } >- >+ > @Override > protected int size_() { > return this.subject.specifiedAttributeOverridesSize(); > } > }; > } >- >+ > private void updateOverride(boolean selected) { >- > if (isPopulating()) { > return; > } >- >+ > setPopulating(true); >- >+ > try { > BaseOverride override = this.selectedOverrideHolder.getValue(); >- >+ > BaseOverride newOverride = override.setVirtual(!selected); > this.selectedOverrideHolder.setValue(newOverride); > } >@@ -440,4 +401,4 @@ > setPopulating(false); > } > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/IdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/IdMappingComposite.java,v >retrieving revision 1.3 >diff -u -r1.3 IdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/IdMappingComposite.java 2 Mar 2010 20:32:05 -0000 1.3 >+++ src/org/eclipse/jpt/ui/internal/details/IdMappingComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -14,53 +14,20 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | TemporalTypeComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | GenerationComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see IdMapping >- * @see ColumnComposite >- * @see TemporalTypeComposite >- * @see IdMappingGenerationComposite >- * >- * @version 2.3 >- * @since 1.0 >- */ >-public class IdMappingComposite extends AbstractIdMappingComposite<IdMapping> >+public class IdMappingComposite >+ extends AbstractIdMappingComposite<IdMapping> > { >- /** >- * Creates a new <code>IdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public IdMappingComposite(PropertyValueModel<? extends IdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public IdMappingComposite( >+ PropertyValueModel<? extends IdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ > @Override > protected void initializeIdSection(Composite container) { > new ColumnComposite(this, buildColumnHolder(), container); > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/EmbeddedIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/EmbeddedIdMappingComposite.java,v >retrieving revision 1.5 >diff -u -r1.5 EmbeddedIdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/EmbeddedIdMappingComposite.java 2 Mar 2010 20:32:08 -0000 1.5 >+++ src/org/eclipse/jpt/ui/internal/details/EmbeddedIdMappingComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -11,40 +11,25 @@ > > import org.eclipse.jpt.core.context.EmbeddedIdMapping; > import org.eclipse.jpt.ui.WidgetFactory; >-import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here's the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | EmbeddedAttributeOverridesComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedIdMapping >- * >- * @version 2.3 >- * @since 1.0 >- */ >-public class EmbeddedIdMappingComposite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> >- implements JpaComposite >+public class EmbeddedIdMappingComposite >+ extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> > { >- /** >- * Creates a new <code>EmbeddedIdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>EmbeddedIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public EmbeddedIdMappingComposite(PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public EmbeddedIdMappingComposite( >+ PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >-} >\ No newline at end of file >+ >+ >+ @Override >+ protected void initializeEmbeddedIdSection(Composite container) { >+ new EmbeddedMappingOverridesComposite( >+ this, >+ container); >+ } >+} >Index: src/org/eclipse/jpt/ui/internal/details/EmbeddedMappingOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/EmbeddedMappingOverridesComposite.java,v >retrieving revision 1.4 >diff -u -r1.4 EmbeddedMappingOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/details/EmbeddedMappingOverridesComposite.java 2 Mar 2010 20:32:05 -0000 1.4 >+++ src/org/eclipse/jpt/ui/internal/details/EmbeddedMappingOverridesComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -17,47 +17,17 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | AddRemoveListPane | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | | >- * | x Override Default | >- * | | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedMapping >- * @see EmbeddedMappingComposite - The parent container >- * @see ColumnComposite >- * >- * @version 2.3 >- * @since 1.0 >- */ >-public class EmbeddedMappingOverridesComposite extends AbstractEmbeddedMappingOverridesComposite<BaseEmbeddedMapping> >+public class EmbeddedMappingOverridesComposite >+ extends AbstractEmbeddedMappingOverridesComposite<BaseEmbeddedMapping> > { >- >- /** >- * Creates a new <code>EmbeddedAttributeOverridesComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param parent The parent container >- */ >- public EmbeddedMappingOverridesComposite(Pane<? extends BaseEmbeddedMapping> parentPane, >- Composite parent) { >- >+ public EmbeddedMappingOverridesComposite( >+ Pane<? extends BaseEmbeddedMapping> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } > >+ > @Override > protected boolean supportsAssociationOverrides() { > return false; >@@ -77,5 +47,4 @@ > protected PropertyValueModel<AssociationOverrideContainer> buildAssociationOverrideContainerHolder() { > throw new UnsupportedOperationException(); > } >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractEmbeddedMappingOverridesComposite.java >--- src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java 6 Jan 2010 20:45:40 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java 23 Mar 2010 17:21:09 -0000 >@@ -16,25 +16,17 @@ > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * @version 3.0 >- * @since 3.0 >- */ >-public abstract class AbstractEmbeddedMappingOverridesComposite<T extends BaseEmbeddedMapping> extends AbstractOverridesComposite<T> >+public abstract class AbstractEmbeddedMappingOverridesComposite<T extends BaseEmbeddedMapping> >+ extends AbstractOverridesComposite<T> > { >- >- /** >- * Creates a new <code>EmbeddedAttributeOverridesComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param parent The parent container >- */ >- protected AbstractEmbeddedMappingOverridesComposite(Pane<? extends T> parentPane, >- Composite parent) { >- >+ protected AbstractEmbeddedMappingOverridesComposite( >+ Pane<? extends T> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } >- >+ >+ > @Override > protected PropertyValueModel<AttributeOverrideContainer> buildAttributeOverrideContainerHolder() { > return new PropertyAspectAdapter<T, AttributeOverrideContainer>(getSubjectHolder()) { >@@ -44,6 +36,4 @@ > } > }; > } >- >- >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/ColumnComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/ColumnComposite.java,v >retrieving revision 1.6 >diff -u -r1.6 ColumnComposite.java >--- src/org/eclipse/jpt/ui/internal/details/ColumnComposite.java 11 Jan 2010 18:47:31 -0000 1.6 >+++ src/org/eclipse/jpt/ui/internal/details/ColumnComposite.java 23 Mar 2010 17:21:10 -0000 >@@ -11,7 +11,6 @@ > > import java.util.Collection; > import java.util.Iterator; >- > import org.eclipse.jpt.core.context.BaseColumn; > import org.eclipse.jpt.core.context.Column; > import org.eclipse.jpt.core.context.NamedColumn; >@@ -30,113 +29,40 @@ > import org.eclipse.osgi.util.NLS; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnCombo | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | TableCombo | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | | >- * | > Details | >- * | | >- * | x Insertable | >- * | | >- * | x Updatable | >- * | | >- * | x Unique | >- * | | >- * | x Nullable | >- * | | >- * | --------------- | >- * | Length: | I |I| Default (XXX) | >- * | --------------- | >- * | --------------- | >- * | Precision: | I |I| Default (XXX) | >- * | --------------- | >- * | --------------- | >- * | Scale: | I |I| Default (XXX) | >- * | --------------- | >- * | ---------------------------------------------------- | >- * | Column Definition: | I | | >- * | ---------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see Column >- * @see ColumnCombo >- * @see TableCombo >- * @see BasicMappingComposite - A container of this pane >- * @see EmbeddedMappingOverridesComposite - A container of this pane >- * @see IdMappingComposite - A container of this pane >- * @see VersionMappingComposite - A container of this pane >- * >- * @version 2.0 >- * @since 1.0 >- */ >-public class ColumnComposite extends Pane<Column> { >- >- /** >- * Creates a new <code>ColumnComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param subjectHolder The holder of the subject <code>IColumn</code> >- * @param parent The parent container >- */ >- public ColumnComposite(Pane<?> parentPane, >- PropertyValueModel<? extends Column> subjectHolder, >- Composite parent) { >- >+public class ColumnComposite >+ extends Pane<Column> >+{ >+ public ColumnComposite( >+ Pane<?> parentPane, >+ PropertyValueModel<? extends Column> subjectHolder, >+ Composite parent) { >+ > super(parentPane, subjectHolder, parent, false); > } >- >- /** >- * Creates a new <code>ColumnComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param subjectHolder The holder of the subject <code>IColumn</code> >- * @param parent The parent container >- * @param automaticallyAlignWidgets <code>true</code> to make the widgets >- * this pane aligned with the widgets of the given parent controller; >- * <code>false</code> to not align them >- */ >- public ColumnComposite(Pane<?> parentPane, >- PropertyValueModel<? extends Column> subjectHolder, >- Composite parent, >- boolean automaticallyAlignWidgets) { >- >+ >+ public ColumnComposite( >+ Pane<?> parentPane, >+ PropertyValueModel<? extends Column> subjectHolder, >+ Composite parent, >+ boolean automaticallyAlignWidgets) { >+ > super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); > } > >- /** >- * Creates a new <code>ColumnComposite</code>. >- * >- * @param parentPane The parent container of this one >- * @param subjectHolder The holder of the subject <code>IColumn</code> >- * @param parent The parent container >- * @param automaticallyAlignWidgets <code>true</code> to make the widgets >- * this pane aligned with the widgets of the given parent controller; >- * <code>false</code> to not align them >- */ >- public ColumnComposite(Pane<?> parentPane, >- PropertyValueModel<? extends Column> subjectHolder, >- Composite parent, >- boolean automaticallyAlignWidgets, >- boolean parentManagePane) { >- >+ public ColumnComposite( >+ Pane<?> parentPane, >+ PropertyValueModel<? extends Column> subjectHolder, >+ Composite parent, >+ boolean automaticallyAlignWidgets, >+ boolean parentManagePane) { >+ > super(parentPane, subjectHolder, parent, automaticallyAlignWidgets, parentManagePane); > } >- >+ >+ > private ColumnCombo<Column> addColumnCombo(Composite container) { >- >+ > return new ColumnCombo<Column>(this, container) { >- > @Override > protected void addPropertyNames(Collection<String> propertyNames) { > super.addPropertyNames(propertyNames); >@@ -145,7 +71,7 @@ > propertyNames.add(BaseColumn.DEFAULT_TABLE_PROPERTY); > propertyNames.add(BaseColumn.SPECIFIED_TABLE_PROPERTY); > } >- >+ > @Override > protected void propertyChanged(String propertyName) { > if (propertyName == BaseColumn.DEFAULT_TABLE_PROPERTY || >@@ -155,40 +81,48 @@ > super.propertyChanged(propertyName); > } > } >- >+ > @Override > protected String getDefaultValue() { > return getSubject().getDefaultName(); > } >- >+ > @Override > protected void setValue(String value) { > getSubject().setSpecifiedName(value); > } >- >+ > @Override > protected Table getDbTable_() { > return getSubject().getDbTable(); > } >- >+ > @Override > protected String getValue() { > return getSubject().getSpecifiedName(); > } >+ >+ @Override >+ protected String buildNullDefaultValueEntry() { >+ return NLS.bind( >+ JptUiDetailsMessages.DefaultWithOneParam, >+ JptUiDetailsMessages.NoneSelected); >+ } >+ > @Override > public String toString() { > return "ColumnComposite.columnCombo"; //$NON-NLS-1$ > } > }; > } >- >+ > private WritablePropertyValueModel<String> buildColumnDefinitionHolder() { > return new PropertyAspectAdapter<Column, String>(getSubjectHolder(), NamedColumn.COLUMN_DEFINITION_PROPERTY) { > @Override > protected String buildValue_() { > return this.subject.getColumnDefinition(); > } >- >+ > @Override > protected void setValue_(String value) { > if (value.length() == 0) { >@@ -212,7 +146,7 @@ > } > }; > } >- >+ > private PropertyValueModel<String> buildInsertableStringHolder() { > return new TransformationPropertyValueModel<Boolean, String>(buildDefaultInsertableHolder()) { > @Override >@@ -228,10 +162,10 @@ > > private PropertyValueModel<Boolean> buildDefaultInsertableHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, >- BaseColumn.DEFAULT_INSERTABLE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, >+ BaseColumn.DEFAULT_INSERTABLE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > if (this.subject.getSpecifiedInsertable() != null) { >@@ -241,24 +175,24 @@ > } > }; > } >- >+ > private WritablePropertyValueModel<Boolean> buildNullableHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_NULLABLE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_NULLABLE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > return this.subject.getSpecifiedNullable(); > } >- >+ > @Override > protected void setValue_(Boolean value) { > this.subject.setSpecifiedNullable(value); > } > }; > } >- >+ > private PropertyValueModel<String> buildNullableStringHolder() { > return new TransformationPropertyValueModel<Boolean, String>(buildDefaultNullableHolder()) { > @Override >@@ -274,10 +208,10 @@ > > private PropertyValueModel<Boolean> buildDefaultNullableHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_NULLABLE_PROPERTY, >- BaseColumn.DEFAULT_NULLABLE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_NULLABLE_PROPERTY, >+ BaseColumn.DEFAULT_NULLABLE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > if (this.subject.getSpecifiedNullable() != null) { >@@ -287,69 +221,77 @@ > } > }; > } >- >+ > private Pane<Column> addTableCombo(Composite container) { >- >+ > return new DatabaseObjectCombo<Column>(this, container) { >- >+ > @Override > protected void addPropertyNames(Collection<String> propertyNames) { > super.addPropertyNames(propertyNames); > propertyNames.add(BaseColumn.DEFAULT_TABLE_PROPERTY); > propertyNames.add(BaseColumn.SPECIFIED_TABLE_PROPERTY); > } >- >+ > @Override > protected String getDefaultValue() { > return this.getSubject().getDefaultTable(); > } >- >+ > @Override > protected void setValue(String value) { > this.getSubject().setSpecifiedTable(value); > } >- >+ > @Override > protected String getValue() { > return this.getSubject().getSpecifiedTable(); > } >- >+ > @Override > protected Iterable<String> getValues_() { > return CollectionTools.iterable(this.values()); > } >- >+ > protected Iterator<String> values() { > return this.getSubject().candidateTableNames(); > } >+ >+ @Override >+ protected String buildNullDefaultValueEntry() { >+ return NLS.bind( >+ JptUiDetailsMessages.DefaultWithOneParam, >+ JptUiDetailsMessages.NoneSelected); >+ } >+ > @Override > public String toString() { > return "ColumnComposite.tableCombo"; //$NON-NLS-1$ > } > }; > } >- >+ > private WritablePropertyValueModel<Boolean> buildUniqueHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_UNIQUE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_UNIQUE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > return this.subject.getSpecifiedUnique(); > } >- >+ > @Override > protected void setValue_(Boolean value) { > this.subject.setSpecifiedUnique(value); > } > }; > } >- >+ > private PropertyValueModel<String> buildUniqueStringHolder() { >- >+ > return new TransformationPropertyValueModel<Boolean, String>(buildDefaultUniqueHolder()) { >- >+ > @Override > protected String transform(Boolean value) { > if (value != null) { >@@ -363,10 +305,10 @@ > > private PropertyValueModel<Boolean> buildDefaultUniqueHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_UNIQUE_PROPERTY, >- BaseColumn.DEFAULT_UNIQUE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_UNIQUE_PROPERTY, >+ BaseColumn.DEFAULT_UNIQUE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > if (this.subject.getSpecifiedUnique() != null) { >@@ -376,29 +318,29 @@ > } > }; > } >- >+ > private WritablePropertyValueModel<Boolean> buildUpdatableHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.DEFAULT_UPDATABLE_PROPERTY, >- BaseColumn.SPECIFIED_UPDATABLE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.DEFAULT_UPDATABLE_PROPERTY, >+ BaseColumn.SPECIFIED_UPDATABLE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > return this.subject.getSpecifiedUpdatable(); > } >- >+ > @Override > protected void setValue_(Boolean value) { > this.subject.setSpecifiedUpdatable(value); > } > }; > } >- >+ > private PropertyValueModel<String> buildUpdatableStringHolder() { >- >+ > return new TransformationPropertyValueModel<Boolean, String>(buildDefaultUpdatableHolder()) { >- >+ > @Override > protected String transform(Boolean value) { > if (value != null) { >@@ -412,10 +354,10 @@ > > private PropertyValueModel<Boolean> buildDefaultUpdatableHolder() { > return new PropertyAspectAdapter<Column, Boolean>( >- getSubjectHolder(), >- BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, >- BaseColumn.DEFAULT_UPDATABLE_PROPERTY) >- { >+ getSubjectHolder(), >+ BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, >+ BaseColumn.DEFAULT_UPDATABLE_PROPERTY) { >+ > @Override > protected Boolean buildValue_() { > if (this.subject.getSpecifiedUpdatable() != null) { >@@ -425,115 +367,104 @@ > } > }; > } >- >+ > @Override > protected void initializeLayout(Composite container) { >- > // Column group pane > container = addTitledGroup( >- container, >- JptUiDetailsMessages.ColumnComposite_columnSection >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_columnSection); >+ > // Column widgets > addLabeledComposite( >- container, >- JptUiDetailsMessages.ColumnComposite_name, >- addColumnCombo(container), >- JpaHelpContextIds.MAPPING_COLUMN >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_name, >+ addColumnCombo(container), >+ JpaHelpContextIds.MAPPING_COLUMN); >+ > // Table widgets > addLabeledComposite( >- container, >- JptUiDetailsMessages.ColumnComposite_table, >- addTableCombo(container), >- JpaHelpContextIds.MAPPING_COLUMN_TABLE >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_table, >+ addTableCombo(container), >+ JpaHelpContextIds.MAPPING_COLUMN_TABLE); >+ > // Details sub-pane > container = addCollapsibleSubSection( >- container, >- JptUiDetailsMessages.ColumnComposite_details, >- new SimplePropertyValueModel<Boolean>(Boolean.FALSE) >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_details, >+ new SimplePropertyValueModel<Boolean>(Boolean.FALSE)); >+ > new DetailsComposite(this, getSubjectHolder(), addSubPane(container, 0, 16)); > } > > protected class DetailsComposite extends Pane<Column> { > >- public DetailsComposite(Pane<?> parentPane, >- PropertyValueModel<? extends Column> subjectHolder, >- Composite parent) { >- >+ public DetailsComposite( >+ Pane<?> parentPane, >+ PropertyValueModel<? extends Column> subjectHolder, >+ Composite parent) { >+ > super(parentPane, subjectHolder, parent, false); > } >- >+ > @Override > protected void initializeLayout(Composite container) { >- > // Insertable tri-state check box > addTriStateCheckBoxWithDefault( >- addSubPane(container, 4), >- JptUiDetailsMessages.ColumnComposite_insertable, >- buildInsertableHolder(), >- buildInsertableStringHolder(), >- JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE >- ); >- >+ addSubPane(container, 4), >+ JptUiDetailsMessages.ColumnComposite_insertable, >+ buildInsertableHolder(), >+ buildInsertableStringHolder(), >+ JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE); >+ > // Updatable tri-state check box > addTriStateCheckBoxWithDefault( >- container, >- JptUiDetailsMessages.ColumnComposite_updatable, >- buildUpdatableHolder(), >- buildUpdatableStringHolder(), >- JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_updatable, >+ buildUpdatableHolder(), >+ buildUpdatableStringHolder(), >+ JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE); >+ > // Unique tri-state check box > addTriStateCheckBoxWithDefault( >- container, >- JptUiDetailsMessages.ColumnComposite_unique, >- buildUniqueHolder(), >- buildUniqueStringHolder(), >- JpaHelpContextIds.MAPPING_COLUMN_UNIQUE >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_unique, >+ buildUniqueHolder(), >+ buildUniqueStringHolder(), >+ JpaHelpContextIds.MAPPING_COLUMN_UNIQUE); >+ > // Nullable tri-state check box > addTriStateCheckBoxWithDefault( >- container, >- JptUiDetailsMessages.ColumnComposite_nullable, >- buildNullableHolder(), >- buildNullableStringHolder(), >- JpaHelpContextIds.MAPPING_COLUMN_NULLABLE >- ); >- >+ container, >+ JptUiDetailsMessages.ColumnComposite_nullable, >+ buildNullableHolder(), >+ buildNullableStringHolder(), >+ JpaHelpContextIds.MAPPING_COLUMN_NULLABLE); >+ > addLengthCombo(container); > addPrecisionCombo(container); > addScaleCombo(container); >- >+ > // Column Definition widgets > addLabeledText( >- container, >- JptUiDetailsMessages.ColumnComposite_columnDefinition, >- buildColumnDefinitionHolder() >- ); >+ container, >+ JptUiDetailsMessages.ColumnComposite_columnDefinition, >+ buildColumnDefinitionHolder()); > } >- >+ > private void addLengthCombo(Composite container) { > new IntegerCombo<Column>(this, container) { >- > @Override > protected String getLabelText() { > return JptUiDetailsMessages.ColumnComposite_length; > } >- >+ > @Override > protected String getHelpId() { > return JpaHelpContextIds.MAPPING_COLUMN_LENGTH; > } >- >+ > @Override > protected PropertyValueModel<Integer> buildDefaultHolder() { > return new PropertyAspectAdapter<Column, Integer>(getSubjectHolder(), Column.DEFAULT_LENGTH_PROPERTY) { >@@ -551,7 +482,7 @@ > protected Integer buildValue_() { > return this.subject.getSpecifiedLength(); > } >- >+ > @Override > protected void setValue_(Integer value) { > this.subject.setSpecifiedLength(value); >@@ -560,20 +491,19 @@ > } > }; > } >- >+ > private void addPrecisionCombo(Composite container) { >- new IntegerCombo<Column>(this, container) { >- >+ new IntegerCombo<Column>(this, container) { > @Override > protected String getLabelText() { > return JptUiDetailsMessages.ColumnComposite_precision; > } >- >+ > @Override > protected String getHelpId() { > return JpaHelpContextIds.MAPPING_COLUMN_PRECISION; > } >- >+ > @Override > protected PropertyValueModel<Integer> buildDefaultHolder() { > return new PropertyAspectAdapter<Column, Integer>(getSubjectHolder(), Column.DEFAULT_PRECISION_PROPERTY) { >@@ -591,7 +521,7 @@ > protected Integer buildValue_() { > return this.subject.getSpecifiedPrecision(); > } >- >+ > @Override > protected void setValue_(Integer value) { > this.subject.setSpecifiedPrecision(value); >@@ -600,20 +530,19 @@ > } > }; > } >- >+ > private void addScaleCombo(Composite container) { >- new IntegerCombo<Column>(this, container) { >- >+ new IntegerCombo<Column>(this, container) { > @Override > protected String getLabelText() { > return JptUiDetailsMessages.ColumnComposite_scale; > } >- >+ > @Override > protected String getHelpId() { > return JpaHelpContextIds.MAPPING_COLUMN_SCALE; > } >- >+ > @Override > protected PropertyValueModel<Integer> buildDefaultHolder() { > return new PropertyAspectAdapter<Column, Integer>(getSubjectHolder(), Column.DEFAULT_SCALE_PROPERTY) { >@@ -631,7 +560,7 @@ > protected Integer buildValue_() { > return this.subject.getSpecifiedScale(); > } >- >+ > @Override > protected void setValue_(Integer value) { > this.subject.setSpecifiedScale(value); >@@ -641,4 +570,4 @@ > }; > } > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/AbstractIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/AbstractIdMappingComposite.java,v >retrieving revision 1.7 >diff -u -r1.7 AbstractIdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/AbstractIdMappingComposite.java 2 Mar 2010 20:32:09 -0000 1.7 >+++ src/org/eclipse/jpt/ui/internal/details/AbstractIdMappingComposite.java 23 Mar 2010 17:21:09 -0000 >@@ -27,53 +27,19 @@ > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | ColumnComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | TemporalTypeComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | GenerationComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see IdMapping >- * @see ColumnComposite >- * @see TemporalTypeComposite >- * @see IdMappingGenerationComposite >- * >- * @version 2.3 >- * @since 1.0 >- */ > public abstract class AbstractIdMappingComposite<T extends IdMapping> > extends Pane<T> > implements JpaComposite > { >- /** >- * Creates a new <code>IdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public AbstractIdMappingComposite(PropertyValueModel<? extends T> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public AbstractIdMappingComposite( >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeLayout(Composite container) { > initializeIdCollapsibleSection(container); >@@ -83,49 +49,47 @@ > > protected void initializeIdCollapsibleSection(Composite container) { > container = addCollapsibleSection( >- container, >- JptUiDetailsMessages.IdSection_title, >- new SimplePropertyValueModel<Boolean>(Boolean.TRUE) >- ); >+ container, >+ JptUiDetailsMessages.IdSection_title, >+ new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); > > this.initializeIdSection(container); > } >- >+ > protected abstract void initializeIdSection(Composite container); >- >+ > protected void initializeTypeCollapsibleSection(Composite container) { > container = addCollapsibleSection( >- container, >- JptUiDetailsMessages.TypeSection_type >- ); >+ container, >+ JptUiDetailsMessages.TypeSection_type); > this.initializeTypeSection(container); > } > > protected void initializeTypeSection(Composite container) { > ((GridLayout) container.getLayout()).numColumns = 2; >- >+ > // No converter > Button noConverterButton = addRadioButton( >- container, >- JptUiDetailsMessages.TypeSection_default, >- buildConverterBooleanHolder(Converter.NO_CONVERTER), >- null); >+ container, >+ JptUiDetailsMessages.TypeSection_default, >+ buildConverterBooleanHolder(Converter.NO_CONVERTER), >+ null); > ((GridData) noConverterButton.getLayoutData()).horizontalSpan = 2; > > PropertyValueModel<Converter> converterHolder = buildConverterHolder(); > // Temporal > addRadioButton( >- container, >- JptUiDetailsMessages.TypeSection_temporal, >- buildConverterBooleanHolder(Converter.TEMPORAL_CONVERTER), >- null); >+ container, >+ JptUiDetailsMessages.TypeSection_temporal, >+ buildConverterBooleanHolder(Converter.TEMPORAL_CONVERTER), >+ null); > registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); > } >- >+ > protected void initializeGenerationCollapsibleSection(Composite container) { > new IdMappingGenerationComposite(this, container); > } >- >+ > protected PropertyValueModel<? extends Column> buildColumnHolder() { > return new TransformationPropertyValueModel<T, Column>(getSubjectHolder()) { > @Override >@@ -134,7 +98,7 @@ > } > }; > } >- >+ > protected WritablePropertyValueModel<Boolean> buildConverterBooleanHolder(final String converterType) { > return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), ConvertibleMapping.CONVERTER_PROPERTY) { > @Override >@@ -142,7 +106,7 @@ > Converter converter = this.subject.getConverter(); > return Boolean.valueOf(converter.getType() == converterType); > } >- >+ > @Override > protected void setValue_(Boolean value) { > if (value.booleanValue()) { >@@ -151,8 +115,7 @@ > } > }; > } >- >- >+ > protected PropertyValueModel<Converter> buildConverterHolder() { > return new PropertyAspectAdapter<T, Converter>(getSubjectHolder(), ConvertibleMapping.CONVERTER_PROPERTY) { > @Override >@@ -170,4 +133,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java,v >retrieving revision 1.1 >diff -u -r1.1 OrmEmbeddedIdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java 2 Mar 2010 20:32:15 -0000 1.1 >+++ src/org/eclipse/jpt/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java 23 Mar 2010 17:21:11 -0000 >@@ -14,51 +14,28 @@ > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.details.AbstractEmbeddedIdMappingComposite; > import org.eclipse.jpt.ui.internal.details.EmbeddedMappingOverridesComposite; >-import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here's the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | EmbeddedAttributeOverridesComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedIdMapping >- * @see BaseJavaUiFactory - The factory creating this pane >- * >- * @version 2.3 >- * @since 2.2 >- */ >-public class OrmEmbeddedIdMappingComposite extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >- implements JpaComposite >+public class OrmEmbeddedIdMappingComposite >+ extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >+ implements JpaComposite > { >- /** >- * Creates a new <code>EclipseLink1_1OrmEmbeddedIdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>EmbeddedIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public OrmEmbeddedIdMappingComposite(PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEmbeddedIdMappingComposite( >+ PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ > @Override > protected void initializeEmbeddedIdSection(Composite container) { > new OrmMappingNameChooser(this, getSubjectHolder(), container); > > new EmbeddedMappingOverridesComposite( >- this, >- container >- ); >- } >-} >\ No newline at end of file >+ this, >+ container); >+ } >+} >Index: src/org/eclipse/jpt/ui/internal/details/orm/OrmIdMappingComposite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/orm/OrmIdMappingComposite.java,v >retrieving revision 1.1 >diff -u -r1.1 OrmIdMappingComposite.java >--- src/org/eclipse/jpt/ui/internal/details/orm/OrmIdMappingComposite.java 2 Mar 2010 20:32:16 -0000 1.1 >+++ src/org/eclipse/jpt/ui/internal/details/orm/OrmIdMappingComposite.java 23 Mar 2010 17:21:11 -0000 >@@ -13,22 +13,24 @@ > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite; > import org.eclipse.jpt.ui.internal.details.ColumnComposite; >-import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-public class OrmIdMappingComposite extends AbstractIdMappingComposite<OrmIdMapping> >+public class OrmIdMappingComposite >+ extends AbstractIdMappingComposite<OrmIdMapping> > { >- public OrmIdMappingComposite(PropertyValueModel<? extends OrmIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmIdMappingComposite( >+ PropertyValueModel<? extends OrmIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeIdSection(Composite container) { > new ColumnComposite(this, buildColumnHolder(), container); > new OrmMappingNameChooser(this, getSubjectHolder(), container); > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java,v >retrieving revision 1.5 >diff -u -r1.5 Generic2_0JavaUiFactory.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java 30 Nov 2009 21:26:12 -0000 1.5 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java 23 Mar 2010 17:21:11 -0000 >@@ -10,6 +10,7 @@ > package org.eclipse.jpt.ui.internal.jpa2.details.java; > > import org.eclipse.jpt.core.context.java.JavaEmbeddable; >+import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; > import org.eclipse.jpt.core.context.java.JavaEmbeddedMapping; > import org.eclipse.jpt.core.context.java.JavaEntity; > import org.eclipse.jpt.core.context.java.JavaIdMapping; >@@ -23,6 +24,7 @@ > import org.eclipse.jpt.ui.details.JpaComposite; > import org.eclipse.jpt.ui.internal.details.java.BaseJavaUiFactory; > import org.eclipse.jpt.ui.internal.jpa2.details.ElementCollectionMapping2_0Composite; >+import org.eclipse.jpt.ui.internal.jpa2.details.EmbeddedIdMapping2_0Composite; > import org.eclipse.jpt.ui.internal.persistence.details.GenericPersistenceXmlUiFactory; > import org.eclipse.jpt.ui.jpa2.details.java.JavaUiFactory2_0; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; >@@ -41,6 +43,7 @@ > extends BaseJavaUiFactory > implements JavaUiFactory2_0 > { >+ // **************** java type mapping composites *************************** > > @Override > public JpaComposite createJavaMappedSuperclassComposite( >@@ -62,7 +65,10 @@ > Composite parent, WidgetFactory widgetFactory) { > return new JavaEmbeddable2_0Composite(subjectHolder, parent, widgetFactory); > } >- >+ >+ >+ // **************** java attribute mapping composites ********************** >+ > @Override > public JpaComposite createJavaIdMappingComposite( > PropertyValueModel<JavaIdMapping> subjectHolder, >@@ -72,6 +78,14 @@ > } > > @Override >+ public JpaComposite createJavaEmbeddedIdMappingComposite( >+ PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ return new EmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); >+ } >+ >+ @Override > public JpaComposite createJavaEmbeddedMappingComposite( > PropertyValueModel<JavaEmbeddedMapping> subjectHolder, > Composite parent, >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java,v >retrieving revision 1.2 >diff -u -r1.2 JavaIdMapping2_0Composite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java 2 Mar 2010 20:32:04 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java 23 Mar 2010 17:21:11 -0000 >@@ -13,36 +13,31 @@ > import org.eclipse.jpt.ui.WidgetFactory; > import org.eclipse.jpt.ui.internal.details.AbstractIdMappingComposite; > import org.eclipse.jpt.ui.internal.details.ColumnComposite; >+import org.eclipse.jpt.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; > import org.eclipse.jpt.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * JavaIdMapping2_0Composite >- */ >-public class JavaIdMapping2_0Composite extends AbstractIdMappingComposite<IdMapping> >+public class JavaIdMapping2_0Composite >+ extends AbstractIdMappingComposite<IdMapping> > { >- /** >- * Creates a new <code>IdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>IIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public JavaIdMapping2_0Composite(PropertyValueModel<? extends IdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public JavaIdMapping2_0Composite( >+ PropertyValueModel<? extends IdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeIdSection(Composite container) { >+ new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); > new ColumnComposite(this, buildColumnHolder(), container); > } >- >+ > @Override > protected void initializeGenerationCollapsibleSection(Composite container) { > new IdMappingGeneration2_0Composite(this, addSubPane(container, 10)); > } >-} >\ No newline at end of file >+} >Index: property_files/jpt_ui_details2_0.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details2_0.properties,v >retrieving revision 1.12 >diff -u -r1.12 jpt_ui_details2_0.properties >--- property_files/jpt_ui_details2_0.properties 3 Mar 2010 21:18:37 -0000 1.12 >+++ property_files/jpt_ui_details2_0.properties 23 Mar 2010 17:21:09 -0000 >@@ -30,6 +30,9 @@ > Entity_cacheableLabel=Cacheable > Entity_cacheableWithDefaultLabel=Cacheable ({0}) > >+EmbeddedIdMapping2_0MappedByRelationshipPane_label=This embedded ID is mapped by a relationship >+IdMapping2_0MappedByRelationshipPane_label=This ID is mapped by a relationship >+ > OrderingComposite_orderColumn=Order column > > OrphanRemoval2_0Composite_orphanRemovalLabel=Orphan removal >Index: property_files/jpt_ui_details.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_details.properties,v >retrieving revision 1.7 >diff -u -r1.7 jpt_ui_details.properties >--- property_files/jpt_ui_details.properties 2 Mar 2010 20:32:18 -0000 1.7 >+++ property_files/jpt_ui_details.properties 23 Mar 2010 17:21:09 -0000 >@@ -28,10 +28,10 @@ > > BasicSection_title=Basic > EmbeddedSection_title=Embedded >-EmbeddedIdSection_title=Embedded Id >+EmbeddedIdSection_title=Embedded ID > EmbeddableSection_title=Embeddable > EntitySection_title=Entity >-IdSection_title=Id >+IdSection_title=ID > ManyToManySection_title=Many to Many > ManyToOneSection_title=Many to One > MappedSuperclassSection_title=Mapped Superclass >@@ -41,8 +41,8 @@ > > BasicMappingUiProvider_label=Basic > EmbeddedMappingUiProvider_label=Embedded >-EmbeddedIdMappingUiProvider_label=Embedded Id >-IdMappingUiProvider_label=Id >+EmbeddedIdMappingUiProvider_label=Embedded ID >+IdMappingUiProvider_label=ID > OneToManyMappingUiProvider_label=One to Many > OneToOneMappingUiProvider_label=One to One > ManyToManyMappingUiProvider_label=Many to Many >@@ -51,8 +51,8 @@ > VersionMappingUiProvider_label=Version > BasicMappingUiProvider_linkLabel=basic > EmbeddedMappingUiProvider_linkLabel=embedded >-EmbeddedIdMappingUiProvider_linkLabel=embedded id >-IdMappingUiProvider_linkLabel=id >+EmbeddedIdMappingUiProvider_linkLabel=embedded ID >+IdMappingUiProvider_linkLabel=ID > OneToManyMappingUiProvider_linkLabel=one to many > OneToOneMappingUiProvider_linkLabel=one to one > ManyToManyMappingUiProvider_linkLabel=many to many >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java,v >retrieving revision 1.6 >diff -u -r1.6 OrmEmbeddedIdMapping2_0Composite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java 2 Mar 2010 20:32:01 -0000 1.6 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java 23 Mar 2010 17:21:11 -0000 >@@ -17,53 +17,31 @@ > import org.eclipse.jpt.ui.internal.details.AccessTypeComposite; > import org.eclipse.jpt.ui.internal.details.EmbeddedMappingOverridesComposite; > import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; >+import org.eclipse.jpt.ui.internal.jpa2.details.EmbeddedIdMapping2_0MappedByRelationshipPane; > import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-/** >- * Here's the layout of this pane: >- * <pre> >- * ----------------------------------------------------------------------------- >- * | ------------------------------------------------------------------------- | >- * | | | | >- * | | EmbeddedAttributeOverridesComposite | | >- * | | | | >- * | ------------------------------------------------------------------------- | >- * -----------------------------------------------------------------------------</pre> >- * >- * @see EmbeddedIdMapping >- * @see BaseJavaUiFactory - The factory creating this pane >- * >- * @version 2.3 >- * @since 2.2 >- */ >-public class OrmEmbeddedIdMapping2_0Composite extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >- implements JpaComposite >+public class OrmEmbeddedIdMapping2_0Composite >+ extends AbstractEmbeddedIdMappingComposite<OrmEmbeddedIdMapping> >+ implements JpaComposite > { >- /** >- * Creates a new <code>EclipseLink1_1OrmEmbeddedIdMappingComposite</code>. >- * >- * @param subjectHolder The holder of the subject <code>EmbeddedIdMapping</code> >- * @param parent The parent container >- * @param widgetFactory The factory used to create various common widgets >- */ >- public OrmEmbeddedIdMapping2_0Composite(PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmEmbeddedIdMapping2_0Composite( >+ PropertyValueModel<? extends OrmEmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } > >+ > @Override > protected void initializeEmbeddedIdSection(Composite container) { > new OrmMappingNameChooser(this, getSubjectHolder(), container); > new AccessTypeComposite(this, buildAccessHolderHolder(), container); >- >- new EmbeddedMappingOverridesComposite( >- this, >- container >- ); >+ >+ new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); >+ new EmbeddedMappingOverridesComposite(this, container); > } > > protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { >@@ -74,4 +52,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java,v >retrieving revision 1.2 >diff -u -r1.2 OrmIdMapping2_0Composite.java >--- src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java 2 Mar 2010 20:32:02 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java 23 Mar 2010 17:21:11 -0000 >@@ -16,22 +16,27 @@ > import org.eclipse.jpt.ui.internal.details.AccessTypeComposite; > import org.eclipse.jpt.ui.internal.details.ColumnComposite; > import org.eclipse.jpt.ui.internal.details.orm.OrmMappingNameChooser; >+import org.eclipse.jpt.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; > import org.eclipse.jpt.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; > import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; > import org.eclipse.jpt.utility.model.value.PropertyValueModel; > import org.eclipse.swt.widgets.Composite; > >-public class OrmIdMapping2_0Composite extends AbstractIdMappingComposite<OrmIdMapping> >+public class OrmIdMapping2_0Composite >+ extends AbstractIdMappingComposite<OrmIdMapping> > { >- public OrmIdMapping2_0Composite(PropertyValueModel<? extends OrmIdMapping> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory) { >- >+ public OrmIdMapping2_0Composite( >+ PropertyValueModel<? extends OrmIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected void initializeIdSection(Composite container) { >+ new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); > new ColumnComposite(this, buildColumnHolder(), container); > new OrmMappingNameChooser(this, getSubjectHolder(), container); > new AccessTypeComposite(this, buildAccessHolderHolder(), container); >@@ -50,4 +55,4 @@ > } > }; > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/ui/internal/details/db/ColumnCombo.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/db/ColumnCombo.java,v >retrieving revision 1.3 >diff -u -r1.3 ColumnCombo.java >--- src/org/eclipse/jpt/ui/internal/details/db/ColumnCombo.java 19 Dec 2009 06:03:23 -0000 1.3 >+++ src/org/eclipse/jpt/ui/internal/details/db/ColumnCombo.java 23 Mar 2010 17:21:11 -0000 >@@ -23,41 +23,45 @@ > public abstract class ColumnCombo<T extends JpaNode> > extends DatabaseObjectCombo<T> > { >- public ColumnCombo(Pane<? extends T> parentPane, Composite parent) { >+ public ColumnCombo( >+ Pane<? extends T> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } >- >+ > public ColumnCombo( >- Pane<?> parentPane, >- PropertyValueModel<? extends T> subjectHolder, >- Composite parent >- ) { >+ Pane<?> parentPane, >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent) { >+ > super(parentPane, subjectHolder, parent); > } >- >+ > public ColumnCombo( >- PropertyValueModel<? extends T> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory >- ) { >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected Iterable<String> getValues_() { > Table dbTable = this.getDbTable(); > return (dbTable != null) ? dbTable.getSortedColumnIdentifiers() : EmptyIterable.<String>instance(); > } >- >+ > protected Table getDbTable() { > return (this.getSubject() == null) ? null : this.getDbTable_(); > } >- >+ > /** > * Assume the subject is not null. > */ > protected abstract Table getDbTable_(); >- >+ > @Override > protected void tableChanged_(Table table) { > super.tableChanged_(table); >@@ -65,5 +69,4 @@ > this.doPopulate(); > } > } >- > } >Index: src/org/eclipse/jpt/ui/internal/details/db/TableCombo.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/db/TableCombo.java,v >retrieving revision 1.3 >diff -u -r1.3 TableCombo.java >--- src/org/eclipse/jpt/ui/internal/details/db/TableCombo.java 19 Dec 2009 06:03:22 -0000 1.3 >+++ src/org/eclipse/jpt/ui/internal/details/db/TableCombo.java 23 Mar 2010 17:21:11 -0000 >@@ -23,32 +23,36 @@ > public abstract class TableCombo<T extends JpaNode> > extends DatabaseObjectCombo<T> > { >- public TableCombo(Pane<? extends T> parentPane, Composite parent) { >+ public TableCombo( >+ Pane<? extends T> parentPane, >+ Composite parent) { >+ > super(parentPane, parent); > } >- >+ > public TableCombo( >- Pane<?> parentPane, >- PropertyValueModel<? extends T> subjectHolder, >- Composite parent >- ) { >+ Pane<?> parentPane, >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent) { >+ > super(parentPane, subjectHolder, parent); > } >- >+ > public TableCombo( >- PropertyValueModel<? extends T> subjectHolder, >- Composite parent, >- WidgetFactory widgetFactory >- ) { >+ PropertyValueModel<? extends T> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ > super(subjectHolder, parent, widgetFactory); > } >- >+ >+ > @Override > protected Iterable<String> getValues_() { > Schema dbSchema = this.getDbSchema(); > return (dbSchema != null) ? dbSchema.getSortedTableIdentifiers() : EmptyIterable.<String>instance(); > } >- >+ > protected Schema getDbSchema() { > return (this.getSubject() == null) ? null : this.getDbSchema_(); > } >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java >=================================================================== >RCS file: src/org/eclipse/jpt/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java >diff -N src/org/eclipse/jpt/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,44 @@ >+package org.eclipse.jpt.ui.internal.jpa2.details; >+ >+import org.eclipse.jpt.core.jpa2.context.IdMapping2_0; >+import org.eclipse.jpt.ui.internal.widgets.Pane; >+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; >+import org.eclipse.jpt.utility.model.value.PropertyValueModel; >+import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Composite; >+ >+ >+public class IdMapping2_0MappedByRelationshipPane<T extends IdMapping2_0> >+ extends Pane<T> >+{ >+ public IdMapping2_0MappedByRelationshipPane( >+ Pane<?> parentPane, >+ PropertyValueModel<T> subjectHolder, >+ Composite parent) { >+ >+ super(parentPane, subjectHolder, parent); >+ } >+ >+ >+ @Override >+ protected void initializeLayout(Composite container) { >+ Composite subContainer = addSubPane(container, 2, 0, 0, 0, 0); >+ Button checkBox = addCheckBox( >+ subContainer, >+ null, >+ buildIsMappedByRelationshipHolder(), >+ null); >+ checkBox.setEnabled(false); >+ addLabel(subContainer, JptUiDetailsMessages2_0.IdMapping2_0MappedByRelationshipPane_label); >+ } >+ >+ protected WritablePropertyValueModel<Boolean> buildIsMappedByRelationshipHolder() { >+ return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), IdMapping2_0.MAPPED_BY_RELATIONSHIP_PROPERTY) { >+ @Override >+ protected Boolean buildValue_() { >+ return this.subject.isMappedByRelationship(); >+ } >+ }; >+ } >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java >=================================================================== >RCS file: src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java >diff -N src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,43 @@ >+package org.eclipse.jpt.ui.internal.jpa2.details; >+ >+import org.eclipse.jpt.core.jpa2.context.EmbeddedIdMapping2_0; >+import org.eclipse.jpt.ui.internal.widgets.Pane; >+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; >+import org.eclipse.jpt.utility.model.value.PropertyValueModel; >+import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Composite; >+ >+public class EmbeddedIdMapping2_0MappedByRelationshipPane<T extends EmbeddedIdMapping2_0> >+ extends Pane<T> >+{ >+ public EmbeddedIdMapping2_0MappedByRelationshipPane( >+ Pane<?> parentPane, >+ PropertyValueModel<T> subjectHolder, >+ Composite parent) { >+ >+ super(parentPane, subjectHolder, parent); >+ } >+ >+ >+ @Override >+ protected void initializeLayout(Composite container) { >+ Composite subContainer = addSubPane(container, 2, 10, 0, 0, 0); >+ Button checkBox = addCheckBox( >+ subContainer, >+ null, >+ buildIsMappedByRelationshipHolder(), >+ null); >+ checkBox.setEnabled(false); >+ addLabel(subContainer, JptUiDetailsMessages2_0.EmbeddedIdMapping2_0MappedByRelationshipPane_label); >+ } >+ >+ protected WritablePropertyValueModel<Boolean> buildIsMappedByRelationshipHolder() { >+ return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), EmbeddedIdMapping2_0.MAPPED_BY_RELATIONSHIP_PROPERTY) { >+ @Override >+ protected Boolean buildValue_() { >+ return this.subject.isMappedByRelationship(); >+ } >+ }; >+ } >+} >Index: src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java >=================================================================== >RCS file: src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java >diff -N src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,37 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Oracle. >+ * All rights reserved. This program and the accompanying materials are >+ * made available under the terms of the Eclipse Public License v1.0 which >+ * accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oracle - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jpt.ui.internal.jpa2.details; >+ >+import org.eclipse.jpt.core.context.EmbeddedIdMapping; >+import org.eclipse.jpt.ui.WidgetFactory; >+import org.eclipse.jpt.ui.internal.details.AbstractEmbeddedIdMappingComposite; >+import org.eclipse.jpt.ui.internal.details.EmbeddedMappingOverridesComposite; >+import org.eclipse.jpt.utility.model.value.PropertyValueModel; >+import org.eclipse.swt.widgets.Composite; >+ >+public class EmbeddedIdMapping2_0Composite >+ extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> >+{ >+ public EmbeddedIdMapping2_0Composite( >+ PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, >+ Composite parent, >+ WidgetFactory widgetFactory) { >+ >+ super(subjectHolder, parent, widgetFactory); >+ } >+ >+ >+ @Override >+ protected void initializeEmbeddedIdSection(Composite container) { >+ new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); >+ new EmbeddedMappingOverridesComposite(this, container); >+ } >+} >#P org.eclipse.jpt.core >Index: src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java,v >retrieving revision 1.12 >diff -u -r1.12 GenericJavaAssociationOverrideContainer.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java 9 Mar 2010 22:43:41 -0000 1.12 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java 23 Mar 2010 17:21:21 -0000 >@@ -38,7 +38,6 @@ > import org.eclipse.jpt.utility.internal.CollectionTools; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; > import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; >-import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; >@@ -99,14 +98,9 @@ > } > > protected Iterator<String> allOverridableAssociationNames() { >- TypeMapping overridableTypeMapping = getOwner().getOverridableTypeMapping(); >- if (overridableTypeMapping != null) { >- return overridableTypeMapping.allOverridableAssociationNames(); >- } >- return EmptyIterator.instance(); >+ return getOwner().allOverridableNames(); > } >- >- >+ > @SuppressWarnings("unchecked") > public ListIterator<JavaAssociationOverride> associationOverrides() { > return new CompositeListIterator<JavaAssociationOverride>(specifiedAssociationOverrides(), virtualAssociationOverrides()); >Index: src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java,v >retrieving revision 1.4 >diff -u -r1.4 GenericJavaEmbeddedIdMapping.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java 20 Feb 2010 00:21:55 -0000 1.4 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java 23 Mar 2010 17:21:22 -0000 >@@ -9,20 +9,45 @@ > ******************************************************************************/ > package org.eclipse.jpt.core.internal.jpa1.context.java; > >+import java.util.Collection; >+import java.util.Iterator; >+import java.util.List; >+import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; >+import org.eclipse.jpt.core.context.TypeMapping; >+import org.eclipse.jpt.core.context.java.JavaAttributeOverrideContainer; > import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; > import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; > import org.eclipse.jpt.core.internal.context.java.AbstractJavaBaseEmbeddedMapping; >+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; >+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.EmbeddedIdMapping2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.java.EmbeddedIdAnnotation; >+import org.eclipse.jpt.utility.internal.CollectionTools; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; >+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; >+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; >+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; >+import org.eclipse.wst.validation.internal.provisional.core.IMessage; >+import org.eclipse.wst.validation.internal.provisional.core.IReporter; > > public class GenericJavaEmbeddedIdMapping > extends AbstractJavaBaseEmbeddedMapping<EmbeddedIdAnnotation> >- implements JavaEmbeddedIdMapping >+ implements EmbeddedIdMapping2_0, JavaEmbeddedIdMapping > { >+ /* 2.0 feature - a relationship may map this embedded id */ >+ protected boolean mappedByRelationship; >+ >+ > public GenericJavaEmbeddedIdMapping(JavaPersistentAttribute parent) { > super(parent); > } > >+ > //****************** JavaAttributeMapping implementation ******************* > > public String getKey() { >@@ -32,4 +57,130 @@ > public String getAnnotationName() { > return EmbeddedIdAnnotation.ANNOTATION_NAME; > } >+ >+ >+ // **************** EmbeddedId2_0 impl ************************************ >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (getName().equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue())) { >+ return true; >+ } >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ >+ // **************** overrides ********************************************* >+ >+ @Override >+ protected Iterator<String> embeddableOverrideableAttributeMappingNames() { >+ return (isMappedByRelationship()) ? >+ EmptyIterator.<String>instance() >+ : super.embeddableOverrideableAttributeMappingNames(); >+ } >+ >+ @Override >+ protected JavaAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() { >+ return new AttributeOverrideContainerOwner(); >+ } >+ >+ >+ protected class AttributeOverrideContainerOwner >+ extends AbstractJavaBaseEmbeddedMapping.AttributeOverrideContainerOwner >+ { >+ @Override >+ public Iterator allOverridableNames() { >+ return (GenericJavaEmbeddedIdMapping.this.isMappedByRelationship()) ? >+ EmptyIterator.<String>instance() >+ : super.allOverridableNames(); >+ } >+ >+ @Override >+ protected Iterator allOverridableAttributeNames_(TypeMapping typeMapping) { >+ final Collection mappedByRelationshipAttributes = CollectionTools.collection( >+ new TransformationIterator<SingleRelationshipMapping2_0, String>(getMapsIdRelationships()) { >+ @Override >+ protected String transform(SingleRelationshipMapping2_0 next) { >+ return next.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue(); >+ } >+ }); >+ return new FilteringIterator<String>(super.allOverridableAttributeNames_(typeMapping)) { >+ @Override >+ protected boolean accept(String o) { >+ if (mappedByRelationshipAttributes.isEmpty()) { >+ return true; >+ } >+ // overrideable names are (usually?) qualified with a container mapping, >+ // which may also be the one mapped by a relationship >+ String qualifier = >+ (o.indexOf('.') > 0) ? >+ o.substring(0, o.indexOf('.')) >+ : o; >+ return ! mappedByRelationshipAttributes.contains(qualifier); >+ } >+ }; >+ } >+ } >+ >+ >+ // **************** resource -> context *********************************** >+ >+ @Override >+ protected void initialize() { >+ super.initialize(); >+ this.mappedByRelationship = calculateMappedByRelationship(); >+ } >+ >+ >+ @Override >+ protected void update() { >+ super.update(); >+ setMappedByRelationship(calculateMappedByRelationship()); >+ } >+ >+ >+ // **************** validation ******************************************** >+ >+ @Override >+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ super.validate(messages, reporter, astRoot); >+ >+ // [JPA 2.0] if the embedded id is mapped by a relationship, then any specified >+ // attribute overrides are in error >+ // (in JPA 1.0, this will obviously never be reached) >+ if (isMappedByRelationship() >+ && getAttributeOverrideContainer().specifiedAttributeOverridesSize() > 0) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, >+ new String[] {}, >+ getAttributeOverrideContainer(), >+ getAttributeOverrideContainer().getValidationTextRange(astRoot))); >+ } >+ } > } >\ No newline at end of file >Index: src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java,v >retrieving revision 1.11 >diff -u -r1.11 GenericJavaAttributeOverride.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java 9 Mar 2010 22:43:41 -0000 1.11 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java 23 Mar 2010 17:21:22 -0000 >@@ -12,6 +12,8 @@ > import java.util.Iterator; > import java.util.List; > import org.eclipse.jdt.core.dom.CompilationUnit; >+import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; > import org.eclipse.jpt.core.context.BaseColumn; > import org.eclipse.jpt.core.context.Column; > import org.eclipse.jpt.core.context.NamedColumn; >@@ -20,27 +22,40 @@ > import org.eclipse.jpt.core.context.java.JavaAttributeOverrideContainer; > import org.eclipse.jpt.core.context.java.JavaColumn; > import org.eclipse.jpt.core.internal.context.java.AbstractJavaOverride; >+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; >+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.AttributeOverride2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; > import org.eclipse.jpt.core.resource.java.ColumnAnnotation; > import org.eclipse.jpt.core.utility.TextRange; > import org.eclipse.jpt.db.Table; > import org.eclipse.jpt.utility.Filter; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > >- >-public class GenericJavaAttributeOverride extends AbstractJavaOverride >- implements JavaAttributeOverride >+public class GenericJavaAttributeOverride >+ extends AbstractJavaOverride >+ implements AttributeOverride2_0, JavaAttributeOverride > { >- > protected final JavaColumn column; > >- >- public GenericJavaAttributeOverride(JavaAttributeOverrideContainer parent, JavaAttributeOverride.Owner owner) { >+ /* 2.0 feature - a relationship may map this attribute override */ >+ protected boolean mappedByRelationship; >+ >+ >+ public GenericJavaAttributeOverride( >+ JavaAttributeOverrideContainer parent, >+ JavaAttributeOverride.Owner owner) { >+ > super(parent, owner); > this.column = getJpaFactory().buildJavaColumn(this, this); > } > >+ > @Override > public JavaAttributeOverride setVirtual(boolean virtual) { > return (JavaAttributeOverride) super.setVirtual(virtual); >@@ -63,8 +78,14 @@ > public ColumnAnnotation getResourceColumnOrNull() { > return this.getOverrideAnnotation().getColumn(); > } >- >+ >+ protected boolean isColumnSpecified() { >+ return getResourceColumn() != null; >+ } >+ >+ > //************* NamedColumn.Owner implementation ************** >+ > public TypeMapping getTypeMapping() { > return this.getOwner().getTypeMapping(); > } >@@ -81,8 +102,9 @@ > return column.getName(); > } > >+ > //************* BaseColumn.Owner implementation ************** >- >+ > public String getDefaultTableName() { > Column column = resolveOverriddenColumn(); > if (column == null) { >@@ -94,11 +116,11 @@ > } > return getOwner().getDefaultTableName(); > } >- >+ > protected Column resolveOverriddenColumn() { > return getOwner().resolveOverriddenColumn(getName()); > } >- >+ > public boolean tableNameIsInvalid(String tableName) { > return getOwner().tableNameIsInvalid(tableName); > } >@@ -107,12 +129,14 @@ > return getOwner().candidateTableNames(); > } > >+ > //************* AttributeOverride implementation ************** > > public JavaColumn getColumn() { > return this.column; > } >- >+ >+ > //************* JavaOverride implementation ************** > > @Override >@@ -120,17 +144,64 @@ > return this.getOwner().allOverridableAttributeNames(); > } > >+ >+ // **************** AttributeOverride2_0 impl ***************************** >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (getName() == null) { >+ return false; >+ } >+ >+ // overrideable names are (usually?) qualified with a container mapping, >+ // which may also be the one mapped by a relationship >+ String qualifier = >+ (getName().indexOf('.') > 0) ? >+ getName().substring(0, getName().indexOf('.')) >+ : getName(); >+ return qualifier.equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue()); >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ > //************* java resource model -> java context model ************** >+ > public void initialize(AttributeOverrideAnnotation attributeOverrideResource) { > super.initialize(attributeOverrideResource); > this.column.initialize(this.getResourceColumn()); >+ this.mappedByRelationship = calculateMappedByRelationship(); > } >- >+ > public void update(AttributeOverrideAnnotation attributeOverrideResource) { > super.update(attributeOverrideResource); >- this.column.update(this.getResourceColumn()); >+ this.column.update(this.getResourceColumn()); >+ setMappedByRelationship(calculateMappedByRelationship()); > } >- >+ > @Override > public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { > Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); >@@ -143,20 +214,41 @@ > } > return null; > } >- >- >+ >+ > // ********** validation ********** >- >+ > @Override > public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { > super.validate(messages, reporter, astRoot); >- getColumn().validate(messages, reporter, astRoot); >+ >+ // [JPA 2.0] if the column is specified, or if the override is not mapped by a relationship, >+ // then the column is validated. >+ // (In JPA 1.0, the column will always be validated, since the override is never mapped by a >+ // relationship) >+ if (isColumnSpecified() || ! isMappedByRelationship()) { >+ getColumn().validate(messages, reporter, astRoot); >+ } >+ >+ // [JPA 2.0] if the override is mapped by a relationship, then that actually is in itself >+ // a validation error >+ // (We prevent implied overrides that are mapped by a relationship ... hopefully) >+ // (In JPA 1.0, this will never occur) >+ if (isMappedByRelationship()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED, >+ new String[] {}, >+ this, >+ getValidationTextRange(astRoot))); >+ } > } >- >+ > public IMessage buildUnresolvedNameMessage(NamedColumn column, TextRange textRange) { > return getOwner().buildColumnUnresolvedNameMessage(this, column, textRange); > } >- >+ > public IMessage buildTableNotValidMessage(BaseColumn column, TextRange textRange) { > return getOwner().buildColumnTableNotValidMessage(this, column, textRange); > } >Index: src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java,v >retrieving revision 1.16 >diff -u -r1.16 GenericJavaAttributeOverrideContainer.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java 9 Mar 2010 22:43:41 -0000 1.16 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java 23 Mar 2010 17:21:22 -0000 >@@ -25,6 +25,7 @@ > import org.eclipse.jpt.core.context.java.JavaJpaContextNode; > import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode; > import org.eclipse.jpt.core.internal.context.java.VirtualAttributeOverrideAnnotation; >+import org.eclipse.jpt.core.resource.java.Annotation; > import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; > import org.eclipse.jpt.core.resource.java.AttributeOverridesAnnotation; > import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; >@@ -35,7 +36,6 @@ > import org.eclipse.jpt.utility.internal.CollectionTools; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; > import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; >-import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; >@@ -236,13 +236,8 @@ > } > > protected Iterator<String> allOverridableAttributeNames() { >- TypeMapping overridableTypeMapping = getOwner().getOverridableTypeMapping(); >- if (overridableTypeMapping != null) { >- return overridableTypeMapping.allOverridableAttributeNames(); >- } >- return EmptyIterator.instance(); >+ return getOwner().allOverridableNames(); > } >- > > public void initialize(JavaResourcePersistentMember resourcePersistentMember) { > this.javaResourcePersistentMember = resourcePersistentMember; >@@ -386,9 +381,16 @@ > } > > public TextRange getValidationTextRange(CompilationUnit astRoot) { >- return getOwner().getValidationTextRange(astRoot); >+ Annotation annotation = >+ this.javaResourcePersistentMember.getAnnotation(AttributeOverridesAnnotation.ANNOTATION_NAME); >+ if (annotation == null) { >+ annotation = this.javaResourcePersistentMember.getAnnotation(AttributeOverrideAnnotation.ANNOTATION_NAME); >+ } >+ >+ return (annotation == null) ? >+ getOwner().getValidationTextRange(astRoot) >+ : annotation.getTextRange(astRoot); > } >- > > > // ********** attribute override owner ********** >Index: src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java,v >retrieving revision 1.21 >diff -u -r1.21 GenericJavaEmbeddedMapping.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java 9 Mar 2010 22:44:00 -0000 1.21 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java 23 Mar 2010 17:21:23 -0000 >@@ -12,7 +12,6 @@ > import java.util.Iterator; > import java.util.List; > import java.util.Vector; >- > import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jpt.core.MappingKeys; > import org.eclipse.jpt.core.context.AssociationOverride; >@@ -39,6 +38,7 @@ > import org.eclipse.jpt.utility.internal.CollectionTools; > import org.eclipse.jpt.utility.internal.Transformer; > import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; >+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > >@@ -188,16 +188,24 @@ > > // ********** association override container owner ********** > >- class AssociationOverrideContainerOwner implements JavaAssociationOverrideContainer.Owner { >+ class AssociationOverrideContainerOwner >+ implements JavaAssociationOverrideContainer.Owner >+ { >+ public TypeMapping getTypeMapping() { >+ return GenericJavaEmbeddedMapping.this.getTypeMapping(); >+ } > > public TypeMapping getOverridableTypeMapping() { > return GenericJavaEmbeddedMapping.this.getOverridableTypeMapping(); > } > >- public TypeMapping getTypeMapping() { >- return GenericJavaEmbeddedMapping.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); > } >- >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > return MappingTools.resolveRelationshipReference(getOverridableTypeMapping(), associationOverrideName); > } >@@ -205,11 +213,11 @@ > public boolean tableNameIsInvalid(String tableName) { > return getTypeMapping().tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return getTypeMapping().associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return getTypeMapping().getDbTable(tableName); > } >@@ -217,24 +225,24 @@ > public String getDefaultTableName() { > return getTypeMapping().getPrimaryTableName(); > } >- >+ > public String getPossiblePrefix() { > return null; > } >- >+ > public String getWritePrefix() { > return null; > } >- >+ > //no prefix, so always true > public boolean isRelevant(String overrideName) { > return true; > } >- >+ > public TextRange getValidationTextRange(CompilationUnit astRoot) { > return GenericJavaEmbeddedMapping.this.getValidationTextRange(astRoot); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualOverrideColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -250,7 +258,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -264,7 +272,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -277,7 +285,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -287,7 +295,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -300,7 +308,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnUnresolvedReferencedColumnNameMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -310,7 +318,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -323,7 +331,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -333,7 +341,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -346,7 +354,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java,v >retrieving revision 1.64 >diff -u -r1.64 AbstractOrmEntity.java >--- src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java 9 Mar 2010 22:43:59 -0000 1.64 >+++ src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java 23 Mar 2010 17:21:20 -0000 >@@ -10,6 +10,7 @@ > package org.eclipse.jpt.core.internal.context.orm; > > import java.util.ArrayList; >+import java.util.Collection; > import java.util.Iterator; > import java.util.List; > import java.util.ListIterator; >@@ -65,6 +66,7 @@ > import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.jpa2.context.orm.OrmCacheableHolder2_0; > import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; > import org.eclipse.jpt.core.resource.orm.Inheritance; >@@ -83,6 +85,7 @@ > import org.eclipse.jpt.utility.internal.StringTools; > import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.jpt.utility.internal.iterables.TransformationIterable; > import org.eclipse.jpt.utility.internal.iterators.CloneIterator; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; >@@ -1729,19 +1732,28 @@ > return this.resourceTypeMapping.getInheritanceStrategyTextRange(); > } > >- class AssociationOverrideContainerOwner implements OrmAssociationOverrideContainer.Owner { >+ class AssociationOverrideContainerOwner >+ implements OrmAssociationOverrideContainer.Owner >+ { >+ public OrmTypeMapping getTypeMapping() { >+ return AbstractOrmEntity.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractOrmEntity.this.getOverridableTypeMapping(); > } > >- public OrmTypeMapping getTypeMapping() { >- return AbstractOrmEntity.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); > } >- >+ > public EList<XmlAssociationOverride> getResourceAssociationOverrides() { > return AbstractOrmEntity.this.resourceTypeMapping.getAssociationOverrides(); > } >- >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > if (!isMetadataComplete()) { > JavaPersistentType javaPersistentType = getPersistentType().getJavaPersistentType(); >@@ -1758,11 +1770,11 @@ > public boolean tableNameIsInvalid(String tableName) { > return AbstractOrmEntity.this.tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return AbstractOrmEntity.this.associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return AbstractOrmEntity.this.getDbTable(tableName); > } >@@ -1770,7 +1782,7 @@ > public String getDefaultTableName() { > return AbstractOrmEntity.this.getPrimaryTableName(); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualOverrideColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1786,7 +1798,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1800,7 +1812,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1813,7 +1825,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1823,8 +1835,7 @@ > textRange > ); > } >- >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -1860,7 +1871,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1870,7 +1881,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -1883,7 +1894,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1899,21 +1910,61 @@ > } > } > >+ > //********** OrmAttributeOverrideContainer.Owner implementation ********* > >- class AttributeOverrideContainerOwner implements OrmAttributeOverrideContainer.Owner { >+ class AttributeOverrideContainerOwner >+ implements OrmAttributeOverrideContainer.Owner >+ { >+ public OrmTypeMapping getTypeMapping() { >+ return AbstractOrmEntity.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractOrmEntity.this.getOverridableTypeMapping(); > } > >- public OrmTypeMapping getTypeMapping() { >- return AbstractOrmEntity.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : allOverridableAttributeNames_(typeMapping); > } >- >+ >+ /* assumes the type mapping is not null */ >+ protected Iterator allOverridableAttributeNames_(TypeMapping typeMapping) { >+ final Collection mappedByRelationshipAttributes = CollectionTools.collection( >+ new TransformationIterator<SingleRelationshipMapping2_0, String>(getMapsIdRelationships()) { >+ @Override >+ protected String transform(SingleRelationshipMapping2_0 next) { >+ return next.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue(); >+ } >+ }); >+ return new FilteringIterator<String>(typeMapping.allOverridableAttributeNames()) { >+ @Override >+ protected boolean accept(String o) { >+ return ! mappedByRelationshipAttributes.contains(o); >+ } >+ }; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ > public EList<XmlAttributeOverride> getResourceAttributeOverrides() { > return AbstractOrmEntity.this.resourceTypeMapping.getAttributeOverrides(); > } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > if (!isMetadataComplete()) { > JavaPersistentType javaPersistentType = getPersistentType().getJavaPersistentType(); >@@ -1941,7 +1992,7 @@ > } > return new VirtualXmlColumn(AbstractOrmEntity.this, javaAttributeOverride.getColumn()); > } >- >+ > public boolean tableNameIsInvalid(String tableName) { > return AbstractOrmEntity.this.tableNameIsInvalid(tableName); > } >@@ -1949,7 +2000,7 @@ > public Iterator<String> candidateTableNames() { > return AbstractOrmEntity.this.associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return AbstractOrmEntity.this.getDbTable(tableName); > } >@@ -1957,7 +2008,7 @@ > public String getDefaultTableName() { > return AbstractOrmEntity.this.getPrimaryTableName(); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1970,7 +2021,7 @@ > textRange > ); > } >- >+ > public IMessage buildVirtualColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1980,7 +2031,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualOverrideColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1996,7 +2047,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -2015,6 +2066,7 @@ > } > } > >+ > class PrimaryKeyJoinColumnOwner implements OrmBaseJoinColumn.Owner > { > public TypeMapping getTypeMapping() { >Index: src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmIdMapping.java,v >retrieving revision 1.16 >diff -u -r1.16 AbstractOrmIdMapping.java >--- src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmIdMapping.java 9 Mar 2010 22:43:59 -0000 1.16 >+++ src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmIdMapping.java 23 Mar 2010 17:21:20 -0000 >@@ -12,6 +12,7 @@ > import java.util.Iterator; > import java.util.List; > import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; > import org.eclipse.jpt.core.context.BaseColumn; > import org.eclipse.jpt.core.context.Converter; > import org.eclipse.jpt.core.context.NamedColumn; >@@ -26,6 +27,8 @@ > import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.IdMapping2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.orm.Attributes; > import org.eclipse.jpt.core.resource.orm.OrmFactory; > import org.eclipse.jpt.core.resource.orm.XmlColumn; >@@ -33,15 +36,21 @@ > import org.eclipse.jpt.core.resource.orm.XmlId; > import org.eclipse.jpt.core.utility.TextRange; > import org.eclipse.jpt.db.Table; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > > public abstract class AbstractOrmIdMapping<T extends XmlId> > extends AbstractOrmAttributeMapping<T> >- implements OrmIdMapping >+ implements OrmIdMapping, IdMapping2_0 > { > protected final OrmColumn column; >- >+ >+ /* 2.0 feature - a relationship may map this id */ >+ protected boolean mappedByRelationship; >+ > protected OrmGeneratedValue generatedValue; > > protected OrmConverter converter; >@@ -49,18 +58,20 @@ > protected final OrmConverter nullConverter; > > protected final OrmGeneratorContainer generatorContainer; >- >+ > > protected AbstractOrmIdMapping(OrmPersistentAttribute parent, T resourceMapping) { > super(parent, resourceMapping); > this.column = getXmlContextNodeFactory().buildOrmColumn(this, this); > this.column.initialize(this.resourceAttributeMapping.getColumn());//TODO pass in to constructor >+ this.mappedByRelationship = calculateMappedByRelationship(); > this.generatorContainer = buildGeneratorContainer(); > this.initializeGeneratedValue(); > this.nullConverter = this.getXmlContextNodeFactory().buildOrmNullConverter(this); > this.converter = this.buildConverter(this.getResourceConverterType()); > } >- >+ >+ > protected OrmGeneratorContainer buildGeneratorContainer() { > return getXmlContextNodeFactory().buildOrmGeneratorContainer(this, this.resourceAttributeMapping); > } >@@ -68,21 +79,20 @@ > public String getKey() { > return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; > } >- >+ > public int getXmlSequence() { > return 0; > } >- >+ > public void initializeOn(OrmAttributeMapping newMapping) { > newMapping.initializeFromOrmIdMapping(this); > } >- >+ > @Override > public void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { > super.initializeFromOrmColumnMapping(oldMapping); > getColumn().initializeFrom(oldMapping.getColumn()); > } >- > > public OrmColumn getColumn() { > return this.column; >@@ -118,7 +128,7 @@ > this.converter = newConverter; > firePropertyChanged(CONVERTER_PROPERTY, oldConverter, newConverter); > } >- >+ > public OrmGeneratedValue addGeneratedValue() { > if (getGeneratedValue() != null) { > throw new IllegalStateException("gemeratedValue already exists"); //$NON-NLS-1$ >@@ -153,12 +163,12 @@ > public OrmGeneratorContainer getGeneratorContainer() { > return this.generatorContainer; > } >- >+ > @Override > public String getPrimaryKeyColumnName() { > return this.getColumn().getName(); > } >- >+ > @Override > public boolean isOverridableAttributeMapping() { > return true; >@@ -171,31 +181,88 @@ > public void removeFromResourceModel(Attributes resourceAttributes) { > resourceAttributes.getIds().remove(this.resourceAttributeMapping); > } >- >+ >+ >+ //***************** XmlColumn.Owner implementation **************** >+ >+ public XmlColumn getResourceColumn() { >+ return this.resourceAttributeMapping.getColumn(); >+ } >+ >+ protected boolean isColumnSpecified() { >+ return ! isVirtual() && getResourceColumn() != null; >+ } >+ >+ public void addResourceColumn() { >+ this.resourceAttributeMapping.setColumn(OrmFactory.eINSTANCE.createXmlColumn()); >+ } >+ >+ public void removeResourceColumn() { >+ this.resourceAttributeMapping.setColumn(null); >+ } >+ >+ > //************** NamedColumn.Owner implementation *************** > > public Table getDbTable(String tableName) { > return getTypeMapping().getDbTable(tableName); > } >- >+ > public String getDefaultColumnName() { >- return getName(); >+ return (isMappedByRelationship() && ! isColumnSpecified()) ? null : getName(); > } >- >+ >+ > //************** BaseColumn.Owner implementation *************** > > public String getDefaultTableName() { >- return getTypeMapping().getPrimaryTableName(); >+ return (isMappedByRelationship() && ! isColumnSpecified()) ? null : getTypeMapping().getPrimaryTableName(); > } >- >+ > public boolean tableNameIsInvalid(String tableName) { > return getTypeMapping().tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return getTypeMapping().associatedTableNamesIncludingInherited(); > } >- >+ >+ >+ // **************** IdColumn2_0 impl ************************************** >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getResolvedAttributeMappingValue() == this) { >+ return true; >+ } >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ > protected void initializeGeneratedValue() { > if (this.resourceAttributeMapping.getGeneratedValue() != null) { > this.generatedValue = buildGeneratedValue(this.resourceAttributeMapping.getGeneratedValue()); >@@ -210,6 +277,7 @@ > public void update() { > super.update(); > this.column.update(getResourceColumn()); >+ setMappedByRelationship(calculateMappedByRelationship()); > this.generatorContainer.update(); > this.updateGeneratedValue(); > if (this.valuesAreEqual(getResourceConverterType(), getConverterType())) { >@@ -220,7 +288,6 @@ > } > } > >- > protected void updateGeneratedValue() { > if (this.resourceAttributeMapping.getGeneratedValue() == null) { > if (getGeneratedValue() != null) { >@@ -253,20 +320,7 @@ > } > return Converter.NO_CONVERTER; > } >- >- //***************** XmlColumn.Owner implementation **************** > >- public XmlColumn getResourceColumn() { >- return this.resourceAttributeMapping.getColumn(); >- } >- >- public void addResourceColumn() { >- this.resourceAttributeMapping.setColumn(OrmFactory.eINSTANCE.createXmlColumn()); >- } >- >- public void removeResourceColumn() { >- this.resourceAttributeMapping.setColumn(null); >- } > > // ****************** validation **************** > >@@ -274,7 +328,27 @@ > public void validate(List<IMessage> messages, IReporter reporter) { > super.validate(messages, reporter); > >- this.getColumn().validate(messages, reporter); >+ // [JPA 2.0] if the column is specified, or if the id is not mapped by a relationship, >+ // then the column is validated. >+ // (In JPA 1.0, the column will always be validated, since the id is never mapped by a >+ // relationship) >+ if (isColumnSpecified() || ! isMappedByRelationship()) { >+ getColumn().validate(messages, reporter); >+ } >+ >+ // [JPA 2.0] if the column is specified and the id is mapped by a relationship, >+ // then that is an error >+ // (In JPA 1.0, this will never be the case, since the id is never mapped by a relationship) >+ if (isColumnSpecified() && isMappedByRelationship()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED, >+ new String[] {}, >+ getColumn(), >+ getColumn().getValidationTextRange())); >+ } >+ > if (this.generatedValue != null) { > this.generatedValue.validate(messages, reporter); > } >Index: src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java,v >retrieving revision 1.41 >diff -u -r1.41 AbstractOrmMultiRelationshipMapping.java >--- src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java 9 Mar 2010 22:43:41 -0000 1.41 >+++ src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java 23 Mar 2010 17:21:21 -0000 >@@ -704,23 +704,32 @@ > } > } > >- class MapKeyAttributeOverrideContainerOwner implements OrmAttributeOverrideContainer.Owner { >+ class MapKeyAttributeOverrideContainerOwner >+ implements OrmAttributeOverrideContainer.Owner >+ { > public OrmTypeMapping getTypeMapping() { > return AbstractOrmMultiRelationshipMapping.this.getTypeMapping(); > } >- >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractOrmMultiRelationshipMapping.this.getResolvedMapKeyEmbeddable(); > } >- >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > protected JavaAttributeOverride getJavaAttributeOverrideNamed(String attributeName) { > return AbstractOrmMultiRelationshipMapping.this.getJavaMapKeyAttributeOverrideNamed(attributeName); > } >- >+ > public EList<XmlAttributeOverride> getResourceAttributeOverrides() { > return AbstractOrmMultiRelationshipMapping.this.resourceAttributeMapping.getMapKeyAttributeOverrides(); > } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { > JavaAttributeOverride javaAttributeOverride = getJavaAttributeOverrideNamed(attributeOverrideName); >@@ -730,12 +739,12 @@ > } > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > > public XmlColumn buildVirtualXmlColumn(Column overridableColumn, String attributeName, boolean isMetadataComplete) { > return new VirtualXmlAttributeOverrideColumn(overridableColumn); > } >- >+ > protected OrmJoiningStrategy getPredominantJoiningStrategy() { > return getRelationshipReference().getPredominantJoiningStrategy(); > } >@@ -743,15 +752,15 @@ > public String getDefaultTableName() { > return getPredominantJoiningStrategy().getTableName(); > } >- >+ > public Table getDbTable(String tableName) { > return getPredominantJoiningStrategy().getDbTable(tableName); > } >- >+ > public java.util.Iterator<String> candidateTableNames() { > return EmptyIterator.instance(); > } >- >+ > /** > * If there is a specified table name it needs to be the same > * the default table name. the table is always the collection table >@@ -759,7 +768,7 @@ > public boolean tableNameIsInvalid(String tableName) { > return !StringTools.stringsAreEqual(getDefaultTableName(), tableName); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -777,7 +786,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -791,7 +800,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -804,7 +813,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -823,7 +832,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -838,7 +847,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -852,7 +861,7 @@ > textRange > ); > } >- >+ > public TextRange getValidationTextRange() { > return AbstractOrmMultiRelationshipMapping.this.getValidationTextRange(); > } >Index: src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java,v >retrieving revision 1.42 >diff -u -r1.42 AbstractOrmBaseEmbeddedMapping.java >--- src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java 9 Mar 2010 22:43:59 -0000 1.42 >+++ src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java 23 Mar 2010 17:21:18 -0000 >@@ -43,21 +43,29 @@ > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > > >-public abstract class AbstractOrmBaseEmbeddedMapping<T extends AbstractXmlEmbedded> extends AbstractOrmAttributeMapping<T> implements OrmBaseEmbeddedMapping >+public abstract class AbstractOrmBaseEmbeddedMapping<T extends AbstractXmlEmbedded> >+ extends AbstractOrmAttributeMapping<T> >+ implements OrmBaseEmbeddedMapping > { > protected OrmAttributeOverrideContainer attributeOverrideContainer; >- >- private Embeddable targetEmbeddable;//TODO hmm, why no property change notification for setting this?? >+ >+ private Embeddable targetEmbeddable; >+ > > protected AbstractOrmBaseEmbeddedMapping(OrmPersistentAttribute parent, T resourceMapping) { > super(parent, resourceMapping); > this.targetEmbeddable = embeddableFor(this.getJavaPersistentAttribute()); >- this.attributeOverrideContainer = >- getXmlContextNodeFactory().buildOrmAttributeOverrideContainer( >- this, >- new AttributeOverrideContainerOwner()); >+ this.attributeOverrideContainer >+ = getXmlContextNodeFactory().buildOrmAttributeOverrideContainer( >+ this, >+ buildAttributeOverrideContainerOwner()); > } >- >+ >+ >+ protected OrmAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() { >+ return new AttributeOverrideContainerOwner(); >+ } >+ > @Override > public void initializeFromOrmBaseEmbeddedMapping(OrmBaseEmbeddedMapping oldMapping) { > super.initializeFromOrmBaseEmbeddedMapping(oldMapping); >@@ -213,18 +221,32 @@ > > //********** AttributeOverrideContainer.Owner implementation ********* > >- class AttributeOverrideContainerOwner implements OrmAttributeOverrideContainer.Owner { >+ protected class AttributeOverrideContainerOwner >+ implements OrmAttributeOverrideContainer.Owner >+ { >+ public OrmTypeMapping getTypeMapping() { >+ return AbstractOrmBaseEmbeddedMapping.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractOrmBaseEmbeddedMapping.this.getTargetEmbeddable(); > } >- >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : allOverridableAttributeNames_(typeMapping); >+ } >+ >+ /* assumes the type mapping is not null */ >+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) { >+ return typeMapping.allOverridableAttributeNames(); >+ } >+ > public EList<XmlAttributeOverride> getResourceAttributeOverrides() { > return AbstractOrmBaseEmbeddedMapping.this.resourceAttributeMapping.getAttributeOverrides(); > } >- >- public OrmTypeMapping getTypeMapping() { >- return AbstractOrmBaseEmbeddedMapping.this.getTypeMapping(); >- } > > public Column resolveOverriddenColumn(String attributeOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { >@@ -247,7 +269,7 @@ > public Iterator<String> candidateTableNames() { > return getTypeMapping().associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return getTypeMapping().getDbTable(tableName); > } >@@ -255,7 +277,7 @@ > public String getDefaultTableName() { > return getTypeMapping().getPrimaryTableName(); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeUnresolvedColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -271,7 +293,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeUnresolvedColumnTableNotValidMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -298,7 +320,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -317,7 +339,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -332,7 +354,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -346,7 +368,7 @@ > textRange > ); > } >- >+ > public TextRange getValidationTextRange() { > return AbstractOrmBaseEmbeddedMapping.this.getValidationTextRange(); > } >Index: src/org/eclipse/jpt/core/context/java/JavaAttributeOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/java/JavaAttributeOverride.java,v >retrieving revision 1.8 >diff -u -r1.8 JavaAttributeOverride.java >--- src/org/eclipse/jpt/core/context/java/JavaAttributeOverride.java 9 Mar 2010 22:43:41 -0000 1.8 >+++ src/org/eclipse/jpt/core/context/java/JavaAttributeOverride.java 23 Mar 2010 17:21:15 -0000 >@@ -13,8 +13,6 @@ > import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; > > /** >- * >- * > * Provisional API: This interface is part of an interim API that is still > * under development and expected to change significantly before reaching > * stability. It is available at this early stage to solicit feedback from >@@ -32,7 +30,7 @@ > JavaAttributeOverride setVirtual(boolean virtual); > > AttributeOverrideAnnotation getOverrideAnnotation(); >- >+ > void initialize(AttributeOverrideAnnotation attributeOverride); > > /** >@@ -40,8 +38,9 @@ > * resource model object. see {@link org.eclipse.jpt.core.JpaProject#update()} > */ > void update(AttributeOverrideAnnotation attributeOverride); >- >- interface Owner extends AttributeOverride.Owner, JavaOverride.Owner >+ >+ interface Owner >+ extends AttributeOverride.Owner, JavaOverride.Owner > { > //nothing yet > } >Index: src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java,v >retrieving revision 1.19 >diff -u -r1.19 AbstractJavaIdMapping.java >--- src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java 9 Mar 2010 22:43:59 -0000 1.19 >+++ src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java 23 Mar 2010 17:21:17 -0000 >@@ -14,6 +14,7 @@ > import java.util.Vector; > import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; > import org.eclipse.jpt.core.context.BaseColumn; > import org.eclipse.jpt.core.context.Converter; > import org.eclipse.jpt.core.context.NamedColumn; >@@ -26,6 +27,8 @@ > import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.IdMapping2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.java.ColumnAnnotation; > import org.eclipse.jpt.core.resource.java.GeneratedValueAnnotation; > import org.eclipse.jpt.core.resource.java.IdAnnotation; >@@ -37,6 +40,9 @@ > import org.eclipse.jpt.utility.Filter; > import org.eclipse.jpt.utility.internal.CollectionTools; > import org.eclipse.jpt.utility.internal.StringTools; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; >@@ -45,12 +51,15 @@ > > public abstract class AbstractJavaIdMapping > extends AbstractJavaAttributeMapping<IdAnnotation> >- implements JavaIdMapping >+ implements JavaIdMapping, IdMapping2_0 > { > protected final JavaColumn column; >- >+ >+ /* 2.0 feature - a relationship may map this id */ >+ protected boolean mappedByRelationship; >+ > protected JavaGeneratedValue generatedValue; >- >+ > protected final JavaGeneratorContainer generatorContainer; > > protected JavaConverter converter; >@@ -65,38 +74,45 @@ > this.nullConverter = getJpaFactory().buildJavaNullConverter(this); > this.converter = this.nullConverter; > } >- >+ >+ > @Override > protected void initialize() { > super.initialize(); > this.column.initialize(this.getResourceColumn()); >+ this.mappedByRelationship = calculateMappedByRelationship(); > this.generatorContainer.initialize(this.getResourcePersistentAttribute()); > this.initializeGeneratedValue(); > this.converter = this.buildConverter(this.getResourceConverterType()); > } >- >+ > protected void initializeGeneratedValue() { > GeneratedValueAnnotation resourceGeneratedValue = this.getResourceGeneratedValue(); > if (resourceGeneratedValue != null) { > this.generatedValue = this.buildGeneratedValue(resourceGeneratedValue); > } > } >- >+ > public ColumnAnnotation getResourceColumn() { > return (ColumnAnnotation) this.getResourcePersistentAttribute(). > getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); > } >- >+ >+ protected boolean isColumnSpecified() { >+ return getResourcePersistentAttribute().getAnnotation(ColumnAnnotation.ANNOTATION_NAME) != null; >+ } >+ > private JavaGeneratorContainer buildGeneratorContainer() { > return this.getJpaFactory().buildJavaGeneratorContainer(this); > } >- >+ >+ > //************** JavaAttributeMapping implementation *************** >- >+ > public String getKey() { > return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; > } >- >+ > public String getAnnotationName() { > return IdAnnotation.ANNOTATION_NAME; > } >@@ -111,26 +127,29 @@ > names.add(JPA.SEQUENCE_GENERATOR); > } > >+ > //************** NamedColumn.Owner implementation *************** > > public String getDefaultColumnName() { >- return getName(); >+ return (isMappedByRelationship() && ! isColumnSpecified()) ? null : getName(); > } > >+ > //************** BaseColumn.Owner implementation *************** > > public String getDefaultTableName() { >- return getTypeMapping().getPrimaryTableName(); >+ return (isMappedByRelationship() && ! isColumnSpecified()) ? null : getTypeMapping().getPrimaryTableName(); > } > > public boolean tableNameIsInvalid(String tableName) { > return getTypeMapping().tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return getTypeMapping().associatedTableNamesIncludingInherited(); > } >- >+ >+ > //************** IdMapping implementation *************** > > public JavaColumn getColumn() { >@@ -209,6 +228,7 @@ > protected void update() { > super.update(); > this.column.update(this.getResourceColumn()); >+ setMappedByRelationship(calculateMappedByRelationship()); > this.generatorContainer.update(this.getResourcePersistentAttribute()); > this.updateGeneratedValue(); > if (this.valuesAreEqual(getResourceConverterType(), getConverterType())) { >@@ -219,7 +239,7 @@ > setConverter(javaConverter); > } > } >- >+ > protected void updateGeneratedValue() { > GeneratedValueAnnotation resourceGeneratedValue = getResourceGeneratedValue(); > if (resourceGeneratedValue == null) { >@@ -242,7 +262,7 @@ > gv.initialize(resourceGeneratedValue); > return gv; > } >- >+ > protected TableGeneratorAnnotation getResourceTableGenerator() { > return (TableGeneratorAnnotation) this.getResourcePersistentAttribute(). > getAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); >@@ -274,9 +294,45 @@ > } > return Converter.NO_CONVERTER; > } >- >+ >+ >+ // **************** IdMapping2_0 impl ************************************* >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (getName().equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue())) { >+ return true; >+ } >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ > // ********** code assist ********** >- >+ > @Override > public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { > Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); >@@ -303,7 +359,8 @@ > } > return null; > } >- >+ >+ > // ********** code assist: generator > > protected boolean generatorTouches(int pos, CompilationUnit astRoot) { >@@ -327,34 +384,55 @@ > protected Iterator<String> persistenceGeneratorNames(Filter<String> filter) { > return StringTools.convertToJavaStringLiterals(this.generatorNames(filter)); > } >- >+ >+ > // ************************************************************************* > > @Override > public String getPrimaryKeyColumnName() { > return this.getColumn().getName(); > } >- >+ > @Override > public boolean isOverridableAttributeMapping() { > return true; > } > >- >+ > //*********** Validation ************ > > @Override > public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { > super.validate(messages, reporter, astRoot); > >- this.getColumn().validate(messages, reporter, astRoot); >+ // [JPA 2.0] if the column is specified, or if the id is not mapped by a relationship, >+ // then the column is validated. >+ // (In JPA 1.0, the column will always be validated, since the id is never mapped by a >+ // relationship) >+ if (isColumnSpecified() || ! isMappedByRelationship()) { >+ this.getColumn().validate(messages, reporter, astRoot); >+ } >+ >+ // [JPA 2.0] if the column is specified and the id is mapped by a relationship, >+ // then that is an error >+ // (In JPA 1.0, this will never be the case, since the id is never mapped by a relationship) >+ if (isColumnSpecified() && isMappedByRelationship()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED, >+ new String[] {}, >+ getColumn(), >+ getColumn().getValidationTextRange(astRoot))); >+ } >+ > if (this.getGeneratedValue() != null) { > this.getGeneratedValue().validate(messages, reporter, astRoot); > } > this.getGeneratorContainer().validate(messages, reporter, astRoot); > this.getConverter().validate(messages, reporter, astRoot); > } >- >+ > public IMessage buildTableNotValidMessage(BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -367,7 +445,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnresolvedNameMessage(NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java,v >retrieving revision 1.45 >diff -u -r1.45 AbstractJavaMultiRelationshipMapping.java >--- src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java 9 Mar 2010 22:43:41 -0000 1.45 >+++ src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java 23 Mar 2010 17:21:17 -0000 >@@ -753,28 +753,34 @@ > extends OverrideContainerOwner > implements JavaAttributeOverrideContainer.Owner > { >- >+ public TypeMapping getOverridableTypeMapping() { >+ return AbstractJavaMultiRelationshipMapping.this.getResolvedMapKeyEmbeddable(); >+ } >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > public String getPossiblePrefix() { > return "key."; //$NON-NLS-1$ > } >- >+ > public String getWritePrefix() { > return this.getPossiblePrefix(); > } >- >+ > //since only the key can be an embeddable on a 1-m or m-m, all overrides are relevant > public boolean isRelevant(String overrideName) { > return true; > } >- >- public TypeMapping getOverridableTypeMapping() { >- return AbstractJavaMultiRelationshipMapping.this.getResolvedMapKeyEmbeddable(); >- } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -797,7 +803,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -810,7 +816,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/internal/context/java/AbstractJavaEntity.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaEntity.java,v >retrieving revision 1.61 >diff -u -r1.61 AbstractJavaEntity.java >--- src/org/eclipse/jpt/core/internal/context/java/AbstractJavaEntity.java 9 Mar 2010 22:43:59 -0000 1.61 >+++ src/org/eclipse/jpt/core/internal/context/java/AbstractJavaEntity.java 23 Mar 2010 17:21:17 -0000 >@@ -10,6 +10,7 @@ > package org.eclipse.jpt.core.internal.context.java; > > import java.util.ArrayList; >+import java.util.Collection; > import java.util.Iterator; > import java.util.List; > import java.util.ListIterator; >@@ -55,6 +56,7 @@ > import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; > import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.jpa2.context.java.JavaCacheableHolder2_0; > import org.eclipse.jpt.core.resource.java.DiscriminatorColumnAnnotation; > import org.eclipse.jpt.core.resource.java.DiscriminatorValueAnnotation; >@@ -74,6 +76,7 @@ > import org.eclipse.jpt.utility.internal.iterables.ArrayIterable; > import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.jpt.utility.internal.iterables.TransformationIterable; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; > import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; >@@ -1490,16 +1493,24 @@ > > // ********** association override container owner ********** > >- class AssociationOverrideContainerOwner implements JavaAssociationOverrideContainer.Owner { >+ class AssociationOverrideContainerOwner >+ implements JavaAssociationOverrideContainer.Owner >+ { >+ public TypeMapping getTypeMapping() { >+ return AbstractJavaEntity.this.getTypeMapping(); >+ } > > public TypeMapping getOverridableTypeMapping() { > return AbstractJavaEntity.this.getOverridableTypeMapping(); > } > >- public TypeMapping getTypeMapping() { >- return AbstractJavaEntity.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); > } >- >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > return MappingTools.resolveRelationshipReference(getOverridableTypeMapping(), associationOverrideName); > } >@@ -1511,7 +1522,7 @@ > public Iterator<String> candidateTableNames() { > return AbstractJavaEntity.this.associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return AbstractJavaEntity.this.getDbTable(tableName); > } >@@ -1519,24 +1530,24 @@ > public String getDefaultTableName() { > return AbstractJavaEntity.this.getPrimaryTableName(); > } >- >+ > public String getPossiblePrefix() { > return null; > } >- >+ > public String getWritePrefix() { > return null; > } >- >+ > public boolean isRelevant(String overrideName) { > //no prefix, so always true > return true; > } >- >+ > public TextRange getValidationTextRange(CompilationUnit astRoot) { > return AbstractJavaEntity.this.getValidationTextRange(astRoot); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualOverrideColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1552,7 +1563,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1566,7 +1577,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1589,7 +1600,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -1612,7 +1623,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -1625,7 +1636,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1648,6 +1659,7 @@ > textRange > ); > } >+ > protected IMessage buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1661,15 +1673,54 @@ > > //********** AttributeOverrideContainer.Owner implementation ********* > >- class AttributeOverrideContainerOwner implements JavaAttributeOverrideContainer.Owner { >+ class AttributeOverrideContainerOwner >+ implements JavaAttributeOverrideContainer.Owner >+ { >+ public TypeMapping getTypeMapping() { >+ return AbstractJavaEntity.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractJavaEntity.this.getOverridableTypeMapping(); > } > >- public TypeMapping getTypeMapping() { >- return AbstractJavaEntity.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : allOverridableAttributeNames_(typeMapping); >+ } >+ >+ /* assumes the type mapping is not null */ >+ protected Iterator allOverridableAttributeNames_(TypeMapping typeMapping) { >+ final Collection mappedByRelationshipAttributes = CollectionTools.collection( >+ new TransformationIterator<SingleRelationshipMapping2_0, String>(getMapsIdRelationships()) { >+ @Override >+ protected String transform(SingleRelationshipMapping2_0 next) { >+ return next.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue(); >+ } >+ }); >+ return new FilteringIterator<String>(typeMapping.allOverridableAttributeNames()) { >+ @Override >+ protected boolean accept(String o) { >+ return ! mappedByRelationshipAttributes.contains(o); >+ } >+ }; > } >- >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >@@ -1677,11 +1728,11 @@ > public boolean tableNameIsInvalid(String tableName) { > return AbstractJavaEntity.this.tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return AbstractJavaEntity.this.associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return AbstractJavaEntity.this.getDbTable(tableName); > } >@@ -1689,24 +1740,24 @@ > public String getDefaultTableName() { > return AbstractJavaEntity.this.getPrimaryTableName(); > } >- >+ > public String getPossiblePrefix() { > return null; > } >- >+ > public String getWritePrefix() { > return null; > } >- >+ > public boolean isRelevant(String overrideName) { > //no prefix, so always true > return true; > } >- >+ > public TextRange getValidationTextRange(CompilationUnit astRoot) { > return AbstractJavaEntity.this.getValidationTextRange(astRoot); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1729,7 +1780,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1745,7 +1796,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java,v >retrieving revision 1.48 >diff -u -r1.48 AbstractJavaBaseEmbeddedMapping.java >--- src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java 9 Mar 2010 22:43:59 -0000 1.48 >+++ src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java 23 Mar 2010 17:21:15 -0000 >@@ -46,14 +46,23 @@ > implements JavaBaseEmbeddedMapping > { > protected final JavaAttributeOverrideContainer attributeOverrideContainer; >- >+ > private Embeddable targetEmbeddable; >- >+ >+ > protected AbstractJavaBaseEmbeddedMapping(JavaPersistentAttribute parent) { > super(parent); >- this.attributeOverrideContainer = this.getJpaFactory().buildJavaAttributeOverrideContainer(this, new AttributeOverrideContainerOwner()); >+ this.attributeOverrideContainer = >+ this.getJpaFactory().buildJavaAttributeOverrideContainer( >+ this, >+ buildAttributeOverrideContainerOwner()); > } >- >+ >+ >+ protected JavaAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() { >+ return new AttributeOverrideContainerOwner(); >+ } >+ > public JavaAttributeOverrideContainer getAttributeOverrideContainer() { > return this.attributeOverrideContainer; > } >@@ -62,6 +71,7 @@ > return this.targetEmbeddable; > } > >+ > //****************** JavaAttributeMapping implementation ******************* > > @Override >@@ -211,13 +221,27 @@ > > //********** AttributeOverrideContainer.Owner implementation ********* > >- class AttributeOverrideContainerOwner implements JavaAttributeOverrideContainer.Owner { >+ protected class AttributeOverrideContainerOwner >+ implements JavaAttributeOverrideContainer.Owner >+ { >+ public TypeMapping getTypeMapping() { >+ return AbstractJavaBaseEmbeddedMapping.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return AbstractJavaBaseEmbeddedMapping.this.getOverridableTypeMapping(); > } > >- public TypeMapping getTypeMapping() { >- return AbstractJavaBaseEmbeddedMapping.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : allOverridableAttributeNames_(typeMapping); >+ } >+ >+ /* assumes the type mapping is not null */ >+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) { >+ return typeMapping.allOverridableAttributeNames(); > } > > public Column resolveOverriddenColumn(String attributeOverrideName) { >@@ -239,24 +263,24 @@ > public String getDefaultTableName() { > return getTypeMapping().getPrimaryTableName(); > } >- >+ > public String getPossiblePrefix() { > return null; > } >- >+ > public String getWritePrefix() { > return null; > } >- >+ > public boolean isRelevant(String overrideName) { > //no prefix, so always true > return true; > } >- >+ > public TextRange getValidationTextRange(CompilationUnit astRoot) { > return AbstractJavaBaseEmbeddedMapping.this.getValidationTextRange(astRoot); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -272,7 +296,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -286,7 +310,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -299,7 +323,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -310,4 +334,4 @@ > ); > } > } >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java,v >retrieving revision 1.23 >diff -u -r1.23 AbstractJavaNamedColumn.java >--- src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java 15 Feb 2010 17:31:13 -0000 1.23 >+++ src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java 23 Mar 2010 17:21:17 -0000 >@@ -11,7 +11,6 @@ > > import java.util.Iterator; > import java.util.List; >- > import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jpt.core.context.NamedColumn; > import org.eclipse.jpt.core.context.java.JavaJpaContextNode; >@@ -28,7 +27,8 @@ > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > > >-public abstract class AbstractJavaNamedColumn<T extends NamedColumnAnnotation> extends AbstractJavaJpaContextNode >+public abstract class AbstractJavaNamedColumn<T extends NamedColumnAnnotation> >+ extends AbstractJavaJpaContextNode > implements JavaNamedColumn > { > >Index: src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0.java,v >retrieving revision 1.17 >diff -u -r1.17 GenericJavaElementCollectionMapping2_0.java >--- src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0.java 11 Mar 2010 19:55:23 -0000 1.17 >+++ src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0.java 23 Mar 2010 17:21:26 -0000 >@@ -1284,8 +1284,9 @@ > > // ********** override container owners ********** > >- abstract class OverrideContainerOwner implements JavaOverrideContainer.Owner { >- >+ abstract class OverrideContainerOwner >+ implements JavaOverrideContainer.Owner >+ { > public TypeMapping getTypeMapping() { > return GenericJavaElementCollectionMapping2_0.this.getTypeMapping(); > } >@@ -1297,7 +1298,7 @@ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return GenericJavaElementCollectionMapping2_0.this.getCollectionTable().getDbTable(); > } >- >+ > public java.util.Iterator<String> candidateTableNames() { > return EmptyIterator.instance(); > } >@@ -1314,26 +1315,34 @@ > return GenericJavaElementCollectionMapping2_0.this.getValidationTextRange(astRoot); > } > } >- >- class ValueAssociationOverrideContainerOwner extends OverrideContainerOwner >- implements JavaAssociationOverrideContainer.Owner { >- >+ >+ class ValueAssociationOverrideContainerOwner >+ extends OverrideContainerOwner >+ implements JavaAssociationOverrideContainer.Owner >+ { > public TypeMapping getOverridableTypeMapping() { > return GenericJavaElementCollectionMapping2_0.this.getResolvedTargetEmbeddable(); > } >- >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); >+ } >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > return MappingTools.resolveRelationshipReference(getOverridableTypeMapping(), associationOverrideName); > } >- >+ > public String getPossiblePrefix() { > return "value."; //$NON-NLS-1$ > } >- >+ > public String getWritePrefix() { > return getPersistentAttribute().getJpaContainer().isMap() ? this.getPossiblePrefix() : null; > } >- >+ > //return false if the override is prefixed with "key.", these will be part of the MapKeyAttributeOverrideContainer. > //a prefix of "value." or no prefix at all is relevant. If the type is not a Map then return true since all attribute overrides > //need to apply to the value. >@@ -1343,7 +1352,7 @@ > } > return !overrideName.startsWith("key."); //$NON-NLS-1$ > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualOverrideColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1359,7 +1368,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1396,7 +1405,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -1409,7 +1418,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnUnresolvedReferencedColumnNameMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1419,7 +1428,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -1432,7 +1441,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1455,7 +1464,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1477,18 +1486,25 @@ > return GenericJavaElementCollectionMapping2_0.this.getResolvedTargetEmbeddable(); > } > >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > public String getPossiblePrefix() { > return "value."; //$NON-NLS-1$ > } >- >+ > public String getWritePrefix() { > return getPersistentAttribute().getJpaContainer().isMap() ? this.getPossiblePrefix() : null; > } >- >+ > //return false if the override is prefixed with "key.", these will be part of the MapKeyAttributeOverrideContainer. > //a prefix of "value." or no prefix at all is relevant. If the type is not a Map then return true since all attribute overrides > //need to apply to the value. >@@ -1498,7 +1514,7 @@ > } > return !overrideName.startsWith("key."); //$NON-NLS-1$ > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1521,7 +1537,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1537,7 +1553,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1553,19 +1569,30 @@ > } > } > >+ > class MapKeyAttributeOverrideContainerOwner > extends OverrideContainerOwner > implements JavaAttributeOverrideContainer.Owner > { >- >+ public TypeMapping getOverridableTypeMapping() { >+ return GenericJavaElementCollectionMapping2_0.this.getResolvedMapKeyEmbeddable(); >+ } >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > public String getPossiblePrefix() { > return "key."; //$NON-NLS-1$ > } >- >+ > public String getWritePrefix() { > return this.getPossiblePrefix(); > } >- >+ > //the only relevant overrides are those that start with "key.", no prefix will be a value attribute override > public boolean isRelevant(String overrideName) { > if (getValueType() != Type.EMBEDDABLE_TYPE) { >@@ -1573,15 +1600,11 @@ > } > return overrideName.startsWith("key."); //$NON-NLS-1$ > } >- >- public TypeMapping getOverridableTypeMapping() { >- return GenericJavaElementCollectionMapping2_0.this.getResolvedMapKeyEmbeddable(); >- } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1604,7 +1627,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (override.isVirtual()) { > return this.buildVirtualColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1620,7 +1643,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/context/orm/OrmAttributeOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmAttributeOverride.java,v >retrieving revision 1.8 >diff -u -r1.8 OrmAttributeOverride.java >--- src/org/eclipse/jpt/core/context/orm/OrmAttributeOverride.java 8 Mar 2010 16:54:05 -0000 1.8 >+++ src/org/eclipse/jpt/core/context/orm/OrmAttributeOverride.java 23 Mar 2010 17:21:15 -0000 >@@ -14,8 +14,6 @@ > import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; > > /** >- * >- * > * Provisional API: This interface is part of an interim API that is still > * under development and expected to change significantly before reaching > * stability. It is available at this early stage to solicit feedback from >@@ -37,4 +35,4 @@ > * resource model object. see {@link org.eclipse.jpt.core.JpaProject#update()} > */ > void update(XmlAttributeOverride attributeOverride); >-} >\ No newline at end of file >+} >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java,v >retrieving revision 1.3 >diff -u -r1.3 GenericOrmEmbeddedIdMapping.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java 20 Feb 2010 00:21:56 -0000 1.3 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java 23 Mar 2010 17:21:23 -0000 >@@ -9,24 +9,48 @@ > ******************************************************************************/ > package org.eclipse.jpt.core.internal.jpa1.context.orm; > >+import java.util.Collection; >+import java.util.Iterator; >+import java.util.List; > import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; >+import org.eclipse.jpt.core.context.TypeMapping; > import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; >+import org.eclipse.jpt.core.context.orm.OrmAttributeOverrideContainer; > import org.eclipse.jpt.core.context.orm.OrmEmbeddedIdMapping; > import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; > import org.eclipse.jpt.core.internal.context.orm.AbstractOrmBaseEmbeddedMapping; >+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; >+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.EmbeddedIdMapping2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.orm.Attributes; > import org.eclipse.jpt.core.resource.orm.XmlEmbeddedId; >+import org.eclipse.jpt.utility.internal.CollectionTools; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; >+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; >+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; >+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; >+import org.eclipse.wst.validation.internal.provisional.core.IMessage; >+import org.eclipse.wst.validation.internal.provisional.core.IReporter; > > > public class GenericOrmEmbeddedIdMapping > extends AbstractOrmBaseEmbeddedMapping<XmlEmbeddedId> >- implements OrmEmbeddedIdMapping >+ implements EmbeddedIdMapping2_0, OrmEmbeddedIdMapping > { >- >+ /* 2.0 feature - a relationship may map this embedded id */ >+ protected boolean mappedByRelationship; >+ >+ > public GenericOrmEmbeddedIdMapping(OrmPersistentAttribute parent, XmlEmbeddedId resourceMapping) { > super(parent, resourceMapping); >+ this.mappedByRelationship = calculateMappedByRelationship(); > } >- >+ >+ > public void initializeOn(OrmAttributeMapping newMapping) { > newMapping.initializeFromOrmEmbeddedIdMapping(this); > } >@@ -35,12 +59,13 @@ > return 10; > } > >+ > //*************** AttributeMapping implementation ********************* > > public String getKey() { > return MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY; > } >- >+ > public void addToResourceModel(Attributes resourceAttributes) { > resourceAttributes.getEmbeddedIds().add(this.resourceAttributeMapping); > } >@@ -48,4 +73,123 @@ > public void removeFromResourceModel(Attributes resourceAttributes) { > resourceAttributes.getEmbeddedIds().remove(this.resourceAttributeMapping); > } >+ >+ >+ // **************** EmbeddedId2_0 impl ************************************ >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (getName().equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue())) { >+ return true; >+ } >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ >+ // **************** overrides ********************************************* >+ >+ @Override >+ protected Iterator<String> embeddableOverrideableAttributeMappingNames() { >+ return (isMappedByRelationship()) ? >+ EmptyIterator.<String>instance() >+ : super.embeddableOverrideableAttributeMappingNames(); >+ } >+ >+ @Override >+ protected OrmAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() { >+ return new AttributeOverrideContainerOwner(); >+ } >+ >+ >+ protected class AttributeOverrideContainerOwner >+ extends AbstractOrmBaseEmbeddedMapping.AttributeOverrideContainerOwner >+ { >+ @Override >+ public Iterator allOverridableNames() { >+ return (GenericOrmEmbeddedIdMapping.this.isMappedByRelationship()) ? >+ EmptyIterator.<String>instance() >+ : super.allOverridableNames(); >+ } >+ >+ @Override >+ protected Iterator allOverridableAttributeNames_(TypeMapping typeMapping) { >+ final Collection mappedByRelationshipAttributes = CollectionTools.collection( >+ new TransformationIterator<SingleRelationshipMapping2_0, String>(getMapsIdRelationships()) { >+ @Override >+ protected String transform(SingleRelationshipMapping2_0 next) { >+ return next.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue(); >+ } >+ }); >+ return new FilteringIterator<String>(super.allOverridableAttributeNames_(typeMapping)) { >+ @Override >+ protected boolean accept(String o) { >+ if (mappedByRelationshipAttributes.isEmpty()) { >+ return true; >+ } >+ // overrideable names are (usually?) qualified with a container mapping, >+ // which may also be the one mapped by a relationship >+ String qualifier = >+ (o.indexOf('.') > 0) ? >+ o.substring(0, o.indexOf('.')) >+ : o; >+ return ! mappedByRelationshipAttributes.contains(qualifier); >+ } >+ }; >+ } >+ } >+ >+ >+ // **************** resource -> context *********************************** >+ >+ @Override >+ public void update() { >+ super.update(); >+ setMappedByRelationship(calculateMappedByRelationship()); >+ } >+ >+ >+ // **************** validation ******************************************** >+ >+ @Override >+ public void validate(List<IMessage> messages, IReporter reporter) { >+ super.validate(messages, reporter); >+ >+ // [JPA 2.0] if the embedded id is mapped by a relationship, then any specified >+ // attribute overrides are in error >+ // (in JPA 1.0, this will obviously never be reached) >+ if (isMappedByRelationship() >+ && getAttributeOverrideContainer().specifiedAttributeOverridesSize() > 0) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, >+ new String[] {}, >+ getAttributeOverrideContainer(), >+ getAttributeOverrideContainer().getValidationTextRange())); >+ } >+ } > } >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java,v >retrieving revision 1.7 >diff -u -r1.7 GenericOrmEmbeddedMapping.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java 9 Mar 2010 22:44:00 -0000 1.7 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java 23 Mar 2010 17:21:24 -0000 >@@ -11,7 +11,6 @@ > > import java.util.Iterator; > import java.util.List; >- > import org.eclipse.emf.common.util.EList; > import org.eclipse.jpt.core.MappingKeys; > import org.eclipse.jpt.core.context.AssociationOverride; >@@ -221,19 +220,28 @@ > > //********** OrmAssociationOverrideContainer.Owner implementation ********* > >- class AssociationOverrideContainerOwner implements OrmAssociationOverrideContainer.Owner { >+ class AssociationOverrideContainerOwner >+ implements OrmAssociationOverrideContainer.Owner >+ { >+ public OrmTypeMapping getTypeMapping() { >+ return GenericOrmEmbeddedMapping.this.getTypeMapping(); >+ } >+ > public TypeMapping getOverridableTypeMapping() { > return GenericOrmEmbeddedMapping.this.getTargetEmbeddable(); > } > >- public OrmTypeMapping getTypeMapping() { >- return GenericOrmEmbeddedMapping.this.getTypeMapping(); >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); > } >- >+ > public EList<XmlAssociationOverride> getResourceAssociationOverrides() { > return GenericOrmEmbeddedMapping.this.resourceAttributeMapping.getAssociationOverrides(); > } >- >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { > JavaAssociationOverride javaAssociationOverride = getJavaAssociationOverrideNamed(associationOverrideName); >@@ -251,7 +259,7 @@ > public Iterator<String> candidateTableNames() { > return getTypeMapping().associatedTableNamesIncludingInherited(); > } >- >+ > public org.eclipse.jpt.db.Table getDbTable(String tableName) { > return getTypeMapping().getDbTable(tableName); > } >@@ -259,11 +267,11 @@ > public String getDefaultTableName() { > return getTypeMapping().getPrimaryTableName(); > } >- >+ > public TextRange getValidationTextRange() { > return GenericOrmEmbeddedMapping.this.getValidationTextRange(); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -282,7 +290,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -297,7 +305,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -311,7 +319,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -327,7 +335,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -354,7 +362,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -372,7 +380,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedReferencedColumnNameMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -415,7 +423,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -435,7 +443,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -451,7 +459,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java,v >retrieving revision 1.9 >diff -u -r1.9 GenericOrmAttributeOverride.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java 3 Mar 2010 20:17:03 -0000 1.9 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java 23 Mar 2010 17:21:23 -0000 >@@ -11,6 +11,8 @@ > > import java.util.Iterator; > import java.util.List; >+import org.eclipse.jpt.core.MappingKeys; >+import org.eclipse.jpt.core.context.AttributeMapping; > import org.eclipse.jpt.core.context.AttributeOverride; > import org.eclipse.jpt.core.context.BaseColumn; > import org.eclipse.jpt.core.context.Column; >@@ -19,62 +21,77 @@ > import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; > import org.eclipse.jpt.core.context.orm.OrmAttributeOverrideContainer; > import org.eclipse.jpt.core.context.orm.OrmColumn; >+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; >+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; >+import org.eclipse.jpt.core.jpa2.context.AttributeOverride2_0; >+import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; > import org.eclipse.jpt.core.resource.orm.OrmFactory; > import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; > import org.eclipse.jpt.core.resource.orm.XmlColumn; > import org.eclipse.jpt.core.utility.TextRange; > import org.eclipse.jpt.db.Table; >+import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; >+import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; >+import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > >- >-public class GenericOrmAttributeOverride extends AbstractOrmOverride >- implements OrmAttributeOverride, OrmColumn.Owner >+public class GenericOrmAttributeOverride >+ extends AbstractOrmOverride >+ implements AttributeOverride2_0, OrmAttributeOverride, OrmColumn.Owner > { >- > protected final OrmColumn column; >- >- public GenericOrmAttributeOverride(OrmAttributeOverrideContainer parent, AttributeOverride.Owner owner, XmlAttributeOverride resourceAttributeOverride) { >+ >+ /* 2.0 feature - a relationship may map this attribute override */ >+ protected boolean mappedByRelationship; >+ >+ >+ public GenericOrmAttributeOverride( >+ OrmAttributeOverrideContainer parent, >+ AttributeOverride.Owner owner, >+ XmlAttributeOverride resourceAttributeOverride) { >+ > super(parent, owner, resourceAttributeOverride); > this.column = getXmlContextNodeFactory().buildOrmColumn(this, this); > this.column.initialize(resourceAttributeOverride.getColumn()); >+ >+ this.mappedByRelationship = //calculateMappedByRelationship(); >+ // TODO - move this real calculation to a (currently nonexistent) initialize method >+ false; > } >- >+ >+ > public OrmAttributeOverride setVirtual(boolean virtual) { > return (OrmAttributeOverride) getOwner().setVirtual(virtual, this); > } >- >+ > @Override > public Owner getOwner() { > return (Owner) super.getOwner(); > } >- >+ > @Override > protected XmlAttributeOverride getResourceOverride() { > return (XmlAttributeOverride) super.getResourceOverride(); > } >- >- public void update(XmlAttributeOverride xmlAttributeOverride) { >- super.update(xmlAttributeOverride); >- this.column.update(xmlAttributeOverride.getColumn()); >- } > >- >+ > // ********************* column **************** >- >+ > public OrmColumn getColumn() { > return this.column; > } >- >+ > //************* NamedColumn.Owner implementation ************** >+ > public TypeMapping getTypeMapping() { > return getOwner().getTypeMapping(); > } >- >+ > public Table getDbTable(String tableName) { > return this.getOwner().getDbTable(tableName); > } >- >+ > public String getDefaultColumnName() { > Column column = resolveOverriddenColumn(); > if (column == null) { >@@ -83,6 +100,7 @@ > return column.getName(); > } > >+ > //************* BaseColumn.Owner implementation ************** > > public String getDefaultTableName() { >@@ -100,26 +118,30 @@ > protected Column resolveOverriddenColumn() { > return getOwner().resolveOverriddenColumn(getName()); > } >- >+ > public boolean tableNameIsInvalid(String tableName) { > return getOwner().tableNameIsInvalid(tableName); > } >- >+ > public Iterator<String> candidateTableNames() { > return getOwner().candidateTableNames(); > } >- >+ > public boolean isVirtual() { > return getOwner().isVirtual(this); > } >- >- >+ >+ > //***************** OrmColumn.Owner implementation **************** > > public XmlColumn getResourceColumn() { > return this.getResourceOverride().getColumn(); > } > >+ protected boolean isColumnSpecified() { >+ return getResourceColumn() != null; >+ } >+ > public void addResourceColumn() { > this.getResourceOverride().setColumn(OrmFactory.eINSTANCE.createXmlColumn()); > } >@@ -127,20 +149,93 @@ > public void removeResourceColumn() { > this.getResourceOverride().setColumn(null); > } >- >- >+ >+ >+ // **************** AttributeOverride2_0 impl ***************************** >+ >+ public boolean isMappedByRelationship() { >+ return this.mappedByRelationship; >+ } >+ >+ protected void setMappedByRelationship(boolean newValue) { >+ boolean oldValue = this.mappedByRelationship; >+ this.mappedByRelationship = newValue; >+ firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); >+ } >+ >+ protected boolean calculateMappedByRelationship() { >+ for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { >+ if (getName() == null) { >+ return false; >+ } >+ >+ // overrideable names are (usually?) qualified with a container mapping, >+ // which may also be the one mapped by a relationship >+ String qualifier = >+ (getName().indexOf('.') > 0) ? >+ getName().substring(0, getName().indexOf('.')) >+ : getName(); >+ return qualifier.equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue()); >+ } >+ return false; >+ } >+ >+ protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { >+ return new FilteringIterable<SingleRelationshipMapping2_0>( >+ new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( >+ new CompositeIterable<AttributeMapping>( >+ getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), >+ getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { >+ @Override >+ protected boolean accept(SingleRelationshipMapping2_0 o) { >+ return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); >+ } >+ }; >+ } >+ >+ >+ // **************** resource -> context *********************************** >+ >+ public void update(XmlAttributeOverride xmlAttributeOverride) { >+ super.update(xmlAttributeOverride); >+ this.column.update(xmlAttributeOverride.getColumn()); >+ setMappedByRelationship(calculateMappedByRelationship()); >+ } >+ >+ > //****************** validation ******************** >- >+ > @Override > public void validate(List<IMessage> messages, IReporter reporter) { > super.validate(messages, reporter); >- getColumn().validate(messages, reporter); >+ >+ // [JPA 2.0] if the column is specified, or if the override is not mapped by a relationship, >+ // then the column is validated. >+ // (In JPA 1.0, the column will always be validated, since the override is never mapped by a >+ // relationship) >+ if (isColumnSpecified() || ! isMappedByRelationship()) { >+ getColumn().validate(messages, reporter); >+ } >+ >+ // [JPA 2.0] if the override is mapped by a relationship, then that actually is in itself >+ // a validation error >+ // (We prevent implied overrides that are mapped by a relationship ... hopefully) >+ // (In JPA 1.0, this will never occur) >+ if (isMappedByRelationship()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED, >+ new String[] {}, >+ this, >+ getValidationTextRange())); >+ } > } >- >+ > public IMessage buildUnresolvedNameMessage(NamedColumn column, TextRange textRange) { > return getOwner().buildColumnUnresolvedNameMessage(this, column, textRange); > } >- >+ > public IMessage buildTableNotValidMessage(BaseColumn column, TextRange textRange) { > return getOwner().buildColumnTableNotValidMessage(this, column, textRange); > } >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java,v >retrieving revision 1.17 >diff -u -r1.17 GenericOrmAttributeOverrideContainer.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java 3 Mar 2010 20:17:03 -0000 1.17 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java 23 Mar 2010 17:21:23 -0000 >@@ -34,20 +34,20 @@ > import org.eclipse.jpt.utility.internal.iterators.CloneIterator; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; > import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; >-import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > >-public class GenericOrmAttributeOverrideContainer extends AbstractOrmXmlContextNode >+public class GenericOrmAttributeOverrideContainer >+ extends AbstractOrmXmlContextNode > implements OrmAttributeOverrideContainer > { >- > protected final List<OrmAttributeOverride> specifiedAttributeOverrides; >- >+ > protected final List<OrmAttributeOverride> virtualAttributeOverrides; >- >+ > protected final Owner owner; >- >+ >+ > public GenericOrmAttributeOverrideContainer(XmlContextNode parent, Owner owner) { > super(parent); > this.owner = owner; >@@ -56,7 +56,8 @@ > this.initializeSpecifiedAttributeOverrides(); > this.initializeVirtualAttributeOverrides(); > } >- >+ >+ > public void initializeFromAttributeOverrideContainer(OrmAttributeOverrideContainer oldContainer) { > int index = 0; > for (OrmAttributeOverride attributeOverride : CollectionTools.iterable(oldContainer.specifiedAttributeOverrides())) { >@@ -136,7 +137,7 @@ > protected OrmAttributeOverride setAttributeOverrideSpecified(OrmAttributeOverride oldAttributeOverride) { > int index = specifiedAttributeOverridesSize(); > XmlAttributeOverride xmlAttributeOverride = OrmFactory.eINSTANCE.createXmlAttributeOverride(); >- OrmAttributeOverride newAttributeOverride = getXmlContextNodeFactory().buildOrmAttributeOverride(this, createAttributeOverrideOwner(), xmlAttributeOverride); >+ OrmAttributeOverride newAttributeOverride = buildAttributeOverride(xmlAttributeOverride); > this.specifiedAttributeOverrides.add(index, newAttributeOverride); > > this.getResourceAttributeOverrides().add(xmlAttributeOverride); >@@ -222,11 +223,7 @@ > } > > protected Iterator<String> allOverridableAttributeNames() { >- TypeMapping overridableTypeMapping = getOwner().getOverridableTypeMapping(); >- if (overridableTypeMapping != null) { >- return overridableTypeMapping.allOverridableAttributeNames(); >- } >- return EmptyIterator.instance(); >+ return getOwner().allOverridableNames(); > } > > protected void initializeVirtualAttributeOverrides() { >@@ -323,13 +320,16 @@ > @Override > public void validate(List<IMessage> messages, IReporter reporter) { > super.validate(messages, reporter); >- >+ > for (Iterator<OrmAttributeOverride> stream = this.attributeOverrides(); stream.hasNext(); ) { > stream.next().validate(messages, reporter); > } > } > > public TextRange getValidationTextRange() { >+ if (specifiedAttributeOverridesSize() > 0) { >+ return this.specifiedAttributeOverrides.get(0).getValidationTextRange(); >+ } > return getOwner().getValidationTextRange(); > } > >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java,v >retrieving revision 1.14 >diff -u -r1.14 GenericOrmAssociationOverrideContainer.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java 3 Mar 2010 20:17:03 -0000 1.14 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java 23 Mar 2010 17:21:23 -0000 >@@ -36,7 +36,6 @@ > import org.eclipse.jpt.utility.internal.iterators.CloneIterator; > import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; > import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; >-import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > >@@ -204,13 +203,8 @@ > return getOverrideNamed(name, overrides) != null; > } > >- > protected Iterator<String> allOverridableAssociationNames() { >- TypeMapping overridableTypeMapping = getOwner().getOverridableTypeMapping(); >- if (overridableTypeMapping != null) { >- return overridableTypeMapping.allOverridableAssociationNames(); >- } >- return EmptyIterator.instance(); >+ return getOwner().allOverridableNames(); > } > > protected void initializeVirtualAssociationOverrides() { >Index: src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java,v >retrieving revision 1.1 >diff -u -r1.1 AbstractOrmOverride.java >--- src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java 3 Mar 2010 20:17:03 -0000 1.1 >+++ src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java 23 Mar 2010 17:21:23 -0000 >@@ -50,7 +50,9 @@ > this.setName_(this.getResourceName()); > } > >+ > // ********************* name **************** >+ > public String getName() { > return this.name; > } >Index: src/org/eclipse/jpt/core/context/OverrideContainer.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/OverrideContainer.java,v >retrieving revision 1.2 >diff -u -r1.2 OverrideContainer.java >--- src/org/eclipse/jpt/core/context/OverrideContainer.java 8 Mar 2010 16:54:07 -0000 1.2 >+++ src/org/eclipse/jpt/core/context/OverrideContainer.java 23 Mar 2010 17:21:15 -0000 >@@ -30,32 +30,44 @@ > interface Owner > { > /** >- * Return the type mapping of the owning persistent type. >+ * Return the mapping of the persistent type where the container is defined. >+ * (For example, on an entity, this would be the entity. On an embedded, this would >+ * be the type mapping where the embedded is defined.) > */ > TypeMapping getTypeMapping(); >- >+ > /** >- * Return the overridable persistent type, not the owning persistent type. >- * This will be the persistent type of the mapped superclass or embeddable. >+ * Return the type mapping that contains the attributes/associations to be overridden. >+ * (Though the type mapping may not *directly* own them. i.e. they may be on a supertype >+ * mapping.) >+ * (For example, on an entity, this would be the supertype mapping of that entity. On >+ * an embedded, this would be the target type mapping of the embedded.) > */ > TypeMapping getOverridableTypeMapping(); >- >+ >+ /** >+ * Return an iterator of all the names of the attributes/associations to be overridden. >+ * This is usually just all of the overridable names of the overridable type mapping. >+ * @see #getOverridableTypeMapping() >+ */ >+ Iterator<String> allOverridableNames(); >+ > /** > * Return the name of the table which the column belongs to by default > */ > String getDefaultTableName(); >- >+ > /** > * return whether the given table cannot be explicitly specified > * in the column's 'table' element > */ > boolean tableNameIsInvalid(String tableName); >- >+ > /** > * Return the database table for the specified table name > */ > org.eclipse.jpt.db.Table getDbTable(String tableName); >- >+ > /** > * Return a list of table names that are valid for the overrides column, or join columns > */ >Index: src/org/eclipse/jpt/core/context/AttributeOverride.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/AttributeOverride.java,v >retrieving revision 1.11 >diff -u -r1.11 AttributeOverride.java >--- src/org/eclipse/jpt/core/context/AttributeOverride.java 8 Mar 2010 16:54:07 -0000 1.11 >+++ src/org/eclipse/jpt/core/context/AttributeOverride.java 23 Mar 2010 17:21:15 -0000 >@@ -10,8 +10,6 @@ > package org.eclipse.jpt.core.context; > > /** >- * >- * > * Provisional API: This interface is part of an interim API that is still > * under development and expected to change significantly before reaching > * stability. It is available at this early stage to solicit feedback from >@@ -21,7 +19,8 @@ > * @version 2.3 > * @since 2.0 > */ >-public interface AttributeOverride extends BaseOverride, Column.Owner >+public interface AttributeOverride >+ extends BaseOverride, Column.Owner > { > Column getColumn(); > >@@ -36,4 +35,4 @@ > */ > Column resolveOverriddenColumn(String attributeName); > } >-} >\ No newline at end of file >+} >Index: property_files/jpa_validation.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties,v >retrieving revision 1.50 >diff -u -r1.50 jpa_validation.properties >--- property_files/jpa_validation.properties 9 Mar 2010 22:43:59 -0000 1.50 >+++ property_files/jpa_validation.properties 23 Mar 2010 17:21:15 -0000 >@@ -71,6 +71,9 @@ > MAPPING_MAPPED_BY_WITH_JOIN_TABLE=Cannot specify join table if this attribute is mapped by another attribute > MAPPING_MAPPED_BY_ON_BOTH_SIDES=Relationship must have an owner > ID_MAPPING_UNRESOLVED_GENERATOR_NAME=Unresolved generator name \"{0}\" >+ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED=IDs that are mapped by a relationship should not specify a column. >+EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides. >+ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED=Attributes (or subattributes of an attribute) that are mapped by a relationship should not be overridden. > TABLE_UNRESOLVED_CATALOG=Catalog \"{0}\" cannot be resolved for table \"{1}\" > TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for table \"{1}\" > TABLE_UNRESOLVED_NAME=Table \"{0}\" cannot be resolved >Index: src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0.java,v >retrieving revision 1.18 >diff -u -r1.18 GenericOrmElementCollectionMapping2_0.java >--- src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0.java 9 Mar 2010 22:43:41 -0000 1.18 >+++ src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0.java 23 Mar 2010 17:21:27 -0000 >@@ -1402,17 +1402,25 @@ > } > } > >- class AssociationOverrideContainerOwner extends OverrideContainerOwner >+ class AssociationOverrideContainerOwner >+ extends OverrideContainerOwner > implements OrmAssociationOverrideContainer.Owner > { > public TypeMapping getOverridableTypeMapping() { > return GenericOrmElementCollectionMapping2_0.this.getResolvedTargetEmbeddable(); > } > >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAssociationNames(); >+ } >+ > public EList<XmlAssociationOverride> getResourceAssociationOverrides() { > return GenericOrmElementCollectionMapping2_0.this.resourceAttributeMapping.getAssociationOverrides(); > } >- >+ > public RelationshipReference resolveRelationshipReference(String associationOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { > JavaAssociationOverride javaAssociationOverride = getJavaValueAssociationOverrideNamed(associationOverrideName); >@@ -1422,7 +1430,7 @@ > } > return MappingTools.resolveRelationshipReference(getOverridableTypeMapping(), associationOverrideName); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1441,7 +1449,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1456,7 +1464,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1470,7 +1478,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1488,7 +1496,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1502,7 +1510,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1515,7 +1523,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnUnresolvedReferencedColumnNameMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedReferencedColumnNameMessage(override.getName(), column, textRange); >@@ -1533,7 +1541,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedReferencedColumnNameMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1547,7 +1555,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnUnresolvedReferencedColumnNameMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1560,7 +1568,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeUnspecifiedNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -1578,7 +1586,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1588,7 +1596,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideUnspecifiedNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1598,7 +1606,7 @@ > textRange > ); > } >- >+ > public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(AssociationOverride override, BaseJoinColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(override.getName(), column, textRange); >@@ -1616,7 +1624,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1626,7 +1634,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(String overrideName, BaseJoinColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1636,25 +1644,34 @@ > textRange > ); > } >- >+ > public TextRange getValidationTextRange() { > return GenericOrmElementCollectionMapping2_0.this.getValidationTextRange(); > } > } >- >+ >+ > //********** OrmAttributeOverrideContainer.Owner implementation ********* > >- class ValueAttributeOverrideContainerOwner extends OverrideContainerOwner >+ class ValueAttributeOverrideContainerOwner >+ extends OverrideContainerOwner > implements OrmAttributeOverrideContainer.Owner > { > public TypeMapping getOverridableTypeMapping() { > return GenericOrmElementCollectionMapping2_0.this.getResolvedTargetEmbeddable(); > } >- >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > public EList<XmlAttributeOverride> getResourceAttributeOverrides() { > return GenericOrmElementCollectionMapping2_0.this.resourceAttributeMapping.getAttributeOverrides(); > } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { > JavaAttributeOverride javaAttributeOverride = getJavaValueAttributeOverrideNamed(attributeOverrideName); >@@ -1664,11 +1681,11 @@ > } > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > public XmlColumn buildVirtualXmlColumn(Column overridableColumn, String attributeName, boolean isMetadataComplete) { > return new VirtualXmlAttributeOverrideColumn(overridableColumn); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1686,7 +1703,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1700,7 +1717,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1713,7 +1730,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1732,7 +1749,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1747,7 +1764,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1761,23 +1778,32 @@ > textRange > ); > } >- >+ > public TextRange getValidationTextRange() { > return GenericOrmElementCollectionMapping2_0.this.getValidationTextRange(); > } > } >- >- class MapKeyAttributeOverrideContainerOwner extends OverrideContainerOwner >+ >+ >+ class MapKeyAttributeOverrideContainerOwner >+ extends OverrideContainerOwner > implements OrmAttributeOverrideContainer.Owner > { > public TypeMapping getOverridableTypeMapping() { > return GenericOrmElementCollectionMapping2_0.this.getResolvedMapKeyEmbeddable(); > } >- >+ >+ public Iterator<String> allOverridableNames() { >+ TypeMapping typeMapping = getOverridableTypeMapping(); >+ return (typeMapping == null) ? >+ EmptyIterator.<String>instance() >+ : typeMapping.allOverridableAttributeNames(); >+ } >+ > public EList<XmlAttributeOverride> getResourceAttributeOverrides() { > return GenericOrmElementCollectionMapping2_0.this.resourceAttributeMapping.getMapKeyAttributeOverrides(); > } >- >+ > public Column resolveOverriddenColumn(String attributeOverrideName) { > if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { > JavaAttributeOverride javaAttributeOverride = getJavaMapKeyAttributeOverrideNamed(attributeOverrideName); >@@ -1787,11 +1813,11 @@ > } > return MappingTools.resolveOverridenColumn(getOverridableTypeMapping(), attributeOverrideName); > } >- >+ > public XmlColumn buildVirtualXmlColumn(Column overridableColumn, String attributeName, boolean isMetadataComplete) { > return new VirtualXmlAttributeOverrideColumn(overridableColumn); > } >- >+ > public IMessage buildColumnUnresolvedNameMessage(BaseOverride override, NamedColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnUnresolvedNameMessage(override.getName(), column, textRange); >@@ -1809,7 +1835,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1823,7 +1849,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnUnresolvedNameMessage(String overrideName, NamedColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1836,7 +1862,7 @@ > textRange > ); > } >- >+ > public IMessage buildColumnTableNotValidMessage(BaseOverride override, BaseColumn column, TextRange textRange) { > if (isVirtual()) { > return this.buildVirtualAttributeColumnTableNotValidMessage(override.getName(), column, textRange); >@@ -1855,7 +1881,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualAttributeColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1870,7 +1896,7 @@ > textRange > ); > } >- >+ > protected IMessage buildVirtualOverrideColumnTableNotValidMessage(String overrideName, BaseColumn column, TextRange textRange) { > return DefaultJpaValidationMessages.buildMessage( > IMessage.HIGH_SEVERITY, >@@ -1884,7 +1910,7 @@ > textRange > ); > } >- >+ > public TextRange getValidationTextRange() { > return GenericOrmElementCollectionMapping2_0.this.getValidationTextRange(); > } >Index: src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java,v >retrieving revision 1.40 >diff -u -r1.40 JpaValidationMessages.java >--- src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java 9 Mar 2010 22:44:00 -0000 1.40 >+++ src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java 23 Mar 2010 17:21:27 -0000 >@@ -77,6 +77,9 @@ > public static final String MAPPING_MAPPED_BY_WITH_JOIN_TABLE = "MAPPING_MAPPED_BY_WITH_JOIN_TABLE"; > public static final String MAPPING_MAPPED_BY_ON_BOTH_SIDES = "MAPPING_MAPPED_BY_ON_BOTH_SIDES"; > public static final String ID_MAPPING_UNRESOLVED_GENERATOR_NAME = "ID_MAPPING_UNRESOLVED_GENERATOR_NAME"; >+ public static final String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED = "ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED"; >+ public static final String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED = "EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED"; >+ public static final String ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED = "ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED"; > public static final String TABLE_UNRESOLVED_CATALOG = "TABLE_UNRESOLVED_CATALOG"; > public static final String TABLE_UNRESOLVED_SCHEMA = "TABLE_UNRESOLVED_SCHEMA"; > public static final String TABLE_UNRESOLVED_NAME = "TABLE_UNRESOLVED_NAME"; >Index: src/org/eclipse/jpt/core/resource/orm/AbstractXmlEmbedded.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/AbstractXmlEmbedded.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractXmlEmbedded.java >--- src/org/eclipse/jpt/core/resource/orm/AbstractXmlEmbedded.java 10 Sep 2009 16:10:15 -0000 1.2 >+++ src/org/eclipse/jpt/core/resource/orm/AbstractXmlEmbedded.java 23 Mar 2010 17:21:27 -0000 >@@ -210,11 +210,11 @@ > } > return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); > } >- >+ >+ > // ********** translators ********** >- >+ > protected static Translator buildAttributeOverrideTranslator() { > return XmlAttributeOverride.buildTranslator(JPA.ATTRIBUTE_OVERRIDE, OrmPackage.eINSTANCE.getXmlAttributeOverrideContainer_AttributeOverrides()); > } >- >-} // BaseXmlEmbedded >+} >Index: src/org/eclipse/jpt/core/resource/orm/XmlEmbedded.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlEmbedded.java,v >retrieving revision 1.9 >diff -u -r1.9 XmlEmbedded.java >--- src/org/eclipse/jpt/core/resource/orm/XmlEmbedded.java 2 Oct 2009 19:25:43 -0000 1.9 >+++ src/org/eclipse/jpt/core/resource/orm/XmlEmbedded.java 23 Mar 2010 17:21:27 -0000 >@@ -234,12 +234,13 @@ > return MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY; > } > >+ > // ********** translators ********** >- >+ > public static Translator buildTranslator(String elementName, EStructuralFeature structuralFeature) { > return new SimpleTranslator(elementName, structuralFeature, buildTranslatorChildren()); > } >- >+ > private static Translator[] buildTranslatorChildren() { > return new Translator[] { > buildNameTranslator(), >Index: src/org/eclipse/jpt/core/jpa2/context/IdMapping2_0.java >=================================================================== >RCS file: src/org/eclipse/jpt/core/jpa2/context/IdMapping2_0.java >diff -N src/org/eclipse/jpt/core/jpa2/context/IdMapping2_0.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/core/jpa2/context/IdMapping2_0.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,38 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Oracle. >+ * All rights reserved. This program and the accompanying materials are >+ * made available under the terms of the Eclipse Public License v1.0 which >+ * accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oracle - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jpt.core.jpa2.context; >+ >+import org.eclipse.jpt.core.context.IdMapping; >+ >+/** >+ * Provisional API: This interface is part of an interim API that is still >+ * under development and expected to change significantly before reaching >+ * stability. It is available at this early stage to solicit feedback from >+ * pioneering adopters on the understanding that any code that uses this API >+ * will almost certainly be broken (repeatedly) as the API evolves. >+ * >+ * @version 2.3 >+ * @since 2.3 >+ */ >+public interface IdMapping2_0 >+ extends IdMapping >+{ >+ /** >+ * Property string associated with changes to the mapped by relationship >+ */ >+ final String MAPPED_BY_RELATIONSHIP_PROPERTY = "mappedByRelationship"; >+ >+ /** >+ * Return whether this id is mapped by a relationship (i.e. a relationship maps this id) >+ * N.B. - This might be several relationships (erroneously, of course) >+ */ >+ boolean isMappedByRelationship(); >+} >Index: src/org/eclipse/jpt/core/jpa2/context/AttributeOverride2_0.java >=================================================================== >RCS file: src/org/eclipse/jpt/core/jpa2/context/AttributeOverride2_0.java >diff -N src/org/eclipse/jpt/core/jpa2/context/AttributeOverride2_0.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/core/jpa2/context/AttributeOverride2_0.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Oracle. >+ * All rights reserved. This program and the accompanying materials are >+ * made available under the terms of the Eclipse Public License v1.0 which >+ * accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oracle - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jpt.core.jpa2.context; >+ >+import org.eclipse.jpt.core.context.AttributeOverride; >+ >+/** >+ * Provisional API: This interface is part of an interim API that is still >+ * under development and expected to change significantly before reaching >+ * stability. It is available at this early stage to solicit feedback from >+ * pioneering adopters on the understanding that any code that uses this API >+ * will almost certainly be broken (repeatedly) as the API evolves. >+ * >+ * @version 2.3 >+ * @since 2.3 >+ */ >+public interface AttributeOverride2_0 >+ extends AttributeOverride >+{ >+ /** >+ * Property string associated with changes to the mapped by relationship >+ */ >+ final String MAPPED_BY_RELATIONSHIP_PROPERTY = "mappedByRelationship"; >+ >+ /** >+ * Return whether this attribute override is mapped by a relationship >+ * (i.e. a relationship maps this attribute override, possibly in an entity overriding >+ * an id or an embedded id overriding any attribute) >+ * N.B. - This might be several relationships (erroneously, of course) >+ */ >+ boolean isMappedByRelationship(); >+} >Index: src/org/eclipse/jpt/core/jpa2/context/EmbeddedIdMapping2_0.java >=================================================================== >RCS file: src/org/eclipse/jpt/core/jpa2/context/EmbeddedIdMapping2_0.java >diff -N src/org/eclipse/jpt/core/jpa2/context/EmbeddedIdMapping2_0.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jpt/core/jpa2/context/EmbeddedIdMapping2_0.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,38 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Oracle. >+ * All rights reserved. This program and the accompanying materials are >+ * made available under the terms of the Eclipse Public License v1.0 which >+ * accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oracle - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jpt.core.jpa2.context; >+ >+import org.eclipse.jpt.core.context.EmbeddedIdMapping; >+ >+/** >+ * Provisional API: This interface is part of an interim API that is still >+ * under development and expected to change significantly before reaching >+ * stability. It is available at this early stage to solicit feedback from >+ * pioneering adopters on the understanding that any code that uses this API >+ * will almost certainly be broken (repeatedly) as the API evolves. >+ * >+ * @version 2.3 >+ * @since 2.3 >+ */ >+public interface EmbeddedIdMapping2_0 >+ extends EmbeddedIdMapping >+{ >+ /** >+ * Property string associated with changes to the mapped by relationship >+ */ >+ final String MAPPED_BY_RELATIONSHIP_PROPERTY = "mappedByRelationship"; >+ >+ /** >+ * Return whether this id is mapped by a relationship (i.e. a relationship maps this embedded id) >+ * N.B. - This might be several relationships (erroneously, of course) >+ */ >+ boolean isMappedByRelationship(); >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 306777
: 162793