diff options
author | nhauge | 2011-05-10 15:17:24 +0000 |
---|---|---|
committer | nhauge | 2011-05-10 15:17:24 +0000 |
commit | 9292fad32e74cbd9ab3a0fcbb5b349bb59419575 (patch) | |
tree | ca90a7efc761b06fc141a010f478149e1e7d09b1 | |
parent | 756e45e28ae185800715e204493d7a3c0252fdc2 (diff) | |
download | webtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.tar.gz webtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.tar.xz webtools.dali-9292fad32e74cbd9ab3a0fcbb5b349bb59419575.zip |
344170 - fix struct converter validation. Patch from Les.
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); + } + } |