diff options
author | pfullbright | 2012-02-29 23:54:14 +0000 |
---|---|---|
committer | pfullbright | 2012-02-29 23:54:14 +0000 |
commit | 0e793619f665d4837d080cccc1571b5cf48a5038 (patch) | |
tree | acad199b60b2485338ae0279465fdacfe2287ce1 /jaxb/tests | |
parent | d53b0ddb8c8a4e69608bded516814a8920cee26b (diff) | |
download | webtools.dali-0e793619f665d4837d080cccc1571b5cf48a5038.tar.gz webtools.dali-0e793619f665d4837d080cccc1571b5cf48a5038.tar.xz webtools.dali-0e793619f665d4837d080cccc1571b5cf48a5038.zip |
XmlDiscriminatorNode, XmlDiscriminatorValue, XmlJoinNode/s annotation support
Diffstat (limited to 'jaxb/tests')
4 files changed, 432 insertions, 0 deletions
diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTests.java index c335a435ae..61a9b05505 100644 --- a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTests.java +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTests.java @@ -20,7 +20,10 @@ public class ELJaxbJavaResourceModelTests public static Test suite() { TestSuite suite = new TestSuite(ELJaxbJavaResourceModelTests.class.getName()); suite.addTestSuite(XmlCDATAAnnotationTests.class); + suite.addTestSuite(XmlDiscriminatorNodeAnnotationTests.class); + suite.addTestSuite(XmlDiscriminatorValueAnnotationTests.class); suite.addTestSuite(XmlInverseReferenceAnnotationTests.class); + suite.addTestSuite(XmlJoinNodeAnnotationTests.class); suite.addTestSuite(XmlPathAnnotationTests.class); suite.addTestSuite(XmlTransformationAnnotationTests.class); diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorNodeAnnotationTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorNodeAnnotationTests.java new file mode 100644 index 0000000000..cfd2f6e26e --- /dev/null +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorNodeAnnotationTests.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * 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.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.jaxb.eclipselink.core.internal.v2_2.ELJaxb_2_2_PlatformDefinition; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlDiscriminatorNodeAnnotation; + + +public class XmlDiscriminatorNodeAnnotationTests + extends ELJaxbJavaResourceModelTestCase { + + public XmlDiscriminatorNodeAnnotationTests(String name) { + super(name); + } + + + @Override + protected AnnotationDefinition[] annotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getAnnotationDefinitions(); + } + + @Override + protected NestableAnnotationDefinition[] nestableAnnotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getNestableAnnotationDefinitions(); + } + + + private ICompilationUnit createTestXmlDiscriminatorNodeWithValue() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_DISCRIMINATOR_NODE); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlDiscriminatorNode(\"foo\")"); + } + }); + } + + + private XmlDiscriminatorNodeAnnotation getXmlDiscriminatorNodeAnnotation(JavaResourceType resourceType) { + return (XmlDiscriminatorNodeAnnotation) resourceType.getAnnotation(ELJaxb.XML_DISCRIMINATOR_NODE); + } + + + public void testValue() throws Exception { + ICompilationUnit cu = createTestXmlDiscriminatorNodeWithValue(); + JavaResourceType resourceType = buildJavaResourceType(cu); + XmlDiscriminatorNodeAnnotation annotation = getXmlDiscriminatorNodeAnnotation(resourceType); + + assertEquals("foo", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorNode(\"foo\")", cu); + + annotation.setValue("bar"); + + assertEquals("bar", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorNode(\"bar\")", cu); + + annotation.setValue(""); + + assertEquals("", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorNode(\"\")", cu); + + annotation.setValue(null); + + assertNull(annotation.getValue()); + assertSourceContains("@XmlDiscriminatorNode", cu); + assertSourceDoesNotContain("@XmlDiscriminatorNode(", cu); + } +} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorValueAnnotationTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorValueAnnotationTests.java new file mode 100644 index 0000000000..f7743fd91d --- /dev/null +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlDiscriminatorValueAnnotationTests.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * 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.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.jaxb.eclipselink.core.internal.v2_2.ELJaxb_2_2_PlatformDefinition; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlDiscriminatorValueAnnotation; + + +public class XmlDiscriminatorValueAnnotationTests + extends ELJaxbJavaResourceModelTestCase { + + public XmlDiscriminatorValueAnnotationTests(String name) { + super(name); + } + + + @Override + protected AnnotationDefinition[] annotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getAnnotationDefinitions(); + } + + @Override + protected NestableAnnotationDefinition[] nestableAnnotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getNestableAnnotationDefinitions(); + } + + + private ICompilationUnit createTestXmlDiscriminatorValueWithValue() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_DISCRIMINATOR_VALUE); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlDiscriminatorValue(\"foo\")"); + } + }); + } + + + private XmlDiscriminatorValueAnnotation getXmlDiscriminatorValueAnnotation(JavaResourceType resourceType) { + return (XmlDiscriminatorValueAnnotation) resourceType.getAnnotation(ELJaxb.XML_DISCRIMINATOR_VALUE); + } + + + public void testValue() throws Exception { + ICompilationUnit cu = createTestXmlDiscriminatorValueWithValue(); + JavaResourceType resourceType = buildJavaResourceType(cu); + XmlDiscriminatorValueAnnotation annotation = getXmlDiscriminatorValueAnnotation(resourceType); + + assertEquals("foo", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorValue(\"foo\")", cu); + + annotation.setValue("bar"); + + assertEquals("bar", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorValue(\"bar\")", cu); + + annotation.setValue(""); + + assertEquals("", annotation.getValue()); + assertSourceContains("@XmlDiscriminatorValue(\"\")", cu); + + annotation.setValue(null); + + assertNull(annotation.getValue()); + assertSourceContains("@XmlDiscriminatorValue", cu); + assertSourceDoesNotContain("@XmlDiscriminatorValue(", cu); + } +} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlJoinNodeAnnotationTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlJoinNodeAnnotationTests.java new file mode 100644 index 0000000000..b4b815ef8d --- /dev/null +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/XmlJoinNodeAnnotationTests.java @@ -0,0 +1,251 @@ +/******************************************************************************* + * 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.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.jaxb.eclipselink.core.internal.v2_2.ELJaxb_2_2_PlatformDefinition; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlJoinNodeAnnotation; + + +public class XmlJoinNodeAnnotationTests + extends ELJaxbJavaResourceModelTestCase { + + public XmlJoinNodeAnnotationTests(String name) { + super(name); + } + + + @Override + protected AnnotationDefinition[] annotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getAnnotationDefinitions(); + } + + @Override + protected NestableAnnotationDefinition[] nestableAnnotationDefinitions() { + return ELJaxb_2_2_PlatformDefinition.instance().getNestableAnnotationDefinitions(); + } + + + private ICompilationUnit createTestXmlJoinNode() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_JOIN_NODE); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlJoinNode"); + } + }); + } + + private ICompilationUnit createTestXmlJoinNodeWithXmlPath() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_JOIN_NODE); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlJoinNode(xmlPath=\"foo\")"); + } + }); + } + + private ICompilationUnit createTestXmlJoinNodeWithReferencedXmlPath() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_JOIN_NODE); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlJoinNode(referencedXmlPath=\"foo\")"); + } + }); + } + + private ICompilationUnit createTestXmlJoinNodes() + throws Exception { + + return this.createTestType(new DefaultAnnotationWriter() { + + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(ELJaxb.XML_JOIN_NODES, ELJaxb.XML_JOIN_NODE); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlJoinNodes({@XmlJoinNode,@XmlJoinNode})"); + } + }); + } + + private XmlJoinNodeAnnotation getXmlJoinNodeAnnotation(JavaResourceAttribute resourceAttribute) { + return getXmlJoinNodeAnnotation(resourceAttribute, 0); + } + + private XmlJoinNodeAnnotation getXmlJoinNodeAnnotation(JavaResourceAttribute resourceAttribute, int index) { + return (XmlJoinNodeAnnotation) resourceAttribute.getAnnotation(index, ELJaxb.XML_JOIN_NODE); + } + + + public void testXmlPath() throws Exception { + ICompilationUnit cu = createTestXmlJoinNodeWithXmlPath(); + JavaResourceType resourceType = buildJavaResourceType(cu); + JavaResourceField resourceAttribute = getField(resourceType, 0); + XmlJoinNodeAnnotation annotation = getXmlJoinNodeAnnotation(resourceAttribute); + + assertEquals("foo", annotation.getXmlPath()); + assertSourceContains("@XmlJoinNode(xmlPath=\"foo\")", cu); + + annotation.setXmlPath("bar"); + + assertEquals("bar", annotation.getXmlPath()); + assertSourceContains("@XmlJoinNode(xmlPath=\"bar\")", cu); + + annotation.setXmlPath(""); + + assertEquals("", annotation.getXmlPath()); + assertSourceContains("@XmlJoinNode(xmlPath=\"\")", cu); + + annotation.setXmlPath(null); + + assertNull(annotation.getXmlPath()); + assertSourceContains("@XmlJoinNode", cu); + assertSourceDoesNotContain("@XmlJoinNode(", cu); + } + + public void testReferencedXmlPath() throws Exception { + ICompilationUnit cu = createTestXmlJoinNodeWithReferencedXmlPath(); + JavaResourceType resourceType = buildJavaResourceType(cu); + JavaResourceField resourceAttribute = getField(resourceType, 0); + XmlJoinNodeAnnotation annotation = getXmlJoinNodeAnnotation(resourceAttribute); + + assertEquals("foo", annotation.getReferencedXmlPath()); + assertSourceContains("@XmlJoinNode(referencedXmlPath=\"foo\")", cu); + + annotation.setReferencedXmlPath("bar"); + + assertEquals("bar", annotation.getReferencedXmlPath()); + assertSourceContains("@XmlJoinNode(referencedXmlPath=\"bar\")", cu); + + annotation.setReferencedXmlPath(""); + + assertEquals("", annotation.getReferencedXmlPath()); + assertSourceContains("@XmlJoinNode(referencedXmlPath=\"\")", cu); + + annotation.setReferencedXmlPath(null); + + assertNull(annotation.getReferencedXmlPath()); + assertSourceContains("@XmlJoinNode", cu); + assertSourceDoesNotContain("@XmlJoinNode(", cu); + } + + public void testContainedXmlPath() throws Exception { + // test contained annotation xmlPath setting/updating + + ICompilationUnit cu = createTestXmlJoinNodes(); + JavaResourceType resourceType = buildJavaResourceType(cu); + JavaResourceField resourceAttribute = getField(resourceType, 0); + XmlJoinNodeAnnotation annotation = getXmlJoinNodeAnnotation(resourceAttribute); + + assertNull(annotation.getXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode,@XmlJoinNode})", cu); + + annotation.setXmlPath("foo"); + assertEquals("foo", annotation.getXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode(xmlPath = \"foo\"),@XmlJoinNode})", cu); + + annotation.setXmlPath(null); + assertNull(annotation.getXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode,@XmlJoinNode})", cu); + } + + public void testContainedReferencedXmlPath() throws Exception { + // test contained annotation referencedXmlPath setting/updating + + ICompilationUnit cu = createTestXmlJoinNodes(); + JavaResourceType resourceType = buildJavaResourceType(cu); + JavaResourceField resourceAttribute = getField(resourceType, 0); + XmlJoinNodeAnnotation annotation = getXmlJoinNodeAnnotation(resourceAttribute); + + assertNull(annotation.getReferencedXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode,@XmlJoinNode})", cu); + + annotation.setReferencedXmlPath("foo"); + assertEquals("foo", annotation.getReferencedXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode(referencedXmlPath = \"foo\"),@XmlJoinNode})", cu); + + annotation.setReferencedXmlPath(null); + assertNull(annotation.getReferencedXmlPath()); + assertSourceContains( + "@XmlJoinNodes({@XmlJoinNode,@XmlJoinNode})", cu); + } + + public void testContained() + throws Exception { + // test adding/removing/moving + + ICompilationUnit cu = createTestXmlJoinNode(); + JavaResourceType resourceType = buildJavaResourceType(cu); + JavaResourceField resourceAttribute = getField(resourceType, 0); + + assertEquals(1, resourceAttribute.getAnnotationsSize(ELJaxb.XML_JOIN_NODE)); + + resourceAttribute.addAnnotation(1, ELJaxb.XML_JOIN_NODE); + + assertEquals(2, resourceAttribute.getAnnotationsSize(ELJaxb.XML_JOIN_NODE)); + assertSourceContains("@XmlJoinNodes({ @XmlJoinNode, @XmlJoinNode })", cu); + + XmlJoinNodeAnnotation annotation1 = getXmlJoinNodeAnnotation(resourceAttribute, 0); + annotation1.setXmlPath("foo"); + XmlJoinNodeAnnotation annotation2 = getXmlJoinNodeAnnotation(resourceAttribute, 1); + annotation2.setXmlPath("bar"); + assertSourceContains( + "@XmlJoinNodes({ @XmlJoinNode(xmlPath = \"foo\"), @XmlJoinNode(xmlPath = \"bar\") })", cu); + + resourceAttribute.moveAnnotation(0, 1, ELJaxb.XML_JOIN_NODE); + assertSourceContains( + "@XmlJoinNodes({ @XmlJoinNode(xmlPath = \"bar\"), @XmlJoinNode(xmlPath = \"foo\") })", cu); + + resourceAttribute.removeAnnotation(0, ELJaxb.XML_JOIN_NODE); + assertEquals(1, resourceAttribute.getAnnotationsSize(ELJaxb.XML_JOIN_NODE)); + assertSourceContains( + "@XmlJoinNode(xmlPath = \"foo\")", cu); + assertSourceDoesNotContain("@XmlJoinNodes", cu); + } +} |