diff options
author | pfullbright | 2012-01-09 19:33:30 +0000 |
---|---|---|
committer | pfullbright | 2012-01-09 19:33:30 +0000 |
commit | cbab92ed351780a540cbbd24ee8fc292f0d8cdd2 (patch) | |
tree | fd5ec6bc83de44a4c06b71b9c2a8ca41f85ec73b /jaxb | |
parent | b5b9d5aa74214067e62f196f5d21dff5a898516c (diff) | |
download | webtools.dali-cbab92ed351780a540cbbd24ee8fc292f0d8cdd2.tar.gz webtools.dali-cbab92ed351780a540cbbd24ee8fc292f0d8cdd2.tar.xz webtools.dali-cbab92ed351780a540cbbd24ee8fc292f0d8cdd2.zip |
testing for xml path on xml attribute and xml element mappings
Diffstat (limited to 'jaxb')
3 files changed, 356 insertions, 0 deletions
diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlAttributeMappingTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlAttributeMappingTests.java new file mode 100644 index 0000000000..92bf535b7f --- /dev/null +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlAttributeMappingTests.java @@ -0,0 +1,177 @@ +/******************************************************************************* + * 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.context.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.Member; +import org.eclipse.jpt.common.core.utility.jdt.ModifiedDeclaration; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.jaxb.core.MappingKeys; +import org.eclipse.jpt.jaxb.core.context.JaxbClass; +import org.eclipse.jpt.jaxb.core.context.JaxbClassMapping; +import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute; +import org.eclipse.jpt.jaxb.core.resource.java.JAXB; +import org.eclipse.jpt.jaxb.eclipselink.core.internal.context.java.ELJavaXmlAttributeMapping; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlPathAnnotation; +import org.eclipse.jpt.jaxb.eclipselink.core.tests.internal.context.ELJaxbContextModelTestCase; + + +public class ELJavaXmlAttributeMappingTests + extends ELJaxbContextModelTestCase { + + public ELJavaXmlAttributeMappingTests(String name) { + super(name); + } + + + private ICompilationUnit createTypeWithXmlAttribute() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JAXB.XML_TYPE, JAXB.XML_ATTRIBUTE); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlType"); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlAttribute"); + } + }); + } + + private ICompilationUnit createTypeWithXmlPath() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JAXB.XML_TYPE, ELJaxb.XML_PATH); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlType"); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlPath"); + } + }); + } + + + public void testModifyXmlPath() throws Exception { + createTypeWithXmlAttribute(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + ELJavaXmlAttributeMapping mapping = (ELJavaXmlAttributeMapping) persistentAttribute.getMapping(); + JavaResourceAttribute resourceAttribute = mapping.getPersistentAttribute().getJavaResourceAttribute(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + + mapping.addXmlPath(); + + assertEquals(1, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNotNull(mapping.getXmlPath()); + + mapping.removeXmlPath(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + } + + public void testUpdateXmlPath() throws Exception { + createTypeWithXmlAttribute(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + ELJavaXmlAttributeMapping mapping = (ELJavaXmlAttributeMapping) persistentAttribute.getMapping(); + JavaResourceAttribute resourceAttribute = mapping.getPersistentAttribute().getJavaResourceAttribute(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + + AnnotatedElement annotatedElement = this.annotatedElement(resourceAttribute); + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlAttributeMappingTests.this.addMarkerAnnotation( + declaration.getDeclaration(), ELJaxb.XML_PATH); + } + }); + + assertEquals(1, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNotNull(mapping.getXmlPath()); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlAttributeMappingTests.this.removeAnnotation(declaration, ELJaxb.XML_PATH); + } + }); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + } + + public void testDefault() throws Exception { + createTypeWithXmlPath(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + JavaResourceAttribute resourceAttribute = persistentAttribute.getJavaResourceAttribute(); + XmlPathAnnotation xmlPathAnnotation = (XmlPathAnnotation) resourceAttribute.getAnnotation(0, ELJaxb.XML_PATH); + + assertNotNull(xmlPathAnnotation); + assertFalse(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ATTRIBUTE_ATTRIBUTE_MAPPING_KEY); + + AnnotatedElement annotatedElement = this.annotatedElement(resourceAttribute); + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlAttributeMappingTests.this.setMemberValuePair( + declaration, ELJaxb.XML_PATH, "./element[@name=\"foo\"]/element[1]/text()"); + } + }); + + assertNotNull(xmlPathAnnotation.getValue()); + assertFalse(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ATTRIBUTE_ATTRIBUTE_MAPPING_KEY); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlAttributeMappingTests.this.setMemberValuePair( + declaration, ELJaxb.XML_PATH, "element/@attribute"); + } + }); + + assertNotNull(xmlPathAnnotation.getValue()); + assertTrue(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ATTRIBUTE_ATTRIBUTE_MAPPING_KEY); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlAttributeMappingTests.this.removeMemberValuePair( + declaration, ELJaxb.XML_PATH); + } + }); + + assertNull(xmlPathAnnotation.getValue()); + assertFalse(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ATTRIBUTE_ATTRIBUTE_MAPPING_KEY); + } +} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlElementMappingTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlElementMappingTests.java new file mode 100644 index 0000000000..a70cb9ab7b --- /dev/null +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJavaXmlElementMappingTests.java @@ -0,0 +1,177 @@ +/******************************************************************************* + * 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.context.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.Member; +import org.eclipse.jpt.common.core.utility.jdt.ModifiedDeclaration; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.jaxb.core.MappingKeys; +import org.eclipse.jpt.jaxb.core.context.JaxbClass; +import org.eclipse.jpt.jaxb.core.context.JaxbClassMapping; +import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute; +import org.eclipse.jpt.jaxb.core.resource.java.JAXB; +import org.eclipse.jpt.jaxb.eclipselink.core.internal.context.java.ELJavaXmlElementMapping; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.ELJaxb; +import org.eclipse.jpt.jaxb.eclipselink.core.resource.java.XmlPathAnnotation; +import org.eclipse.jpt.jaxb.eclipselink.core.tests.internal.context.ELJaxbContextModelTestCase; + + +public class ELJavaXmlElementMappingTests + extends ELJaxbContextModelTestCase { + + public ELJavaXmlElementMappingTests(String name) { + super(name); + } + + + private ICompilationUnit createTypeWithXmlElement() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JAXB.XML_TYPE, JAXB.XML_ELEMENT); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlType"); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlElement"); + } + }); + } + + private ICompilationUnit createTypeWithXmlPath() throws Exception { + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(JAXB.XML_TYPE, ELJaxb.XML_PATH); + } + + @Override + public void appendTypeAnnotationTo(StringBuilder sb) { + sb.append("@XmlType"); + } + + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@XmlPath"); + } + }); + } + + + public void testModifyXmlPath() throws Exception { + createTypeWithXmlElement(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + ELJavaXmlElementMapping mapping = (ELJavaXmlElementMapping) persistentAttribute.getMapping(); + JavaResourceAttribute resourceAttribute = mapping.getPersistentAttribute().getJavaResourceAttribute(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + + mapping.addXmlPath(); + + assertEquals(1, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNotNull(mapping.getXmlPath()); + + mapping.removeXmlPath(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + } + + public void testUpdateXmlPath() throws Exception { + createTypeWithXmlElement(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + ELJavaXmlElementMapping mapping = (ELJavaXmlElementMapping) persistentAttribute.getMapping(); + JavaResourceAttribute resourceAttribute = mapping.getPersistentAttribute().getJavaResourceAttribute(); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + + AnnotatedElement annotatedElement = this.annotatedElement(resourceAttribute); + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlElementMappingTests.this.addMarkerAnnotation( + declaration.getDeclaration(), ELJaxb.XML_PATH); + } + }); + + assertEquals(1, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNotNull(mapping.getXmlPath()); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlElementMappingTests.this.removeAnnotation(declaration, ELJaxb.XML_PATH); + } + }); + + assertEquals(0, CollectionTools.size(resourceAttribute.getAnnotations(ELJaxb.XML_PATH))); + assertNull(mapping.getXmlPath()); + } + + public void testDefault() throws Exception { + createTypeWithXmlPath(); + + JaxbClass jaxbClass = (JaxbClass) CollectionTools.get(getContextRoot().getTypes(), 0); + JaxbClassMapping classMapping = jaxbClass.getMapping(); + JaxbPersistentAttribute persistentAttribute = CollectionTools.get(classMapping.getAttributes(), 0); + JavaResourceAttribute resourceAttribute = persistentAttribute.getJavaResourceAttribute(); + XmlPathAnnotation xmlPathAnnotation = (XmlPathAnnotation) resourceAttribute.getAnnotation(0, ELJaxb.XML_PATH); + + assertNotNull(xmlPathAnnotation); + assertTrue(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ELEMENT_ATTRIBUTE_MAPPING_KEY); + + AnnotatedElement annotatedElement = this.annotatedElement(resourceAttribute); + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlElementMappingTests.this.setMemberValuePair( + declaration, ELJaxb.XML_PATH, "element/@attribute"); + } + }); + + assertNotNull(xmlPathAnnotation.getValue()); + assertFalse(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ELEMENT_ATTRIBUTE_MAPPING_KEY); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlElementMappingTests.this.setMemberValuePair( + declaration, ELJaxb.XML_PATH, "./element[@name=\"foo\"]/element[1]/text()"); + } + }); + + assertNotNull(xmlPathAnnotation.getValue()); + assertTrue(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ELEMENT_ATTRIBUTE_MAPPING_KEY); + + annotatedElement.edit(new Member.Editor() { + public void edit(ModifiedDeclaration declaration) { + ELJavaXmlElementMappingTests.this.removeMemberValuePair( + declaration, ELJaxb.XML_PATH); + } + }); + + assertNull(xmlPathAnnotation.getValue()); + assertTrue(persistentAttribute.getMapping().getKey() == MappingKeys.XML_ELEMENT_ATTRIBUTE_MAPPING_KEY); + } +} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJaxbCoreJavaContextModelTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJaxbCoreJavaContextModelTests.java index 2d229f7797..ddc02c141a 100644 --- a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJaxbCoreJavaContextModelTests.java +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/java/ELJaxbCoreJavaContextModelTests.java @@ -19,6 +19,8 @@ public class ELJaxbCoreJavaContextModelTests public static Test suite() { TestSuite suite = new TestSuite(ELJaxbCoreJavaContextModelTests.class.getName()); + suite.addTestSuite(ELJavaXmlAttributeMappingTests.class); + suite.addTestSuite(ELJavaXmlElementMappingTests.class); suite.addTestSuite(ELJavaXmlInverseReferenceMappingTests.class); return suite; } |