Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornhauge2011-05-10 15:17:24 +0000
committernhauge2011-05-10 15:17:24 +0000
commit9292fad32e74cbd9ab3a0fcbb5b349bb59419575 (patch)
treeca90a7efc761b06fc141a010f478149e1e7d09b1
parent756e45e28ae185800715e204493d7a3c0252fdc2 (diff)
downloadwebtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.tar.gz
webtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.tar.xz
webtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.zip
344170 - fix struct converter validation. Patch from Les.
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/property_files/eclipselink_jpa_validation.properties1
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/EclipseLinkJpaValidationMessages.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkStructConverter.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java62
4 files changed, 67 insertions, 2 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/property_files/eclipselink_jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/property_files/eclipselink_jpa_validation.properties
index 0423a9e310..94d8756357 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/property_files/eclipselink_jpa_validation.properties
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/property_files/eclipselink_jpa_validation.properties
@@ -12,6 +12,7 @@ CACHE_EXPIRY_AND_EXPIRY_TIME_OF_DAY_BOTH_SPECIFIED=The @Cache annotation on enti
CONVERTER_CLASS_EXISTS=The converter class \"{0}\" does not exist on the project classpath
CONVERTER_CLASS_DEFINED=The converter class must be defined.
CONVERTER_CLASS_IMPLEMENTS_CONVERTER=The converter class \"{0}\" does not implement the org.eclipse.persistence.mappings.converters.Converter interface
+STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER=The struct converter class \"{0}\" does not implement the org.eclipse.persistence.platform.database.converters.StructConverter interface
CONVERTER_DUPLICATE_NAME=Duplicate converter \"{0}\" defined in this persistence unit
CONVERTER_NAME_UNDEFINED=Converter is unnamed. All converters require a name.
DESCRIPTOR_CUSTOMIZER_CLASS_NOT_SPECIFIED=An entity customizer class should be specified
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/EclipseLinkJpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/EclipseLinkJpaValidationMessages.java
index d378e2ca4f..b07bba6e5b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/EclipseLinkJpaValidationMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/EclipseLinkJpaValidationMessages.java
@@ -18,6 +18,8 @@ public interface EclipseLinkJpaValidationMessages {
public static final String CONVERTER_CLASS_IMPLEMENTS_CONVERTER = "CONVERTER_CLASS_IMPLEMENTS_CONVERTER";
+ public static final String STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER = "STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER";
+
public static final String CONVERTER_DUPLICATE_NAME = "CONVERTER_DUPLICATE_NAME";
public static final String CONVERTER_NAME_UNDEFINED = "CONVERTER_NAME_UNDEFINED";
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkStructConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkStructConverter.java
index 83e4f41026..dff0a1ddb1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkStructConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkStructConverter.java
@@ -106,11 +106,11 @@ public class JavaEclipseLinkStructConverter
)
);
}
- else if (!converterClassImplementsInterface(javaProject, ECLIPSELINK_CONVERTER_CLASS_NAME)) {
+ else if (!converterClassImplementsInterface(javaProject, ECLIPSELINK_STRUCT_CONVERTER_CLASS_NAME)) {
messages.add(
DefaultEclipseLinkJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
- EclipseLinkJpaValidationMessages.CONVERTER_CLASS_IMPLEMENTS_CONVERTER,
+ EclipseLinkJpaValidationMessages.STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER,
new String[] {this.converterClass},
this,
getConverterClassTextRange(astRoot)
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java
index c014201fc0..35420d832a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java
@@ -9,15 +9,24 @@
******************************************************************************/
package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm;
+import java.util.List;
+
+import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jpt.common.core.internal.utility.JDTTools;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkStructConverter;
+import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages;
+import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlConverterHolder;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlNamedConverter;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlStructConverter;
import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class OrmEclipseLinkStructConverter
extends OrmEclipseLinkConverterClassConverter<XmlStructConverter>
@@ -105,4 +114,57 @@ public class OrmEclipseLinkStructConverter
xmlConverterContainer.setStructConverter((XmlStructConverter) xmlConverter);
}
}
+
+ // ********* validation ********************
+
+ @Override
+ protected void validateConverterClass(List<IMessage> messages) {
+ IJavaProject javaProject = this.getJpaProject().getJavaProject();
+
+ if (StringTools.stringIsEmpty(this.converterClass)) {
+ messages.add(
+ DefaultEclipseLinkJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ EclipseLinkJpaValidationMessages.CONVERTER_CLASS_DEFINED,
+ this,
+ this.getConverterClassTextRange()
+ )
+ );
+ return;
+ }
+ if ( ! this.converterClassExists(javaProject)) {
+ messages.add(
+ DefaultEclipseLinkJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ EclipseLinkJpaValidationMessages.CONVERTER_CLASS_EXISTS,
+ new String[] {this.converterClass},
+ this,
+ this.getConverterClassTextRange()
+ )
+ );
+ return;
+ }
+ if ( ! this.converterClassImplementsInterface(javaProject, ECLIPSELINK_STRUCT_CONVERTER_CLASS_NAME)) {
+ messages.add(
+ DefaultEclipseLinkJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ EclipseLinkJpaValidationMessages.STRUCT_CONVERTER_CLASS_IMPLEMENTS_STRUCT_CONVERTER,
+ new String[] {this.converterClass},
+ this,
+ this.getConverterClassTextRange()
+ )
+ );
+ }
+ }
+
+ private boolean converterClassExists(IJavaProject javaProject) {
+ return (this.converterClass != null) &&
+ (JDTTools.findType(javaProject, this.converterClass) != null);
+ }
+
+ private boolean converterClassImplementsInterface(IJavaProject javaProject, String interfaceName) {
+ return (this.converterClass != null) &&
+ JDTTools.typeNamedImplementsInterfaceNamed(javaProject, this.converterClass, interfaceName);
+ }
+
}

Back to the top