diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java | 110 |
1 files changed, 75 insertions, 35 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java index 19fa579a1c..9b0d80c313 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java @@ -85,6 +85,7 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitProperties; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; import org.eclipse.jpt.jpa.core.context.persistence.PersistentTypeContainer; import org.eclipse.jpt.jpa.core.internal.JptCoreMessages; +import org.eclipse.jpt.jpa.core.internal.context.MappingTools; import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; import org.eclipse.jpt.jpa.core.jpa2.JpaFactory2_0; @@ -2500,18 +2501,28 @@ public abstract class AbstractPersistenceUnit protected void validateGeneratorsWithSameName(String generatorName, ArrayList<Generator> dups, List<IMessage> messages) { String[] parms = new String[] {generatorName}; for (Generator dup : dups) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - parms, - dup, - this.extractNameTextRange(dup) - ) - ); + if (this.generatorSupportsValidationMessages(dup)) { + messages.add( + DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.GENERATOR_DUPLICATE_NAME, + parms, + dup, + this.extractNameTextRange(dup) + ) + ); + } } } + protected boolean generatorSupportsValidationMessages(Generator generator) { + return (generator instanceof OrmGenerator) || this.generatorSupportsValidationMessages((JavaGenerator) generator); + } + + protected boolean generatorSupportsValidationMessages(JavaGenerator javaGenerator) { + return MappingTools.nodeIsInternalSource(javaGenerator, javaGenerator.getGeneratorAnnotation()); + } + // TODO bjv isn't it obvious? protected TextRange extractNameTextRange(Generator generator) { return (generator instanceof OrmGenerator) ? @@ -2524,7 +2535,10 @@ public abstract class AbstractPersistenceUnit if (generator instanceof OrmGenerator) { ((OrmGenerator) generator).validate(messages, reporter); } else { - ((JavaGenerator) generator).validate(messages, reporter, null); + JavaGenerator javaGenerator = (JavaGenerator) generator; + if (this.generatorSupportsValidationMessages(javaGenerator)) { + javaGenerator.validate(messages, reporter, null); + } } } @@ -2558,18 +2572,28 @@ public abstract class AbstractPersistenceUnit protected void validateQueriesWithSameName(String queryName, ArrayList<Query> dups, List<IMessage> messages) { String[] parms = new String[] {queryName}; for (Query dup : dups) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.QUERY_DUPLICATE_NAME, - parms, - dup, - this.extractNameTextRange(dup) - ) - ); + if (this.querySupportsValidationMessages(dup)) { + messages.add( + DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.QUERY_DUPLICATE_NAME, + parms, + dup, + this.extractNameTextRange(dup) + ) + ); + } } } + protected boolean querySupportsValidationMessages(Query query) { + return (query instanceof OrmQuery) || this.querySupportsValidationMessages((JavaQuery) query); + } + + protected boolean querySupportsValidationMessages(JavaQuery javaQuery) { + return MappingTools.nodeIsInternalSource(javaQuery, javaQuery.getQueryAnnotation()); + } + // TODO bjv isn't it obvious? protected TextRange extractNameTextRange(Query query) { return (query instanceof OrmQuery) ? @@ -2581,9 +2605,11 @@ public abstract class AbstractPersistenceUnit protected void validate(Query query, JpaJpqlQueryHelper queryHelper, List<IMessage> messages, IReporter reporter) { if (query instanceof OrmQuery) { ((OrmQuery) query).validate(queryHelper, messages, reporter); - } - else { - ((JavaQuery) query).validate(queryHelper, messages, reporter, null); + } else { + JavaQuery javaQuery = (JavaQuery) query; + if (this.querySupportsValidationMessages(javaQuery)) { + javaQuery.validate(queryHelper, messages, reporter, null); + } } } @@ -2593,19 +2619,7 @@ public abstract class AbstractPersistenceUnit if (StringTools.stringIsNotEmpty(entityName)) { ArrayList<Entity> dups = entry.getValue(); if (dups.size() > 1) { - String[] parms = new String[] {entityName}; - for (Entity dup : dups) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_NAME_DUPLICATED, - parms, - dup, - this.extractNameTextRange(dup) - ) - ); - } - + this.validateEntitiesWithSameName(entityName, dups, messages); } } } @@ -2631,6 +2645,32 @@ public abstract class AbstractPersistenceUnit return map; } + protected void validateEntitiesWithSameName(String entityName, ArrayList<Entity> dups, List<IMessage> messages) { + String[] parms = new String[] {entityName}; + for (Entity dup : dups) { + if (this.entitySupportsValidationMessages(dup)) { + messages.add( + DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.ENTITY_NAME_DUPLICATED, + parms, + dup, + this.extractNameTextRange(dup) + ) + ); + } + } + } + + protected boolean entitySupportsValidationMessages(Entity entity) { + return (entity instanceof OrmEntity) || this.entitySupportsValidationMessages((JavaEntity) entity); + } + + protected boolean entitySupportsValidationMessages(JavaEntity javaEntity) { + return MappingTools.nodeIsInternalSource(javaEntity, javaEntity.getJavaResourceType()); + } + + // TODO bjv isn't it obvious? protected TextRange extractNameTextRange(Entity entity) { return (entity instanceof OrmEntity) ? ((OrmEntity) entity).getXmlTypeMapping().getNameTextRange(): |