diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core')
6 files changed, 67 insertions, 5 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties index 7670ad63c7..2226c5f1a4 100644 --- a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties +++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties @@ -98,3 +98,5 @@ VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY=In implied attribute \"{0}\", t DISCRIMINATOR_COLUMN_UNRESOLVED_NAME=Discriminator \"{0}\" column cannot be resolved ENTITY_TABLE_PER_CLASS_NOT_SUPPORTED_ON_PLATFORM=Entity \"{0}\" cannot use table-per-concrete-class inheritance because the chosen JPA platform does not support it ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM=Entity \"{0}\" uses table-per-concrete-class inheritance which is not portable and may not be supported by the JPA provider + +ORDER_COLUMN_AND_ORDER_BY_BOTH_SPECIFIED=Attribute \"{0}\" specifies both OrderColumn and OrderBy annotations
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java index 17006f6fbc..0d4eb05fd8 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.java; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Vector; import org.eclipse.jdt.core.dom.CompilationUnit; @@ -29,6 +30,8 @@ import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; import org.eclipse.jpt.utility.Filter; import org.eclipse.jpt.utility.internal.StringTools; 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; /** * Java multi-relationship (m:m, 1:m) mapping @@ -38,11 +41,6 @@ public abstract class AbstractJavaMultiRelationshipMapping<T extends Relationshi implements JavaMultiRelationshipMapping { protected final JavaOrderable orderable; - - protected String specifiedOrderBy = null; - protected boolean noOrdering = false; - protected boolean pkOrdering = false; - protected boolean customOrdering = false; protected String specifiedMapKey; protected boolean noMapKey = false; @@ -329,5 +327,13 @@ public abstract class AbstractJavaMultiRelationshipMapping<T extends Relationshi public String getMetamodelFieldMapKeyTypeName() { return MappingTools.getMetamodelFieldMapKeyTypeName(this); } + + // ********** validation ********** + + @Override + public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + super.validate(messages, reporter, astRoot); + this.orderable.validate(messages, reporter, astRoot); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java index 75db97ac5c..8a23c0d862 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import org.eclipse.jpt.core.context.FetchType; import org.eclipse.jpt.core.context.MultiRelationshipMapping; @@ -23,6 +24,8 @@ import org.eclipse.jpt.core.jpa2.context.java.JavaPersistentAttribute2_0; import org.eclipse.jpt.core.resource.orm.AbstractXmlMultiRelationshipMapping; import org.eclipse.jpt.core.resource.orm.MapKey; import org.eclipse.jpt.core.resource.orm.OrmFactory; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; /** * ORM multi-relationship (m:m, 1:m) mapping @@ -257,5 +260,14 @@ public abstract class AbstractOrmMultiRelationshipMapping<T extends AbstractXmlM public String getMetamodelFieldMapKeyTypeName() { return MappingTools.getMetamodelFieldMapKeyTypeName(this); } + + + // ********** validation ********** + + @Override + public void validate(List<IMessage> messages, IReporter reporter) { + super.validate(messages, reporter); + this.orderable.validate(messages, reporter); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOrderable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOrderable.java index d36965ff79..cb2620dc1a 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOrderable.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaOrderable.java @@ -10,12 +10,15 @@ package org.eclipse.jpt.core.internal.jpa1.context.java; import java.util.Iterator; +import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.TypeMapping; import org.eclipse.jpt.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode; +import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; +import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; import org.eclipse.jpt.core.jpa2.JpaFactory2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOrderColumn2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOrderable2_0; @@ -25,6 +28,8 @@ import org.eclipse.jpt.core.resource.java.OrderByAnnotation; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.db.Table; import org.eclipse.jpt.utility.Filter; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class GenericJavaOrderable @@ -330,4 +335,24 @@ public class GenericJavaOrderable OrderByAnnotation orderByAnnotation = this.getOrderByAnnotation(); return (orderByAnnotation == null) ? null : orderByAnnotation.getTextRange(astRoot); } + + @Override + public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + super.validate(messages, reporter, astRoot); + if (getOrderColumnAnnotation() != null && getOrderByAnnotation() != null) { + messages.add( + DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.ORDER_COLUMN_AND_ORDER_BY_BOTH_SPECIFIED, + new String[] {getPersistentAttribute().getName()}, + this.getParent(), + this.getOrderByAnnotationTextRange(astRoot) + ) + ); + } + if (isOrderColumnOrdering()) { + //TODO validation message if type is not List + } + } + } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmOrderable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmOrderable.java index 0a8801b6d1..94b9e13562 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmOrderable.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmOrderable.java @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.jpa1.context.orm; +import java.util.List; import org.eclipse.jpt.core.context.TypeMapping; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; @@ -22,6 +23,8 @@ import org.eclipse.jpt.core.resource.orm.XmlOrderable; import org.eclipse.jpt.core.resource.orm.v2_0.XmlOrderable_2_0; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.db.Table; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; /** * ORM multi-relationship (m:m, 1:m) mapping @@ -253,9 +256,19 @@ public class GenericOrmOrderable return getPersistentAttribute().getTypeMapping(); } + + // ********** Validation ********** public TextRange getValidationTextRange() { return getResourceOrderable().getValidationTextRange(); } + + @Override + public void validate(List<IMessage> messages, IReporter reporter) { + super.validate(messages, reporter); + if (isOrderColumnOrdering()) { + //TODO validation message if type is not List + } + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java index e6eb847088..d9da784469 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java @@ -104,4 +104,8 @@ public interface JpaValidationMessages { public static final String DISCRIMINATOR_COLUMN_UNRESOLVED_NAME = "DISCRIMINATOR_COLUMN_UNRESOLVED_NAME"; public static final String ENTITY_TABLE_PER_CLASS_NOT_SUPPORTED_ON_PLATFORM = "ENTITY_TABLE_PER_CLASS_NOT_SUPPORTED_ON_PLATFORM"; public static final String ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM = "ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM"; + + //JPA 2.0 validation messages + public static final String ORDER_COLUMN_AND_ORDER_BY_BOTH_SPECIFIED = "ORDER_COLUMN_AND_ORDER_BY_BOTH_SPECIFIED"; + } |