diff options
author | pfullbright | 2012-01-13 22:30:50 +0000 |
---|---|---|
committer | pfullbright | 2012-01-13 22:30:50 +0000 |
commit | 1c957c39dd545338bcd7868413e1684390413341 (patch) | |
tree | 5b79893911efa7228187f51930953b5d2489f300 /jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core | |
parent | 0cd4ad87aab6513a72fda9404fcc3d0807eb45bd (diff) | |
download | webtools.dali-1c957c39dd545338bcd7868413e1684390413341.tar.gz webtools.dali-1c957c39dd545338bcd7868413e1684390413341.tar.xz webtools.dali-1c957c39dd545338bcd7868413e1684390413341.zip |
validation for XmlPath w/ XmlElement, XmlAttribute and XmlElementWrapper
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core')
7 files changed, 161 insertions, 5 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyAttributeMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyAttributeMapping.java index 8ae4e0768b..2b21667dbe 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyAttributeMapping.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyAttributeMapping.java @@ -21,7 +21,7 @@ public class ELJavaXmlAnyAttributeMapping extends GenericJavaXmlAnyAttributeMapping implements ELXmlAnyAttributeMapping { - private ELJavaXmlPath xmlPath; + protected ELJavaXmlPath xmlPath; public ELJavaXmlAnyAttributeMapping(JaxbPersistentAttribute parent) { diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyElementMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyElementMapping.java index 5cbe938ca4..b7638247ae 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyElementMapping.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAnyElementMapping.java @@ -21,7 +21,7 @@ public class ELJavaXmlAnyElementMapping extends GenericJavaXmlAnyElementMapping implements ELXmlAnyElementMapping { - private ELJavaXmlPath xmlPath; + protected ELJavaXmlPath xmlPath; public ELJavaXmlAnyElementMapping(JaxbPersistentAttribute parent) { diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAttributeMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAttributeMapping.java index 34f9bd89b6..057dd496ce 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAttributeMapping.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlAttributeMapping.java @@ -9,19 +9,23 @@ *******************************************************************************/ package org.eclipse.jpt.jaxb.eclipselink.core.internal.context.java; +import java.util.List; +import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute; import org.eclipse.jpt.jaxb.core.internal.context.java.GenericJavaXmlAttributeMapping; import org.eclipse.jpt.jaxb.eclipselink.core.context.java.ELXmlAttributeMapping; import org.eclipse.jpt.jaxb.eclipselink.core.context.java.ELXmlPath; import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlPathAnnotation; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class ELJavaXmlAttributeMapping extends GenericJavaXmlAttributeMapping implements ELXmlAttributeMapping { - private ELJavaXmlPath xmlPath; + protected ELJavaXmlPath xmlPath; public ELJavaXmlAttributeMapping(JaxbPersistentAttribute parent) { @@ -100,6 +104,16 @@ public class ELJavaXmlAttributeMapping } + // ***** validation ***** + + @Override + protected void validateQName(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + if (this.xmlPath == null) { + super.validateQName(messages, reporter, astRoot); + } + } + + protected class XmlPathContext implements ELJavaXmlPath.Context { diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElement.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElement.java new file mode 100644 index 0000000000..508997d3db --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElement.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2012 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.eclipselink.core.internal.context.java; + +import java.util.List; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.jaxb.core.context.java.JavaContextNode; +import org.eclipse.jpt.jaxb.core.internal.context.java.GenericJavaXmlElement; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + + +public class ELJavaXmlElement + extends GenericJavaXmlElement { + + public ELJavaXmlElement(JavaContextNode parent, Context context) { + super(parent, context); + } + + + @Override + protected Context getContext() { + return (Context) super.getContext(); + } + + @Override + protected void validateQName(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + if (getContext().getXmlPath() != null) { + super.validateQName(messages, reporter, astRoot); + } + } + + + public interface Context + extends GenericJavaXmlElement.Context { + + ELJavaXmlPath getXmlPath(); + } +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementMapping.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementMapping.java index b0df4d2c48..dae6b9ca4d 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementMapping.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementMapping.java @@ -9,19 +9,26 @@ *******************************************************************************/ package org.eclipse.jpt.jaxb.eclipselink.core.internal.context.java; +import java.util.List; +import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute; +import org.eclipse.jpt.jaxb.core.context.XmlElement; +import org.eclipse.jpt.jaxb.core.context.XmlElementWrapper; import org.eclipse.jpt.jaxb.core.internal.context.java.GenericJavaXmlElementMapping; +import org.eclipse.jpt.jaxb.core.resource.java.XmlElementWrapperAnnotation; import org.eclipse.jpt.jaxb.eclipselink.core.context.java.ELXmlElementMapping; import org.eclipse.jpt.jaxb.eclipselink.core.context.java.ELXmlPath; import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlPathAnnotation; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class ELJavaXmlElementMapping extends GenericJavaXmlElementMapping implements ELXmlElementMapping { - private ELJavaXmlPath xmlPath; + protected ELJavaXmlPath xmlPath; public ELJavaXmlElementMapping(JaxbPersistentAttribute parent) { @@ -100,6 +107,35 @@ public class ELJavaXmlElementMapping } + // ***** misc ***** + + @Override + protected XmlElement buildXmlElement() { + return new ELJavaXmlElement(this, new XmlElementContext()); + } + + @Override + protected XmlElementWrapper buildXmlElementWrapper() { + return new ELJavaXmlElementWrapper(this, new XmlElementWrapperContext()); + } + + + // ***** validation ***** + + @Override + public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + super.validate(messages, reporter, astRoot); + + if (this.xmlPath != null) { + validateXmlPath(messages, reporter, astRoot); + } + } + + protected void validateXmlPath(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + + } + + protected class XmlPathContext implements ELJavaXmlPath.Context { @@ -107,4 +143,27 @@ public class ELJavaXmlElementMapping return ELJavaXmlElementMapping.this.getXmlPathAnnotation(); } } + + + protected class XmlElementContext + extends GenericJavaXmlElementMapping.XmlElementContext + implements ELJavaXmlElement.Context { + + public ELJavaXmlPath getXmlPath() { + return ELJavaXmlElementMapping.this.xmlPath; + } + } + + + protected class XmlElementWrapperContext + implements ELJavaXmlElementWrapper.Context { + + public XmlElementWrapperAnnotation getAnnotation() { + return ELJavaXmlElementMapping.this.getXmlElementWrapperAnnotation(); + } + + public ELXmlPath getXmlPath() { + return ELJavaXmlElementMapping.this.xmlPath; + } + } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementWrapper.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementWrapper.java new file mode 100644 index 0000000000..8aeb84ca3d --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementWrapper.java @@ -0,0 +1,36 @@ +package org.eclipse.jpt.jaxb.eclipselink.core.internal.context.java; + +import java.util.List; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.jaxb.core.context.JaxbAttributeMapping; +import org.eclipse.jpt.jaxb.core.internal.context.java.GenericJavaXmlElementWrapper; +import org.eclipse.jpt.jaxb.eclipselink.core.context.java.ELXmlPath; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + + +public class ELJavaXmlElementWrapper + extends GenericJavaXmlElementWrapper { + + public ELJavaXmlElementWrapper(JaxbAttributeMapping parent, Context context) { + super(parent, context); + } + + + protected Context getContext() { + return (Context) this.context; + } + + @Override + protected void validateQName(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + if (getContext().getXmlPath() == null) { + super.validateQName(messages, reporter, astRoot); + } + } + + public interface Context + extends GenericJavaXmlElementWrapper.Context { + + ELXmlPath getXmlPath(); + } +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementsMappingDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementsMappingDefinition.java index 20cbd364f2..3c2ccb1d11 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementsMappingDefinition.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/java/ELJavaXmlElementsMappingDefinition.java @@ -26,7 +26,8 @@ public class ELJavaXmlElementsMappingDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES = { - ELJaxb.XML_PATH }; + ELJaxb.XML_PATH, + ELJaxb.XML_PATHS }; /** * Return the singleton. |