diff options
author | pfullbright | 2010-12-21 20:12:51 +0000 |
---|---|---|
committer | pfullbright | 2010-12-21 20:12:51 +0000 |
commit | 966aa7819a8513fa2f1c3ed9f1cc3746a5aa309f (patch) | |
tree | afab5aa05c7d7e0fff18813154ad2907461a6f4c /jaxb/plugins/org.eclipse.jpt.jaxb.core/src | |
parent | 63ccc35ff60a482f3ba7c52ee1b8da0ab4a6647b (diff) | |
download | webtools.dali-966aa7819a8513fa2f1c3ed9f1cc3746a5aa309f.tar.gz webtools.dali-966aa7819a8513fa2f1c3ed9f1cc3746a5aa309f.tar.xz webtools.dali-966aa7819a8513fa2f1c3ed9f1cc3746a5aa309f.zip |
hooked up context model validation; added package namespace validation
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src')
8 files changed, 83 insertions, 26 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbContextRoot.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbContextRoot.java index 891a31fb81..e5acd6466a 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbContextRoot.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbContextRoot.java @@ -9,6 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jaxb.core.context; +import java.util.List; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + /** * Root of the JAXB context model. * <p> @@ -92,11 +96,10 @@ public interface JaxbContextRoot Iterable<JaxbRegistry> getRegistries(JaxbPackage jaxbPackage); -// // ********** validation ********** -// -// /** -// * Add validation messages to the specified list. -// */ -// public void validate(List<IMessage> messages, IReporter reporter); - + // **************** validation ******************************************** + + /** + * Add validation messages to the specified list. + */ + public void validate(List<IMessage> messages, IReporter reporter); } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackage.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackage.java index 79ec7a28c1..a11a56f87e 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackage.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackage.java @@ -9,6 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jaxb.core.context; +import java.util.List; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + /** * * <p> @@ -44,4 +48,12 @@ public interface JaxbPackage * - object factory */ boolean isEmpty(); + + + // **************** validation ******************************************** + + /** + * Add validation messages to the specified list. + */ + public void validate(List<IMessage> messages, IReporter reporter); } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackageInfo.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackageInfo.java index 17398c0e52..5a6481b5b6 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackageInfo.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/JaxbPackageInfo.java @@ -25,12 +25,8 @@ import org.eclipse.jpt.utility.internal.iterables.ListIterable; * @since 3.0 */ public interface JaxbPackageInfo - extends - JaxbContextNode, - XmlAccessTypeHolder, - XmlAccessOrderHolder -{ - + extends JaxbContextNode, XmlAccessTypeHolder, XmlAccessOrderHolder { + JavaResourcePackage getResourcePackage(); diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbProject.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbProject.java index 5114aa49e3..0f4cd44756 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbProject.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbProject.java @@ -1085,7 +1085,7 @@ public abstract class AbstractJaxbProject throw new ValidationCancelledException(); } //validateLibraryProvider(messages); - //this.rootContextNode.validate(messages, reporter); + this.contextRoot.validate(messages, reporter); } // protected void validateLibraryProvider(List<IMessage> messages) { diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericContextRoot.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericContextRoot.java index 19c6a08c36..8fbfe071cf 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericContextRoot.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericContextRoot.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jaxb.core.internal.context; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.core.resources.IProject; @@ -34,6 +35,8 @@ import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; import org.eclipse.jpt.utility.internal.iterables.LiveCloneIterable; import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; import org.eclipse.jpt.utility.internal.iterables.TransformationIterable; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; /** * the context model root @@ -494,4 +497,13 @@ public class GenericContextRoot // forward to JAXB project this.jaxbProject.stateChanged(); } + + + // **************** validation ******************************************** + + public void validate(List<IMessage> messages, IReporter reporter) { + for (JaxbPackage pkg : this.packages.values()) { + pkg.validate(messages, reporter); + } + } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericPackage.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericPackage.java index a77a2ea424..6b3312af0d 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericPackage.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/GenericPackage.java @@ -9,10 +9,15 @@ ******************************************************************************/ package org.eclipse.jpt.jaxb.core.internal.context; +import java.util.List; import org.eclipse.jpt.jaxb.core.context.JaxbContextRoot; import org.eclipse.jpt.jaxb.core.context.JaxbPackage; import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo; +import org.eclipse.jpt.jaxb.core.internal.validation.DefaultValidationMessages; +import org.eclipse.jpt.jaxb.core.internal.validation.JaxbValidationMessages; import org.eclipse.jpt.jaxb.core.resource.java.JavaResourcePackage; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class GenericPackage extends AbstractJaxbContextNode @@ -84,4 +89,25 @@ public class GenericPackage public boolean isEmpty() { return getPackageInfo() == null; } + + + // **************** misc ************************************************** + + public String getNamespace() { + return (getPackageInfo() == null) ? "" : getPackageInfo().getXmlSchema().getNamespace(); + } + + + // **************** validation ******************************************** + + public void validate(List<IMessage> messages, IReporter reporter) { + if (! getJaxbProject().getSchemaLibrary().getSchemaLocations().containsKey(getNamespace())) { + messages.add( + DefaultValidationMessages.buildMessage( + IMessage.NORMAL_SEVERITY, + JaxbValidationMessages.PACKAGE_NO_SCHEMA_FOR_NAMESPACE, + new String[] {getNamespace(), this.name}, + this)); + } + } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/DefaultValidationMessages.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/DefaultValidationMessages.java index f0db845560..afadeb55d9 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/DefaultValidationMessages.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/DefaultValidationMessages.java @@ -1,12 +1,12 @@ /******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ + * Copyright (c) 2010 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Oracle - initial API and implementation + *******************************************************************************/ package org.eclipse.jpt.jaxb.core.internal.validation; import org.eclipse.jpt.core.utility.TextRange; @@ -14,11 +14,13 @@ import org.eclipse.jpt.jaxb.core.JptJaxbCorePlugin; import org.eclipse.wst.validation.internal.core.Message; import org.eclipse.wst.validation.internal.provisional.core.IMessage; + public class DefaultValidationMessages { private static String[] DEFAULT_PARMS = new String[0]; private static TextRange DEFAULT_TEXT_RANGE = TextRange.Empty.instance(); + public static IMessage buildMessage( int defaultSeverity, String messageId, Object targetObject) { return buildMessage(defaultSeverity, messageId, DEFAULT_PARMS, targetObject); @@ -40,14 +42,15 @@ public class DefaultValidationMessages { //determine whether default severity should be overridden int severity = defaultSeverity; - // TODO JAXB validation preferences + // TODO - user override of errors/warnings // int severityPreference = JpaValidationPreferences.getProblemSeverityPreference(targetObject, messageId); -// if (severityPreference!=JpaValidationPreferences.NO_SEVERITY_PREFERENCE){ +// if (severityPreference != JpaValidationPreferences.NO_SEVERITY_PREFERENCE){ // severity = severityPreference; // } IMessage message = new Message(JaxbValidationMessages.BUNDLE_NAME, severity, messageId, parms, targetObject); message.setMarkerId(JptJaxbCorePlugin.VALIDATION_MARKER_ID); + if (textRange == null) { //log an exception and then continue without setting location information //At least the user will still get the validation message and will diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/JaxbValidationMessages.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/JaxbValidationMessages.java index fb8434da88..975ec152bc 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/JaxbValidationMessages.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/validation/JaxbValidationMessages.java @@ -11,8 +11,13 @@ package org.eclipse.jpt.jaxb.core.internal.validation; @SuppressWarnings("nls") public interface JaxbValidationMessages { - + + // bundle name public static final String BUNDLE_NAME = "jaxb_validation"; - public static final String NO_JAXB_PROJECT = "NO_JAXB_PROJECT"; + // validation on project + public static final String NO_JAXB_PROJECT = "NO_JAXB_PROJECT"; + + // validation on package + public static final String PACKAGE_NO_SCHEMA_FOR_NAMESPACE = "PACKAGE_NO_SCHEMA_FOR_NAMESPACE"; } |