Author: dgeraskov
Date: 2011-08-26 06:16:44 -0400 (Fri, 26 Aug 2011)
New Revision: 34334
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDef.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDefImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JpaUtil.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/TypeImpl.java
Log:
https://issues.jboss.org/browse/JBIDE-9485
Updated validation of TypeDef and Type annotations
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties 2011-08-26
06:35:25 UTC (rev 34333)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/Messages.properties 2011-08-26
10:16:44 UTC (rev 34334)
@@ -7,7 +7,8 @@
UNRESOLVED_FOREIGN_KEY_NAME = Foreign key \"{0}\" not found in the table
\"{1}\".
CC_NOT_EXISTS= Console configuration \"{0}\" does not exist.
TYPE_CANT_BE_EMPTY=Type could not be empty.
-USER_TYPE_INTERFACE = Type class \"{0}\" should implement interface
\"org.hibernate.usertype.UserType\".
+USER_TYPE_INTERFACE = Type class \"{0}\" should implement one of interfaces
\"org.hibernate.type.Type\",\
+ \"org.hibernate.usertype.UserType\",
\"org.hibernate.usertype.CompositeUserType\",
\"org.hibernate.usertype.UserCollectionType\".
TYPE_CLASS_NOT_FOUND = Type class \"{0}\" could not be found.
NAME_CANT_BE_EMPTY = Name could not be empty.
TYPE_DEF_DUPLICATE_NAME=Duplicate type definition named \"{0}\" defined in this
persistence unit
\ No newline at end of file
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDef.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDef.java 2011-08-26
06:35:25 UTC (rev 34333)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDef.java 2011-08-26
10:16:44 UTC (rev 34334)
@@ -23,7 +23,17 @@
public interface JavaTypeDef extends JavaJpaContextNode, ParametrizedElement {
String USER_TYPE_INTERFACE = "org.hibernate.usertype.UserType";
+ String TYPE_INTERFACE = "org.hibernate.type.Type";
+ String COMPOSITE_USER_TYPE_INTERFACE =
"org.hibernate.usertype.CompositeUserType";
+ String USER_COLLECTION_USER_TYPE_INTERFACE =
"org.hibernate.usertype.UserCollectionType";
+ String[] POSSIBLE_INTERFACES = new String[]{
+ TYPE_INTERFACE,
+ USER_TYPE_INTERFACE,
+ COMPOSITE_USER_TYPE_INTERFACE,
+ USER_COLLECTION_USER_TYPE_INTERFACE
+ };
+
String getName();
void setName(String name);
String NAME_PROPERTY = "name"; //$NON-NLS-1$
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDefImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDefImpl.java 2011-08-26
06:35:25 UTC (rev 34333)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeDefImpl.java 2011-08-26
10:16:44 UTC (rev 34334)
@@ -23,7 +23,6 @@
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
-import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
@@ -33,7 +32,6 @@
import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit;
import org.jboss.tools.hibernate.jpt.core.internal.context.Messages;
import org.jboss.tools.hibernate.jpt.core.internal.context.Parameter;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaTypeDefImpl.ParameterContainerAdapter;
import org.jboss.tools.hibernate.jpt.core.internal.resource.java.ParameterAnnotation;
import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeDefAnnotation;
import
org.jboss.tools.hibernate.jpt.core.internal.validation.HibernateJpaValidationMessage;
@@ -295,7 +293,8 @@
messages.add(HibernateJpaValidationMessage.buildMessage(
IMessage.HIGH_SEVERITY,TYPE_CLASS_NOT_FOUND, new String[]{typeClass}, this,
this.getTypeClassTextRange(astRoot)));
} else {
- if (!JpaUtil.isTypeImplementsInterface(getJpaProject().getJavaProject(), lwType,
USER_TYPE_INTERFACE)){
+ if (!JpaUtil.isTypeImplementsOneOfInterfaces(getJpaProject().getJavaProject(),
lwType,
+ JavaTypeDef.POSSIBLE_INTERFACES)){
messages.add(HibernateJpaValidationMessage.buildMessage(
IMessage.HIGH_SEVERITY,IMPLEMENT_USER_TYPE_INTERFACE, new String[]{typeClass},
this, this.getTypeClassTextRange(astRoot)));
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JpaUtil.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JpaUtil.java 2011-08-26
06:35:25 UTC (rev 34333)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JpaUtil.java 2011-08-26
10:16:44 UTC (rev 34334)
@@ -63,5 +63,14 @@
}
return false;
}
+
+ public static boolean isTypeImplementsOneOfInterfaces(IJavaProject javaProject, IType
type, String... interfacesName) throws JavaModelException{
+ for (String interfaceName : interfacesName) {
+ if (isTypeImplementsInterface(javaProject, type, interfaceName)){
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/TypeImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/TypeImpl.java 2011-08-26
06:35:25 UTC (rev 34333)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/TypeImpl.java 2011-08-26
10:16:44 UTC (rev 34334)
@@ -148,7 +148,8 @@
messages.add(HibernateJpaValidationMessage.buildMessage(
IMessage.HIGH_SEVERITY,TYPE_CLASS_NOT_FOUND, new String[]{type}, this, range));
} else {
- if (!JpaUtil.isTypeImplementsInterface(getJpaProject().getJavaProject(), lwType,
JavaTypeDef.USER_TYPE_INTERFACE)){
+ if (!JpaUtil.isTypeImplementsOneOfInterfaces(getJpaProject().getJavaProject(),
lwType,
+ JavaTypeDef.POSSIBLE_INTERFACES)){
messages.add(HibernateJpaValidationMessage.buildMessage(
IMessage.HIGH_SEVERITY,IMPLEMENT_USER_TYPE_INTERFACE, new String[]{type}, this,
range));
}