diff options
author | kmoore | 2011-11-01 14:59:33 +0000 |
---|---|---|
committer | kmoore | 2011-11-01 14:59:33 +0000 |
commit | 18b99fcf114394e7ae86cdd6225adb180bc34623 (patch) | |
tree | 512b1c8b22090f64905304e39175c8c9e980b98b | |
parent | bc1ab0835c5c2057cac57699c44ffafcfe71a567 (diff) | |
download | webtools.dali-18b99fcf114394e7ae86cdd6225adb180bc34623.tar.gz webtools.dali-18b99fcf114394e7ae86cdd6225adb180bc34623.tar.xz webtools.dali-18b99fcf114394e7ae86cdd6225adb180bc34623.zip |
Bug 347368 - UnsupportedOperationException when element collection contains nested relationship mapping using JoinTable strategy
4 files changed, 40 insertions, 10 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/StringTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/StringTools.java index 0eab3b6e26..23382c6886 100644 --- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/StringTools.java +++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/StringTools.java @@ -3633,6 +3633,15 @@ public final class StringTools { } /** + * Return a string suitable for a <em>singleton</em>; which is the simple + * name of the object's class, since there should only be one. + */ + public static String buildSingletonToString(Object o) { + return buildToStringClassName(o.getClass()); + } + + + /** * Append the string representations of the objects in the specified array * to the specified string builder:<pre> * ["foo", "bar", "baz"] diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java index 0bc515e2a1..c2f070807f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.context; import java.util.List; +import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -20,4 +21,24 @@ public interface JptValidator * Return a boolean used to determine whether to continue validating */ boolean validate(List<IMessage> messages, IReporter reporter); + + final class Null + implements JptValidator + { + private static final JptValidator INSTANCE = new Null(); + public static JptValidator instance() { + return INSTANCE; + } + // ensure single instance + private Null() { + super(); + } + public boolean validate(List<IMessage> messages, IReporter reporter) { + return true; // continue validating + } + @Override + public String toString() { + return StringTools.buildSingletonToString(this); + } + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java index c22861337c..08909da066 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java @@ -1491,15 +1491,15 @@ public abstract class AbstractJavaElementCollectionMapping2_0 } public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$ + return JptValidator.Null.instance(); } public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$ + return JptValidator.Null.instance(); } public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$ + return JptValidator.Null.instance(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java index 398d46138e..71f5a80cc0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java @@ -1444,24 +1444,24 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen return MappingTools.resolveOverriddenRelationship(this.getOverridableTypeMapping(), attributeName); } + public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) { + return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider()); + } + public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) { return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) columnOwner, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider()); } public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$ - } - - public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) { - return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider()); + return JptValidator.Null.instance(); } public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$ + return JptValidator.Null.instance(); } public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) { - throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$ + return JptValidator.Null.instance(); } } |