Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 331480 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java (+50 lines)
Lines 19-30 Link Here
19
import org.eclipse.jdt.core.IParent;
19
import org.eclipse.jdt.core.IParent;
20
import org.eclipse.jdt.core.IType;
20
import org.eclipse.jdt.core.IType;
21
import org.eclipse.jdt.core.JavaModelException;
21
import org.eclipse.jdt.core.JavaModelException;
22
import org.eclipse.jdt.core.Signature;
22
import org.eclipse.jpt.common.core.JptCommonCorePlugin;
23
import org.eclipse.jpt.common.core.JptCommonCorePlugin;
23
import org.eclipse.jpt.common.utility.Filter;
24
import org.eclipse.jpt.common.utility.Filter;
24
import org.eclipse.jpt.common.utility.internal.ArrayTools;
25
import org.eclipse.jpt.common.utility.internal.ArrayTools;
25
import org.eclipse.jpt.common.utility.internal.ClassName;
26
import org.eclipse.jpt.common.utility.internal.ClassName;
26
import org.eclipse.jpt.common.utility.internal.NotNullFilter;
27
import org.eclipse.jpt.common.utility.internal.NotNullFilter;
27
import org.eclipse.jpt.common.utility.internal.ReflectionTools;
28
import org.eclipse.jpt.common.utility.internal.ReflectionTools;
29
import org.eclipse.jpt.common.utility.internal.StringTools;
28
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
30
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
29
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
31
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
30
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
32
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
Lines 127-132 Link Here
127
		return false;
129
		return false;
128
	}
130
	}
129
131
132
	
133
	/**
134
	 * Return true if the given type named contains a method name as given with the given parameter types
135
	 */
136
	public static boolean typeNamedImplementsMethod(IJavaProject javaProject, String typeName, String methodName, String[] parameterTypeNames) {
137
		try {
138
			return typeImplementsMethod(javaProject.findType(typeName), methodName, parameterTypeNames);
139
		} catch (JavaModelException ex) {
140
			JptCommonCorePlugin.log(ex);
141
			return false;
142
		}
143
	}
144
145
	private static boolean typeImplementsMethod(IType type, String methodName, String[] parameterTypeNames) {
146
		if ((type == null) || methodName == null) {
147
			return false;
148
		}
149
150
		try {
151
			IMethod[] methods = type.getMethods();
152
			for (IMethod method : methods) {
153
				if (StringTools.stringsAreEqual(method.getElementName(), methodName)) {
154
					if (parameterTypeNames.length == 0 && method.getNumberOfParameters() == 0) {
155
						return true;
156
					} else if (parameterTypeNames.length == method.getNumberOfParameters()) {
157
						int index = 0;
158
						String[] parameters = method.getParameterTypes();
159
						String resolvedParameterTypeName = parameters[0];
160
						if (!type.isResolved()) {
161
							resolvedParameterTypeName = resolveType(type, Signature.getSignatureSimpleName(parameters[index]));
162
						}
163
						for (String parameterTypeName : parameterTypeNames) {
164
							if (!StringTools.stringsAreEqual(resolvedParameterTypeName, parameterTypeName)) {
165
								return false;
166
							}
167
							index++;
168
						}
169
						return true;
170
					}
171
				}
172
			}
173
		} catch (JavaModelException ex) {
174
			JptCommonCorePlugin.log(ex);
175
			return false;			
176
		}
177
		return false;
178
	}
179
	
130
	/**
180
	/**
131
	 * Return the names of the specified type's supertypes (class and interfaces).
181
	 * Return the names of the specified type's supertypes (class and interfaces).
132
	 * This is necessary because, for whatever reason, { @link IType#getSuperInterfaceNames()}
182
	 * This is necessary because, for whatever reason, { @link IType#getSuperInterfaceNames()}
(-)property_files/jpa_validation.properties (-1 / +13 lines)
Lines 60-66 Link Here
60
TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=The java class for mapped type \"{0}\" has no no-arg constructor defined
60
TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=The java class for mapped type \"{0}\" has no no-arg constructor defined
61
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.
61
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.
62
TYPE_MAPPING_FINAL_CLASS=The java class for mapped type \"{0}\" is final
62
TYPE_MAPPING_FINAL_CLASS=The java class for mapped type \"{0}\" is final
63
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.
63
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
64
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
64
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=The primary key attribute \"{0}\" does not have a matching ID class attribute
65
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=The primary key attribute \"{0}\" does not have a matching ID class attribute
65
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute {0} is a duplicate match for ID class
66
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute {0} is a duplicate match for ID class
66
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_NO_MATCH=There is no ID class attribute to match the primary key attribute {0}
67
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_NO_MATCH=There is no ID class attribute to match the primary key attribute {0}
Lines 91-96 Link Here
91
ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Target class \"{0}\" does not exist
92
ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Target class \"{0}\" does not exist
92
ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Target class \"{0}\" is not an embeddable or basic type
93
ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Target class \"{0}\" is not an embeddable or basic type
93
ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Target class is not defined
94
ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Target class is not defined
95
EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded id class should be public
96
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded id class should include a zero argument constructor
97
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded id class should include method definitions for equals() and hashcode()
98
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded id class should implement Serializable
99
EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded id class should not contain relationship mappings
94
EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides.
100
EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides.
95
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.
101
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.
96
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
102
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
Lines 124-129 Link Here
124
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
130
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
125
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
131
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
126
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
132
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
133
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=In implied attribute \"{0}\", embedded id class should be public
134
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=In implied attribute \"{0}\" embedded id class should include a zero argument constructor
135
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=In implied attribute \"{0}\", embedded id class should include method definitions for equals() and hashcode()
136
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=In implied attribute \"{0}\", embedded id class should implement Serializable
137
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=In implied attribute \"{0}\", embedded id class should not contain relationship mappings
138
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
127
139
128
### Table ###
140
### Table ###
129
COLLECTION_TABLE_UNRESOLVED_CATALOG = Catalog \"{0}\" cannot be resolved for collection table \"{1}\"
141
COLLECTION_TABLE_UNRESOLVED_CATALOG = Catalog \"{0}\" cannot be resolved for collection table \"{1}\"
(-)src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEmbeddedIdMapping.java (-9 / +182 lines)
Lines 9-16 Link Here
9
 ******************************************************************************/
9
 ******************************************************************************/
10
package org.eclipse.jpt.jpa.core.internal.context.java;
10
package org.eclipse.jpt.jpa.core.internal.context.java;
11
11
12
import java.io.Serializable;
12
import java.util.List;
13
import java.util.List;
14
15
import org.eclipse.jdt.core.IJavaProject;
13
import org.eclipse.jdt.core.dom.CompilationUnit;
16
import org.eclipse.jdt.core.dom.CompilationUnit;
17
import org.eclipse.jpt.common.core.internal.utility.JDTTools;
14
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
18
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
15
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
19
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
16
import org.eclipse.jpt.jpa.core.MappingKeys;
20
import org.eclipse.jpt.jpa.core.MappingKeys;
Lines 107-121 Link Here
107
		// (in JPA 1.0, this will obviously never be reached)
111
		// (in JPA 1.0, this will obviously never be reached)
108
		if (this.derived
112
		if (this.derived
109
				&& (this.attributeOverrideContainer.getSpecifiedOverridesSize() > 0)) {
113
				&& (this.attributeOverrideContainer.getSpecifiedOverridesSize() > 0)) {
110
			messages.add(
114
			if (this.getPersistentAttribute().isVirtual()) {
111
				DefaultJpaValidationMessages.buildMessage(
115
				messages.add(
112
					IMessage.HIGH_SEVERITY,
116
						DefaultJpaValidationMessages.buildMessage(
113
					JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED,
117
								IMessage.HIGH_SEVERITY,
114
					EMPTY_STRING_ARRAY,
118
								JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED,
115
					this.attributeOverrideContainer,
119
								new String[] {this.getName()},
116
					this.attributeOverrideContainer.getValidationTextRange(astRoot)
120
								this.attributeOverrideContainer,
117
				)
121
								this.attributeOverrideContainer.getValidationTextRange(astRoot)
118
			);
122
						)
123
				);				
124
			} else {
125
				messages.add(
126
						DefaultJpaValidationMessages.buildMessage(
127
								IMessage.HIGH_SEVERITY,
128
								JpaValidationMessages.EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED,
129
								EMPTY_STRING_ARRAY,
130
								this.attributeOverrideContainer,
131
								this.attributeOverrideContainer.getValidationTextRange(astRoot)
132
						)
133
				);
134
			}
135
		}
136
		
137
		validateTargetEmbeddableImplementsSerializable(messages, reporter, astRoot);
138
		validateNoRelationshipMappingsOnTargetEmbeddable(messages, reporter, astRoot);
139
		validateTargetEmbeddableImplementsEqualsAndHashcode(messages, reporter, astRoot);
140
		validateTargetEmbeddableIsPublic(messages, reporter, astRoot);
141
		validateTargetEmbeddableImplementsZeroArgConstructor(messages, reporter, astRoot);
142
	}
143
144
	protected void validateTargetEmbeddableImplementsZeroArgConstructor(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
145
		if (this.getTargetEmbeddable() != null) {
146
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
147
			IJavaProject javaProject = getJpaProject().getJavaProject();
148
			if (!JDTTools.classHasPublicZeroArgConstructor(javaProject, targetEmbeddableClassName)){
149
				if (this.getPersistentAttribute().isVirtual()) {
150
					messages.add(
151
							DefaultJpaValidationMessages.buildMessage(
152
									IMessage.HIGH_SEVERITY,
153
									JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR,
154
									new String[] {this.getName()},
155
									this,
156
									this.getValidationTextRange(astRoot)
157
							)
158
					);						
159
				} else {
160
					messages.add(
161
							DefaultJpaValidationMessages.buildMessage(
162
									IMessage.HIGH_SEVERITY,
163
									JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR,
164
									EMPTY_STRING_ARRAY,
165
									this,
166
									this.getValidationTextRange(astRoot)
167
							)
168
					);
169
				}
170
			}
171
		}
172
	}
173
174
	protected void validateTargetEmbeddableImplementsEqualsAndHashcode(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
175
		if (this.getTargetEmbeddable() != null) {
176
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
177
			IJavaProject javaProject = getJpaProject().getJavaProject();
178
			if (!JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "equals", new String[] {Object.class.getName()})
179
					|| !JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "hashCode", EMPTY_STRING_ARRAY)) {
180
				if (this.getPersistentAttribute().isVirtual()) {
181
					messages.add(
182
							DefaultJpaValidationMessages.buildMessage(
183
									IMessage.HIGH_SEVERITY,
184
									JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE,
185
									new String[] {this.getName()},
186
									this,
187
									this.getValidationTextRange(astRoot)
188
							)
189
					);						
190
				} else {
191
					messages.add(
192
							DefaultJpaValidationMessages.buildMessage(
193
									IMessage.HIGH_SEVERITY,
194
									JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE,
195
									EMPTY_STRING_ARRAY,
196
									this,
197
									this.getValidationTextRange(astRoot)
198
							)
199
					);
200
				}
201
			}
202
		}
203
	}
204
205
	protected void validateTargetEmbeddableIsPublic(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
206
		if (this.getTargetEmbeddable() != null) {
207
			if (!getTargetEmbeddable().getJavaResourceType().isPublic()) {
208
				if (getPersistentAttribute().isVirtual()) {
209
					messages.add(
210
							DefaultJpaValidationMessages.buildMessage(
211
									IMessage.HIGH_SEVERITY,
212
									JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC,
213
									new String[] {this.getName()},
214
									this,
215
									this.getValidationTextRange(astRoot)
216
							)
217
					);					
218
				} else {
219
					messages.add(
220
							DefaultJpaValidationMessages.buildMessage(
221
									IMessage.HIGH_SEVERITY,
222
									JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC,
223
									EMPTY_STRING_ARRAY,
224
									this,
225
									this.getValidationTextRange(astRoot)
226
							)
227
					);
228
				}
229
			}
230
		}
231
	}
232
233
	protected void validateTargetEmbeddableImplementsSerializable(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
234
		if (this.getTargetEmbeddable() != null) {
235
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
236
			IJavaProject javaProject = getJpaProject().getJavaProject();
237
			if (!JDTTools.typeIsSubType(javaProject, targetEmbeddableClassName, Serializable.class.getName())) {
238
				if (getPersistentAttribute().isVirtual()) {
239
					messages.add(
240
							DefaultJpaValidationMessages.buildMessage(
241
									IMessage.HIGH_SEVERITY,
242
									JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE,
243
									new String[] {this.getName()},
244
									this,
245
									this.getValidationTextRange(astRoot)
246
							)
247
					);					
248
				} else {
249
					messages.add(
250
							DefaultJpaValidationMessages.buildMessage(
251
									IMessage.HIGH_SEVERITY,
252
									JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE,
253
									EMPTY_STRING_ARRAY,
254
									this,
255
									this.getValidationTextRange(astRoot)
256
							)
257
					);
258
				}
259
			}
260
		}
261
	}
262
263
	protected void validateNoRelationshipMappingsOnTargetEmbeddable(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
264
		if (this.getTargetEmbeddable() != null) {
265
			TypeMapping targetEmbeddableTypeMapping = this.getTargetEmbeddable().getPersistentType().getMapping();
266
			if (targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
267
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
268
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
269
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()) {
270
				if (getPersistentAttribute().isVirtual()) {
271
					messages.add(
272
							DefaultJpaValidationMessages.buildMessage(
273
									IMessage.HIGH_SEVERITY,
274
									JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS,
275
									new String[] {this.getName()},
276
									this,
277
									this.getValidationTextRange(astRoot)
278
							)
279
					);					
280
				} else {
281
					messages.add(
282
							DefaultJpaValidationMessages.buildMessage(
283
									IMessage.HIGH_SEVERITY,
284
									JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS,
285
									EMPTY_STRING_ARRAY,
286
									this,
287
									this.getValidationTextRange(astRoot)
288
							)
289
					);
290
				}
291
			}
119
		}
292
		}
120
	}
293
	}
121
294
(-)src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractEntityPrimaryKeyValidator.java (+2 lines)
Lines 72-77 Link Here
72
		validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter);
72
		validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter);
73
		// ... and only one embedded id
73
		// ... and only one embedded id
74
		validateOneEmbeddedId(messages, reporter);
74
		validateOneEmbeddedId(messages, reporter);
75
		// ... and not both id and embedded id
76
		validateOneOfEmbeddedOrIdIsUsed(messages, reporter);
75
		
77
		
76
		validateMapsIdMappings(messages, reporter);
78
		validateMapsIdMappings(messages, reporter);
77
		
79
		
(-)src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractMappedSuperclassPrimaryKeyValidator.java (+2 lines)
Lines 43-48 Link Here
43
		validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter);
43
		validateOneOfIdClassOrEmbeddedIdIsUsed(messages, reporter);
44
		// ... and only one embedded id
44
		// ... and only one embedded id
45
		validateOneEmbeddedId(messages, reporter);
45
		validateOneEmbeddedId(messages, reporter);
46
		// ... and not both id and embedded id
47
		validateOneOfEmbeddedOrIdIsUsed(messages, reporter);
46
		
48
		
47
		if (specifiesIdClass()) {
49
		if (specifiesIdClass()) {
48
			validateIdClass(idClassReference().getIdClass(), messages, reporter);
50
			validateIdClass(idClassReference().getIdClass(), messages, reporter);
(-)src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java (+21 lines)
Lines 122-127 Link Here
122
		}
122
		}
123
	}
123
	}
124
	
124
	
125
	//only embedded or id, both may not be used
126
	protected void validateOneOfEmbeddedOrIdIsUsed(List<IMessage> messages, IReporter reporter) {
127
		if (definesEmbeddedIdMapping(typeMapping) && definesIdMapping(typeMapping)) {
128
			messages.add(
129
					DefaultJpaValidationMessages.buildMessage(
130
						IMessage.HIGH_SEVERITY,
131
						JpaValidationMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED,
132
						EMPTY_STRING_ARRAY,
133
						typeMapping(),
134
						textRangeResolver().getTypeMappingTextRange()));
135
		}
136
	}
137
	
125
	// only one embedded id may be used
138
	// only one embedded id may be used
126
	protected void validateOneEmbeddedId(List<IMessage> messages, IReporter reporter) {
139
	protected void validateOneEmbeddedId(List<IMessage> messages, IReporter reporter) {
127
		if (CollectionTools.size(getEmbeddedIdMappings(typeMapping())) > 1) {
140
		if (CollectionTools.size(getEmbeddedIdMappings(typeMapping())) > 1) {
Lines 596-601 Link Here
596
		return ! CollectionTools.isEmpty(getEmbeddedIdMappings(typeMapping));
609
		return ! CollectionTools.isEmpty(getEmbeddedIdMappings(typeMapping));
597
	}
610
	}
598
	
611
	
612
	/**
613
	 * Return whether an id is defined for this class, whether that be locally
614
	 * or on an ancestor
615
	 */
616
	protected boolean definesIdMapping(TypeMapping typeMapping) {
617
		return ! CollectionTools.isEmpty(getIdMappings(typeMapping));
618
	}
619
	
599
	protected EmbeddedIdMapping getEmbeddedIdMapping(TypeMapping typeMapping) {
620
	protected EmbeddedIdMapping getEmbeddedIdMapping(TypeMapping typeMapping) {
600
		Iterable<EmbeddedIdMapping> embeddedIdMappings = getEmbeddedIdMappings(typeMapping);
621
		Iterable<EmbeddedIdMapping> embeddedIdMappings = getEmbeddedIdMappings(typeMapping);
601
		if (CollectionTools.size(embeddedIdMappings) == 1) {
622
		if (CollectionTools.size(embeddedIdMappings) == 1) {
(-)src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java (-2 / +103 lines)
Lines 9-15 Link Here
9
 ******************************************************************************/
9
 ******************************************************************************/
10
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
10
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
11
11
12
import java.io.Serializable;
12
import java.util.List;
13
import java.util.List;
14
15
import org.eclipse.jdt.core.IJavaProject;
16
import org.eclipse.jpt.common.core.internal.utility.JDTTools;
13
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
17
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
14
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
18
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
15
import org.eclipse.jpt.jpa.core.MappingKeys;
19
import org.eclipse.jpt.jpa.core.MappingKeys;
Lines 113-119 Link Here
113
	@Override
117
	@Override
114
	public void validate(List<IMessage> messages, IReporter reporter) {
118
	public void validate(List<IMessage> messages, IReporter reporter) {
115
		super.validate(messages, reporter);
119
		super.validate(messages, reporter);
120
		validateMappedByRelationshipAndAttributeOverridesSpecified(messages, reporter);
121
		validateTargetEmbeddableImplementsEqualsAndHashcode(messages, reporter);
122
		validateTargetEmbeddableIsPublic(messages, reporter);
123
		validateTargetEmbeddableImplementsSerializable(messages, reporter);
124
		validateNoRelationshipMappingsOnTargetEmbeddable(messages, reporter);
125
		validateTargetEmbeddableImplementsNoArgConstructor(messages, reporter);
126
	}
127
	
128
	protected void validateNoRelationshipMappingsOnTargetEmbeddable(List<IMessage> messages, IReporter reporter) {
129
		if (this.getTargetEmbeddable() != null) {
130
			TypeMapping targetEmbeddableTypeMapping = this.getTargetEmbeddable().getPersistentType().getMapping();
131
			if (targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
132
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
133
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()
134
					|| targetEmbeddableTypeMapping.getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY).iterator().hasNext()) {
135
				messages.add(
136
						DefaultJpaValidationMessages.buildMessage(
137
								IMessage.HIGH_SEVERITY,
138
								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS,
139
								EMPTY_STRING_ARRAY,
140
								this,
141
								this.getValidationTextRange()
142
						)
143
				);
144
			}
145
		}
146
	}
147
	
148
	protected void validateTargetEmbeddableImplementsSerializable(List<IMessage> messages, IReporter reporter) {
149
		if (this.getTargetEmbeddable() != null) {
150
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
151
			IJavaProject javaProject = getJpaProject().getJavaProject();
152
			if (!JDTTools.typeIsSubType(javaProject, targetEmbeddableClassName, Serializable.class.getName())) {
153
				messages.add(
154
						DefaultJpaValidationMessages.buildMessage(
155
								IMessage.HIGH_SEVERITY,
156
								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE,
157
								EMPTY_STRING_ARRAY,
158
								this,
159
								this.getValidationTextRange()
160
						)
161
				);
162
			}
163
		}
164
	}
165
	
166
	protected void validateTargetEmbeddableIsPublic(List<IMessage> messages, IReporter reporter) {
167
		if (this.getTargetEmbeddable() != null) {
168
			if (!getTargetEmbeddable().getJavaResourceType().isPublic()) {
169
				messages.add(
170
						DefaultJpaValidationMessages.buildMessage(
171
								IMessage.HIGH_SEVERITY,
172
								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC,
173
								EMPTY_STRING_ARRAY,
174
								this,
175
								this.getValidationTextRange()
176
						)
177
				);
178
			}
179
		}
180
	}
116
181
182
	protected void validateTargetEmbeddableImplementsEqualsAndHashcode(List<IMessage> messages, IReporter reporter) {
183
		if (this.getTargetEmbeddable() != null) {
184
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
185
			IJavaProject javaProject = getJpaProject().getJavaProject();
186
			if (!JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "equals", new String[] {Object.class.getName()})
187
					|| !JDTTools.typeNamedImplementsMethod(javaProject, targetEmbeddableClassName, "hashCode", EMPTY_STRING_ARRAY)) {
188
				messages.add(
189
						DefaultJpaValidationMessages.buildMessage(
190
								IMessage.HIGH_SEVERITY,
191
								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE,
192
								EMPTY_STRING_ARRAY,
193
								this,
194
								this.getValidationTextRange()
195
						)
196
				);
197
			}
198
		}
199
	}
200
	
201
	protected void validateTargetEmbeddableImplementsNoArgConstructor(List<IMessage> messages, IReporter reporter) {
202
		if (this.getTargetEmbeddable() != null) {
203
			String targetEmbeddableClassName = this.getTargetEmbeddable().getPersistentType().getName();
204
			IJavaProject javaProject = getJpaProject().getJavaProject();
205
			if (!JDTTools.classHasPublicZeroArgConstructor(javaProject, targetEmbeddableClassName)) {
206
				messages.add(
207
						DefaultJpaValidationMessages.buildMessage(
208
								IMessage.HIGH_SEVERITY,
209
								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR,
210
								EMPTY_STRING_ARRAY,
211
								this,
212
								this.getValidationTextRange()
213
						)
214
				);
215
			}
216
		}
217
	}
218
	
219
	protected void validateMappedByRelationshipAndAttributeOverridesSpecified(List<IMessage> messages, IReporter reporter) {
117
		// [JPA 2.0] if the embedded id is mapped by a relationship, then any specified
220
		// [JPA 2.0] if the embedded id is mapped by a relationship, then any specified
118
		// attribute overrides are in error
221
		// attribute overrides are in error
119
		// (in JPA 1.0, this will obviously never be reached)
222
		// (in JPA 1.0, this will obviously never be reached)
Lines 130-137 Link Here
130
			);
233
			);
131
		}
234
		}
132
	}
235
	}
133
134
135
	// ********** attribute override container owner *********
236
	// ********** attribute override container owner *********
136
237
137
	protected class AttributeOverrideContainerOwner
238
	protected class AttributeOverrideContainerOwner
(-)src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java (+12 lines)
Lines 64-69 Link Here
64
	public static final String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR";
64
	public static final String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR";
65
	public static final String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR";
65
	public static final String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR = "TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR";
66
	public static final String TYPE_MAPPING_FINAL_CLASS = "TYPE_MAPPING_FINAL_CLASS";
66
	public static final String TYPE_MAPPING_FINAL_CLASS = "TYPE_MAPPING_FINAL_CLASS";
67
	public static final String TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED = "TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED";
67
	public static final String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED = "TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED";
68
	public static final String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED = "TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED";
68
	public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST";
69
	public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST";
69
	public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH";
70
	public static final String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH = "TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH";
Lines 95-100 Link Here
95
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST = "ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST";
96
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST = "ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST";
96
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE = "ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE";
97
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE = "ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE";
97
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED = "ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED";
98
	public static final String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED = "ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED";
99
	public static final String EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC="EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC";
100
	public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE = "EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE";
101
	public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR = "EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR";
102
	public static final String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE="EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE";
103
	public static final String EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS="EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS";
98
	public static final String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED = "EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED";
104
	public static final String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED = "EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED";
99
	public static final String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED = "ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED";
105
	public static final String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED = "ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED";
100
	public static final String MAPS_ID_VALUE_INVALID = "MAPS_ID_VALUE_INVALID";
106
	public static final String MAPS_ID_VALUE_INVALID = "MAPS_ID_VALUE_INVALID";
Lines 130-135 Link Here
130
	public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE";
136
	public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE";
131
	public static final String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE = "VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE";
137
	public static final String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE = "VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE";
132
	public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE";
138
	public static final String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE = "VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE";
139
	public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR";
140
	public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE";
141
	public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS";
142
	public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE";
143
	public static final String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC = "VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC";
144
	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";
133
	
145
	
134
	
146
	
135
	//Table
147
	//Table
(-)property_files/jpt_ui_validation_preferences.properties (+12 lines)
Lines 60-65 Link Here
60
TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=Mapped Java class has no no-arg constructor:
60
TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR=Mapped Java class has no no-arg constructor:
61
TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR=Mapped Java class has a private no-arg constructor:
61
TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR=Mapped Java class has a private no-arg constructor:
62
TYPE_MAPPING_FINAL_CLASS=Mapped Java class is final:
62
TYPE_MAPPING_FINAL_CLASS=Mapped Java class is final:
63
TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED=ID and embedded ID are not allowed to use together:
63
TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED=ID class and embedded ID mapping are not allowed to use together:
64
TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED=ID class and embedded ID mapping are not allowed to use together:
64
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=Primary key attribute does not have a matching ID class attribute:
65
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST=Primary key attribute does not have a matching ID class attribute:
65
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute is a duplicate match for ID class:
66
TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH=Primary key attribute is a duplicate match for ID class:
Lines 90-95 Link Here
90
ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath:
91
ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath:
91
ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type:
92
ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type:
92
ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified:
93
ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified:
94
EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded ID classes should be public:
95
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded ID classes should implement equals() and hashcode():
96
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded ID classes should implement a zero argument constructor:
97
EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded ID classes should implement Serializable:
98
EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded ID classes should not contain relationship mappings:
93
EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides:
99
EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED=Embedded IDs that are mapped by a relationship should not specify any attribute overrides:
94
ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED=IDs that are mapped by a relationship should not specify a column:
100
ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED=IDs that are mapped by a relationship should not specify a column:
95
MAPS_ID_VALUE_INVALID="Maps ID" attribute value invalid:
101
MAPS_ID_VALUE_INVALID="Maps ID" attribute value invalid:
Lines 120-125 Link Here
120
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath:
126
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST=Element collection target class does not exist on the project classpath:
121
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type:
127
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE=Element collection target class is not embeddable or basic type:
122
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified:
128
VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED=Element collection target class is not specified:
129
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR=Embedded ID classes should implement a zero argument constructor:
130
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE=Embedded ID classes should implement equals() and hashcode():
131
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS=Embedded ID classes should not contain relationship mappings:
132
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE=Embedded ID classes should implement Serializable:
133
VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC=Embedded ID classes should be public:
134
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:
123
VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY=Target entity is not an Entity:
135
VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY=Target entity is not an Entity:
124
VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED=Target entity is not defined:
136
VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED=Target entity is not defined:
125
VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED=Map key class not defined:
137
VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED=Map key class not defined:
(-)src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java (+12 lines)
Lines 68-73 Link Here
68
	public static String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR;
68
	public static String TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR;
69
	public static String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR;
69
	public static String TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR;
70
	public static String TYPE_MAPPING_FINAL_CLASS;
70
	public static String TYPE_MAPPING_FINAL_CLASS;
71
	public static String TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED;
71
	public static String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED; 	//3.0 M7
72
	public static String TYPE_MAPPING_ID_CLASS_AND_EMBEDDED_ID_BOTH_USED; 	//3.0 M7
72
	public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST; //3.2
73
	public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST; //3.2
73
	public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH;	//3.0 M7
74
	public static String TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH;	//3.0 M7
Lines 99-104 Link Here
99
	public static String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST;// 3.0 M7
100
	public static String ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST;// 3.0 M7
100
	public static String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE;
101
	public static String ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE;
101
	public static String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED;
102
	public static String ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED;
103
	public static String EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC;
104
	public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE;
105
	public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR;
106
	public static String EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE;
107
	public static String EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS;
102
	public static String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED; //3.0 M7
108
	public static String EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED; //3.0 M7
103
	public static String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED; //3.0 M7
109
	public static String ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED; //3.0 M7
104
	public static String MAPS_ID_VALUE_INVALID;
110
	public static String MAPS_ID_VALUE_INVALID;
Lines 135-140 Link Here
135
	public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE;
141
	public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAP_KEY_TYPE;
136
	public static String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE;
142
	public static String VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE;
137
	public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE;
143
	public static String VIRTUAL_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE;
144
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR;
145
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE;
146
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS;
147
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE;
148
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC;
149
	public static String VIRTUAL_ATTRIBUTE_EMBEDDED_ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_ATTRIBUTE_OVERRIDES_SPECIFIED;
138
150
139
151
140
	// Database Category
152
	// Database Category
(-)src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java (+12 lines)
Lines 323-328 Link Here
323
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR,								JpaValidationMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR);
323
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR,								JpaValidationMessages.TYPE_MAPPING_CLASS_MISSING_NO_ARG_CONSTRUCTOR);
324
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR,								JpaValidationMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR);		
324
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR,								JpaValidationMessages.TYPE_MAPPING_CLASS_PRIVATE_NO_ARG_CONSTRUCTOR);		
325
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_FINAL_CLASS,																		JpaValidationMessages.TYPE_MAPPING_FINAL_CLASS);
325
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_FINAL_CLASS,																		JpaValidationMessages.TYPE_MAPPING_FINAL_CLASS);
326
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED,												JpaValidationMessages.TYPE_MAPPING_ID_AND_EMBEDDED_ID_BOTH_USED);	
326
		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
327
		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
327
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST,							JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST);	//3.2
328
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST,							JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_DOES_NOT_EXIST);	//3.2
328
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH,				JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH);	//3.0 M7
329
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH,				JpaValidationMessages.TYPE_MAPPING_ID_CLASS_ATTRIBUTE_MAPPING_DUPLICATE_MATCH);	//3.0 M7
Lines 356-361 Link Here
356
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE, 					JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE);
357
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE, 					JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_MUST_BE_EMBEDDABLE_OR_BASIC_TYPE);
357
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST,													JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST); //3.0 M7
358
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST,													JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST); //3.0 M7
358
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED,															JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED);
359
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED,															JpaValidationMessages.ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED);
360
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC,																JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC);	
361
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE,																JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE);
362
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, 								JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR);
363
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE,																JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE);	
364
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS,																JpaValidationMessages.EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS);	
359
		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
365
		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
360
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED,										JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED); 	//3.0 M7
366
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED,										JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED); 	//3.0 M7
361
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.MAPS_ID_VALUE_INVALID,																										JpaValidationMessages.MAPS_ID_VALUE_INVALID);
367
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.MAPS_ID_VALUE_INVALID,																										JpaValidationMessages.MAPS_ID_VALUE_INVALID);
Lines 387-392 Link Here
387
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST,									JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST);
393
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST,									JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_DOES_NOT_EXIST);
388
		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);
394
		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);
389
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED,											JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED);
395
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED,											JpaValidationMessages.VIRTUAL_ATTRIBUTE_ELEMENT_COLLECTION_TARGET_CLASS_NOT_DEFINED);
396
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC, 											JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_BE_PUBLIC);
397
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE, 							JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_EQUALS_HASHCODE);
398
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR, 							JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_NO_ARG_CONSTRUCTOR);
399
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE, 								JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_IMPLEMENT_SERIALIZABLE);
400
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS, 					JpaValidationMessages.VIRTUAL_ATTRIBUTE_EMBEDDED_ID_CLASS_SHOULD_NOT_CONTAIN_RELATIONSHIP_MAPPINGS);
401
		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);
390
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY,																	JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY);
402
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY,																	JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY);
391
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED,																			JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED);
403
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED,																			JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED);
392
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED,										JpaValidationMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED);	
404
		addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED,										JpaValidationMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_CLASS_NOT_DEFINED);	

Return to bug 331480