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 211005 Details for
Bug 331480
[Validation] Need validation for embeddable id class
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
propossed_patch_331480_3.txt (text/plain), 45.18 KB, created by
Leslie Davis
on 2012-02-14 15:02:39 EST
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Leslie Davis
Created:
2012-02-14 15:02:39 EST
Size:
45.18 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jpt.common.core >Index: src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java,v >retrieving revision 1.8 >diff -u -r1.8 JDTTools.java >--- src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java 9 Feb 2012 19:24:18 -0000 1.8 >+++ src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java 14 Feb 2012 19:57:21 -0000 >@@ -19,12 +19,14 @@ > import org.eclipse.jdt.core.IParent; > import org.eclipse.jdt.core.IType; > import org.eclipse.jdt.core.JavaModelException; >+import org.eclipse.jdt.core.Signature; > import org.eclipse.jpt.common.core.JptCommonCorePlugin; > import org.eclipse.jpt.common.utility.Filter; > import org.eclipse.jpt.common.utility.internal.ArrayTools; > import org.eclipse.jpt.common.utility.internal.ClassName; > import org.eclipse.jpt.common.utility.internal.NotNullFilter; > import org.eclipse.jpt.common.utility.internal.ReflectionTools; >+import org.eclipse.jpt.common.utility.internal.StringTools; > import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; >@@ -127,6 +129,54 @@ > return false; > } > >+ >+ /** >+ * Return true if the given type named contains a method name as given with the given parameter types >+ */ >+ public static boolean typeNamedImplementsMethod(IJavaProject javaProject, String typeName, String methodName, String[] parameterTypeNames) { >+ try { >+ return typeImplementsMethod(javaProject.findType(typeName), methodName, parameterTypeNames); >+ } catch (JavaModelException ex) { >+ JptCommonCorePlugin.log(ex); >+ return false; >+ } >+ } >+ >+ private static boolean typeImplementsMethod(IType type, String methodName, String[] parameterTypeNames) { >+ if ((type == null) || methodName == null) { >+ return false; >+ } >+ >+ try { >+ IMethod[] methods = type.getMethods(); >+ for (IMethod method : methods) { >+ if (StringTools.stringsAreEqual(method.getElementName(), methodName)) { >+ if (parameterTypeNames.length == 0 && method.getNumberOfParameters() == 0) { >+ return true; >+ } else if (parameterTypeNames.length == method.getNumberOfParameters()) { >+ int index = 0; >+ String[] parameters = method.getParameterTypes(); >+ String resolvedParameterTypeName = parameters[0]; >+ if (!type.isResolved()) { >+ resolvedParameterTypeName = resolveType(type, Signature.getSignatureSimpleName(parameters[index])); >+ } >+ for (String parameterTypeName : parameterTypeNames) { >+ if (!StringTools.stringsAreEqual(resolvedParameterTypeName, parameterTypeName)) { >+ return false; >+ } >+ index++; >+ } >+ return true; >+ } >+ } >+ } >+ } catch (JavaModelException ex) { >+ JptCommonCorePlugin.log(ex); >+ return false; >+ } >+ return false; >+ } >+ > /** > * Return the names of the specified type's supertypes (class and interfaces). > * This is necessary because, for whatever reason, { @link IType#getSuperInterfaceNames()} >#P org.eclipse.jpt.jpa.core >Index: property_files/jpa_validation.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties,v >retrieving revision 1.16 >diff -u -r1.16 jpa_validation.properties >--- property_files/jpa_validation.properties 9 Feb 2012 19:24:24 -0000 1.16 >+++ property_files/jpa_validation.properties 14 Feb 2012 19:57:24 -0000 >@@ -60,7 +60,8 @@ > TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=The java class for mapped type \"{0}\" has no no-arg constructor defined > TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR=The java class for mapped type \"{0}\" has a private no-arg constructor; it must be public or protected. > TYPE_MAPPING_FINAL_CLASS=The java class for mapped type \"{0}\" is final >-TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED=This class must use either an ID class or an embedded ID to specify its composite primary key, not both. >+TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED=This class must use either an ID or an embedded ID to specify its primary key, not both >+TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED=This class must use either an ID class or an embedded ID to specify its composite primary key, not both > TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=The primary key attribute \"{0}\" does not have a matching ID class attribute > TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute {0} is a duplicate match for ID class > TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_NO_MATCH=There is no ID class attribute to match the primary key attribute {0} >@@ -91,6 +92,11 @@ > ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Target class \"{0}\" does not exist > ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Target class \"{0}\" is not an embeddable or basic type > ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Target class is not defined >+EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded id class should be public >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded id class should include a zero argument constructor >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded id class should include method definitions for equals() and hashcode() >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded id class should implement Serializable >+EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded id class should not contain relationship mappings > EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides. > ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED=In {0}, a column is specified, but it is mapped by a relationship. IDs that are mapped by a relationship should not specify a column. > MAPS_ID_VALUE_INVALID=In {0}, the "maps ID" value ''{1}'' does not refer to an attribute that is used as an ID for this entity >@@ -124,6 +130,12 @@ > VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE=In implied attribute \"{0}\", the map key for a Temporal type must be of type java.util.Date, java.util.Calendar or java.util.GregorianCalendar > VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE=In implied attribute \"{0}\", the element collection value for a Temporal type must be of type java.util.Date, java.util.Calendar or java.util.GregorianCalendar > VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE=In implied attribute \"{0}\", the persistent field or property for a Temporal type must be of type java.util.Date, java.util.Calendar or java.util.GregorianCalendar >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=In implied attribute \"{0}\", embedded id class should be public >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=In implied attribute \"{0}\" embedded id class should include a zero argument constructor >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=In implied attribute \"{0}\", embedded id class should include method definitions for equals() and hashcode() >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=In implied attribute \"{0}\", embedded id class should implement Serializable >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=In implied attribute \"{0}\", embedded id class should not contain relationship mappings >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=In implied attribute \"{0}\", embedded IDs that are mapped by a relationship should not specify any attribute overrides > > ### Table ### > COLLECTION_TABLE_UNRESOLVED_CATALOG = Catalog \"{0}\" cannot be resolved for collection table \"{1}\" >Index: src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEmbeddedIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEmbeddedIdMapping.java,v >retrieving revision 1.1 >diff -u -r1.1 AbstractJavaEmbeddedIdMapping.java >--- src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEmbeddedIdMapping.java 5 Dec 2011 17:48:38 -0000 1.1 >+++ src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEmbeddedIdMapping.java 14 Feb 2012 19:57:24 -0000 >@@ -9,8 +9,12 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.core.internal.context.java; > >+import java.io.Serializable; > import java.util.List; >+ >+import org.eclipse.jdt.core.IJavaProject; > import org.eclipse.jdt.core.dom.CompilationUnit; >+import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; > import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; > import org.eclipse.jpt.jpa.core.MappingKeys; >@@ -107,15 +111,184 @@ > // (in JPA 1.0, this will obviously never be reached) > if (this.derived > && (this.attributeOverrideContainer.getSpecifiedOverridesSize() > 0)) { >- messages.add( >- DefaultJpaValidationMessages.buildMessage( >- IMessage.HIGH_SEVERITY, >- JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, >- EMPTY_STRING_ARRAY, >- this.attributeOverrideContainer, >- this.attributeOverrideContainer.getValidationTextRange(astRoot) >- ) >- ); >+ if (this.getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, >+ new String[] {this.getName()}, >+ this.attributeOverrideContainer, >+ this.attributeOverrideContainer.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, >+ EMPTY_STRING_ARRAY, >+ this.attributeOverrideContainer, >+ this.attributeOverrideContainer.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } >+ >+ validateTargetEmbeddableImplementsSerializable(messages, reporter, astRoot); >+ validateNoRelationshipMappingsOnTargetEmbeddable(messages, reporter, astRoot); >+ validateTargetEmbeddableImplementsEqualsAndHashcode(messages, reporter, astRoot); >+ validateTargetEmbeddableIsPublic(messages, reporter, astRoot); >+ validateTargetEmbeddableImplementsZeroArgConstructor(messages, reporter, astRoot); >+ } >+ >+ protected void validateTargetEmbeddableImplementsZeroArgConstructor(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.classHasPublicZeroArgConstructor(javaProject, targetEmbeddableClassName)){ >+ if (this.getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, >+ new String[] {this.getName()}, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableImplementsEqualsAndHashcode(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "equals", new String[] {Object.class.getName()}) >+ || !JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "hashCode", EMPTY_STRING_ARRAY)) { >+ if (this.getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, >+ new String[] {this.getName()}, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableIsPublic(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ if (this.getTargetEmbeddable() != null) { >+ if (!getTargetEmbeddable().getJavaResourceType().isPublic()) { >+ if (getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, >+ new String[] {this.getName()}, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableImplementsSerializable(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.typeIsSubType(javaProject, targetEmbeddableClassName, Serializable.class.getName())) { >+ if (getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, >+ new String[] {this.getName()}, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } >+ } >+ } >+ >+ protected void validateNoRelationshipMappingsOnTargetEmbeddable(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { >+ if (this.getTargetEmbeddable() != null) { >+ TypeMapping targetEmbeddableTypeMapping = this.getTargetEmbeddable().getPersistentType().getMapping(); >+ if (targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()) { >+ if (getPersistentAttribute().isVirtual()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, >+ new String[] {this.getName()}, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } else { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange(astRoot) >+ ) >+ ); >+ } >+ } > } > } > >Index: src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractEntityPrimaryKeyValidator.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractEntityPrimaryKeyValidator.java,v >retrieving revision 1.3 >diff -u -r1.3 AbstractEntityPrimaryKeyValidator.java >--- src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractEntityPrimaryKeyValidator.java 14 Sep 2011 19:39:22 -0000 1.3 >+++ src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractEntityPrimaryKeyValidator.java 14 Feb 2012 19:57:24 -0000 >@@ -72,6 +72,8 @@ > validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter); > // ... and only one embedded id > validateOneEmbeddedId(messages, reporter); >+ // ... and not both id and embedded id >+ validateOneOfEmbeddedOrIdIsUsed(messages, reporter); > > validateMapsIdMappings(messages, reporter); > >Index: src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractMappedSuperclassPrimaryKeyValidator.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractMappedSuperclassPrimaryKeyValidator.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractMappedSuperclassPrimaryKeyValidator.java >--- src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractMappedSuperclassPrimaryKeyValidator.java 12 May 2011 04:20:30 -0000 1.2 >+++ src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractMappedSuperclassPrimaryKeyValidator.java 14 Feb 2012 19:57:24 -0000 >@@ -43,6 +43,8 @@ > validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter); > // ... and only one embedded id > validateOneEmbeddedId(messages, reporter); >+ // ... and not both id and embedded id >+ validateOneOfEmbeddedOrIdIsUsed(messages, reporter); > > if (specifiesIdClass()) { > validateIdClass(idClassReference().getIdClass(), messages, reporter); >Index: src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java,v >retrieving revision 1.6 >diff -u -r1.6 AbstractPrimaryKeyValidator.java >--- src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java 24 Jan 2012 21:52:02 -0000 1.6 >+++ src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java 14 Feb 2012 19:57:24 -0000 >@@ -122,6 +122,19 @@ > } > } > >+ //only embedded or id, both may not be used >+ protected void validateOneOfEmbeddedOrIdIsUsed(List<IMessage> messages, IReporter reporter) { >+ if (definesEmbeddedIdMapping(typeMapping) && definesIdMapping(typeMapping)) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED, >+ EMPTY_STRING_ARRAY, >+ typeMapping(), >+ textRangeResolver().getTypeMappingTextRange())); >+ } >+ } >+ > // only one embedded id may be used > protected void validateOneEmbeddedId(List<IMessage> messages, IReporter reporter) { > if (CollectionTools.size(getEmbeddedIdMappings(typeMapping())) > 1) { >@@ -596,6 +609,14 @@ > return ! CollectionTools.isEmpty(getEmbeddedIdMappings(typeMapping)); > } > >+ /** >+ * Return whether an id is defined for this class, whether that be locally >+ * or on an ancestor >+ */ >+ protected boolean definesIdMapping(TypeMapping typeMapping) { >+ return ! CollectionTools.isEmpty(getIdMappings(typeMapping)); >+ } >+ > protected EmbeddedIdMapping getEmbeddedIdMapping(TypeMapping typeMapping) { > Iterable<EmbeddedIdMapping> embeddedIdMappings = getEmbeddedIdMappings(typeMapping); > if (CollectionTools.size(embeddedIdMappings) == 1) { >Index: src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java,v >retrieving revision 1.4 >diff -u -r1.4 GenericOrmEmbeddedIdMapping.java >--- src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java 2 Aug 2011 13:24:16 -0000 1.4 >+++ src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java 14 Feb 2012 19:57:24 -0000 >@@ -9,7 +9,11 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; > >+import java.io.Serializable; > import java.util.List; >+ >+import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; > import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; > import org.eclipse.jpt.jpa.core.MappingKeys; >@@ -113,7 +117,106 @@ > @Override > public void validate(List<IMessage> messages, IReporter reporter) { > super.validate(messages, reporter); >+ validateMappedByRelationshipAndAttributeOverridesSpecified(messages, reporter); >+ validateTargetEmbeddableImplementsEqualsAndHashcode(messages, reporter); >+ validateTargetEmbeddableIsPublic(messages, reporter); >+ validateTargetEmbeddableImplementsSerializable(messages, reporter); >+ validateNoRelationshipMappingsOnTargetEmbeddable(messages, reporter); >+ validateTargetEmbeddableImplementsNoArgConstructor(messages, reporter); >+ } >+ >+ protected void validateNoRelationshipMappingsOnTargetEmbeddable(List<IMessage> messages, IReporter reporter) { >+ if (this.getTargetEmbeddable() != null) { >+ TypeMapping targetEmbeddableTypeMapping = this.getTargetEmbeddable().getPersistentType().getMapping(); >+ if (targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext() >+ || targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange() >+ ) >+ ); >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableImplementsSerializable(List<IMessage> messages, IReporter reporter) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.typeIsSubType(javaProject, targetEmbeddableClassName, Serializable.class.getName())) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange() >+ ) >+ ); >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableIsPublic(List<IMessage> messages, IReporter reporter) { >+ if (this.getTargetEmbeddable() != null) { >+ if (!getTargetEmbeddable().getJavaResourceType().isPublic()) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange() >+ ) >+ ); >+ } >+ } >+ } > >+ protected void validateTargetEmbeddableImplementsEqualsAndHashcode(List<IMessage> messages, IReporter reporter) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "equals", new String[] {Object.class.getName()}) >+ || !JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "hashCode", EMPTY_STRING_ARRAY)) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange() >+ ) >+ ); >+ } >+ } >+ } >+ >+ protected void validateTargetEmbeddableImplementsNoArgConstructor(List<IMessage> messages, IReporter reporter) { >+ if (this.getTargetEmbeddable() != null) { >+ String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName(); >+ IJavaProject javaProject = getJpaProject().getJavaProject(); >+ if (!JDTTools.classHasPublicZeroArgConstructor(javaProject, targetEmbeddableClassName)) { >+ messages.add( >+ DefaultJpaValidationMessages.buildMessage( >+ IMessage.HIGH_SEVERITY, >+ JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, >+ EMPTY_STRING_ARRAY, >+ this, >+ this.getValidationTextRange() >+ ) >+ ); >+ } >+ } >+ } >+ >+ protected void validateMappedByRelationshipAndAttributeOverridesSpecified(List<IMessage> messages, IReporter 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) >@@ -130,8 +233,6 @@ > ); > } > } >- >- > // ********** attribute override container owner ********* > > protected class AttributeOverrideContainerOwner >Index: src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java,v >retrieving revision 1.14 >diff -u -r1.14 JpaValidationMessages.java >--- src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java 5 Jan 2012 20:38:22 -0000 1.14 >+++ src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java 14 Feb 2012 19:57:25 -0000 >@@ -64,6 +64,7 @@ > public static final String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR"; > public static final String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR"; > public static final String TYPE_MAPPING_FINAL_CLASS = "TYPE_MAPPING_FINAL_CLASS"; >+ public static final String TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED = "TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED"; > public static final String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED = "TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED"; > public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST"; > public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH"; >@@ -95,6 +96,11 @@ > public static final String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST = "ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST"; > public static final String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE = "ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE"; > public static final String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED = "ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED"; >+ public static final String EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC="EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC"; >+ public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE = "EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE"; >+ public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR = "EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR"; >+ public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE="EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE"; >+ public static final String EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS="EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS"; > 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 ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED = "ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED"; > public static final String MAPS_ID_VALUE_INVALID = "MAPS_ID_VALUE_INVALID"; >@@ -130,6 +136,12 @@ > public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE"; > public static final String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE = "VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE"; > public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC"; >+ public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED"; > > > //Table >#P org.eclipse.jpt.jpa.ui >Index: property_files/jpt_ui_validation_preferences.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties,v >retrieving revision 1.10 >diff -u -r1.10 jpt_ui_validation_preferences.properties >--- property_files/jpt_ui_validation_preferences.properties 5 Jan 2012 20:38:20 -0000 1.10 >+++ property_files/jpt_ui_validation_preferences.properties 14 Feb 2012 19:57:26 -0000 >@@ -60,6 +60,7 @@ > TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=Mapped Java class has no no-arg constructor: > TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR=Mapped Java class has a private no-arg constructor: > TYPE_MAPPING_FINAL_CLASS=Mapped Java class is final: >+TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED=ID and embedded ID are not allowed to use together: > TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED=ID class and embedded ID mapping are not allowed to use together: > TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=Primary key attribute does not have a matching ID class attribute: > TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute is a duplicate match for ID class: >@@ -90,6 +91,11 @@ > ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath: > ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type: > ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified: >+EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded ID classes should be public: >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded ID classes should implement equals() and hashcode(): >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded ID classes should implement a zero argument constructor: >+EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded ID classes should implement Serializable: >+EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded ID classes should not contain relationship mappings: > EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides: > ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED=IDs that are mapped by a relationship should not specify a column: > MAPS_ID_VALUE_INVALID="Maps ID" attribute value invalid: >@@ -120,6 +126,12 @@ > VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath: > VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type: > VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified: >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded ID classes should implement a zero argument constructor: >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded ID classes should implement equals() and hashcode(): >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded ID classes should not contain relationship mappings: >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded ID classes should implement Serializable: >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded ID classes should be public: >+VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides: > VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY=Target entity is not an Entity: > VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED=Target entity is not defined: > VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED=Map key class not defined: >Index: src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java,v >retrieving revision 1.10 >diff -u -r1.10 JptUiValidationPreferenceMessages.java >--- src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java 5 Jan 2012 20:38:20 -0000 1.10 >+++ src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java 14 Feb 2012 19:57:26 -0000 >@@ -68,6 +68,7 @@ > public static String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR; > public static String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR; > public static String TYPE_MAPPING_FINAL_CLASS; >+ public static String TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED; > public static String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED; //3.0 M7 > public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST; //3.2 > public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH; //3.0 M7 >@@ -99,6 +100,11 @@ > public static String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST;// 3.0 M7 > public static String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE; > public static String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED; >+ public static String EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC; >+ public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE; >+ public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR; >+ public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE; >+ public static String EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS; > public static String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED; //3.0 M7 > public static String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED; //3.0 M7 > public static String MAPS_ID_VALUE_INVALID; >@@ -135,6 +141,12 @@ > public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE; > public static String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE; > public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC; >+ public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED; > > > // Database Category >Index: src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java,v >retrieving revision 1.12 >diff -u -r1.12 JpaProblemSeveritiesPage.java >--- src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java 10 Feb 2012 20:48:57 -0000 1.12 >+++ src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java 14 Feb 2012 19:57:27 -0000 >@@ -323,6 +323,7 @@ > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR, JpaValidationMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR, JpaValidationMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_FINAL_CLASS, JpaValidationMessages.TYPE_MAPPING_FINAL_CLASS); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED, JpaValidationMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED, JpaValidationMessages.TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED); //3.0 M7 > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST, JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST); //3.2 > addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH, JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH); //3.0 M7 >@@ -356,6 +357,11 @@ > addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE, JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST, JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST); //3.0 M7 > addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED, JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED); //3.0 M7 > addLabeledCombo(parent, JptUiValidationPreferenceMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED, JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED); //3.0 M7 > addLabeledCombo(parent, JptUiValidationPreferenceMessages.MAPS_ID_VALUE_INVALID, JpaValidationMessages.MAPS_ID_VALUE_INVALID); >@@ -387,6 +393,12 @@ > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST, JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE, JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED, JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS); >+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED, JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY, JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED, JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED); > addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED, JpaValidationMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED);
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
Flags:
neil.hauge
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 331480
:
192311
|
203372
| 211005