[jboss-svn-commits] JBoss Common SVN: r2157 - in jbossxb/trunk/src/test: java/org/jboss/test/xml resources/org/jboss/test/xml
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Nov 15 12:09:10 EST 2006
Author: adrian at jboss.org
Date: 2006-11-15 12:09:05 -0500 (Wed, 15 Nov 2006)
New Revision: 2157
Added:
jbossxb/trunk/src/test/java/org/jboss/test/xml/AnyComplexTypeUnitTestCase.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/CollectionOverridePropertyUnitTestCase.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleContentUnitTestCase.java
jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexType.xsd
jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromMultipleWildCardAndElement.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCard.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCardAndElement.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xsd
jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xsd
Log:
Some more tests.
Added: jbossxb/trunk/src/test/java/org/jboss/test/xml/AnyComplexTypeUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/AnyComplexTypeUnitTestCase.java 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/AnyComplexTypeUnitTestCase.java 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,403 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.xml;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.TestSuite;
+
+import org.jboss.util.Strings;
+import org.jboss.util.xml.DOMWriter;
+import org.jboss.xb.binding.metadata.ClassMetaData;
+import org.jboss.xb.binding.metadata.ValueMetaData;
+import org.jboss.xb.binding.sunday.unmarshalling.CharactersHandler;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultElementInterceptor;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleHandler;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+import org.xml.sax.Attributes;
+
+/**
+ * AnyComplexTypeUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class AnyComplexTypeUnitTestCase extends AbstractJBossXBTest
+{
+ private static final String NS = "http://www.jboss.org/test/xml/anyComplexType";
+
+ public static final TestSuite suite()
+ {
+ return new TestSuite(AnyComplexTypeUnitTestCase.class);
+ }
+
+ public AnyComplexTypeUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testDOMFromWildcard() throws Exception
+ {
+ SchemaBinding schema = bind("AnyComplexType.xsd");
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ ClassMetaData classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Top.class.getName());
+ ElementBinding element = schema.getElement(new QName(NS, "top"));
+ assertNotNull(element);
+ element.setClassMetaData(classMetaData);
+
+ DOMUnresolvedHandler unresolved = new DOMUnresolvedHandler();
+ TypeBinding type = schema.getType(new QName(NS, "any-complexType"));
+ type.setStartElementCreatesObject(false);
+ WildcardBinding wild = type.getWildcard();
+ assertNotNull(wild);
+ wild.setUnresolvedElementHandler(unresolved);
+ wild.setUnresolvedCharactersHandler(unresolved);
+
+ Top top = (Top) unmarshal("AnyComplexTypeFromWildCard.xml", schema, Top.class);
+ Element dom = top.element;
+ assertNotNull(dom);
+ getLog().debug(DOMWriter.printNode(dom, true));
+ assertElement("e1", dom);
+ Element e1s1 = getUniqueChild(dom, "e1s1");
+ assertElement("e1s1", e1s1);
+ Element e1s1s1 = getUniqueChild(e1s1, "e1s1s1");
+ assertElement("e1s1s1", e1s1s1);
+ Element e1s1s2 = getUniqueChild(e1s1, "e1s1s2");
+ assertElement("e1s1s2", e1s1s2);
+ Element e1s2 = getUniqueChild(dom, "e1s2");
+ assertElement("e1s2", e1s2);
+ }
+
+ public void testDOMFromWildcardAndElement() throws Exception
+ {
+ SchemaBinding schema = bind("AnyComplexType.xsd");
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ ClassMetaData classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Top.class.getName());
+ ElementBinding element = schema.getElement(new QName(NS, "top"));
+ assertNotNull(element);
+ element.setClassMetaData(classMetaData);
+
+ DOMUnresolvedHandler unresolved = new DOMUnresolvedHandler();
+ TypeBinding type = schema.getType(new QName(NS, "any-complexType"));
+ type.setStartElementCreatesObject(false);
+ WildcardBinding wild = type.getWildcard();
+ assertNotNull(wild);
+ wild.setUnresolvedElementHandler(unresolved);
+ wild.setUnresolvedCharactersHandler(unresolved);
+
+ DOMInterceptor interceptor = new DOMInterceptor();
+ element = schema.getElement(new QName(NS, "element"));
+ element.pushInterceptor(interceptor);
+
+ Top top = (Top) unmarshal("AnyComplexTypeFromWildCardAndElement.xml", schema, Top.class);
+ Element dom = top.element;
+ assertNotNull(dom);
+ getLog().debug(DOMWriter.printNode(dom, true));
+ assertElement("element", dom, true); // TODO FIXME
+ Element e1 = getUniqueChild(dom, "e1");
+ assertElement("e1", e1);
+ Element e1s1 = getUniqueChild(e1, "e1s1");
+ assertElement("e1s1", e1s1);
+ Element e1s1s1 = getUniqueChild(e1s1, "e1s1s1");
+ assertElement("e1s1s1", e1s1s1);
+ Element e1s1s2 = getUniqueChild(e1s1, "e1s1s2");
+ assertElement("e1s1s2", e1s1s2);
+ Element e1s2 = getUniqueChild(e1, "e1s2");
+ assertElement("e1s2", e1s2);
+ }
+
+ public void testDOMFromMultipleWildcardAndElement() throws Exception
+ {
+ SchemaBinding schema = bind("AnyComplexType.xsd");
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ ClassMetaData classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Top.class.getName());
+ ElementBinding element = schema.getElement(new QName(NS, "top"));
+ assertNotNull(element);
+ element.setClassMetaData(classMetaData);
+
+ DOMUnresolvedHandler unresolved = new DOMUnresolvedHandler();
+ TypeBinding type = schema.getType(new QName(NS, "any-complexType"));
+ type.setStartElementCreatesObject(false);
+ WildcardBinding wild = type.getWildcard();
+ assertNotNull(wild);
+ wild.setUnresolvedElementHandler(unresolved);
+ wild.setUnresolvedCharactersHandler(unresolved);
+
+ DOMInterceptor interceptor = new DOMInterceptor();
+ element = schema.getElement(new QName(NS, "element"));
+ element.pushInterceptor(interceptor);
+
+ Top top = (Top) unmarshal("AnyComplexTypeFromMultipleWildCardAndElement.xml", schema, Top.class);
+ Element dom = top.element;
+ assertNotNull(dom);
+ getLog().debug(DOMWriter.printNode(dom, true));
+ assertElement("element", dom, true); // TODO FIXME
+ Element e1 = getUniqueChild(dom, "e1");
+ assertElement("e1", e1);
+ Element e1s1 = getUniqueChild(e1, "e1s1");
+ assertElement("e1s1", e1s1);
+ Element e1s1s1 = getUniqueChild(e1s1, "e1s1s1");
+ assertElement("e1s1s1", e1s1s1);
+ Element e1s1s2 = getUniqueChild(e1s1, "e1s1s2");
+ assertElement("e1s1s2", e1s1s2);
+ Element e1s2 = getUniqueChild(e1, "e1s2");
+ assertElement("e1s2", e1s2);
+ Element e2 = getUniqueChild(dom, "e2");
+ assertElement("e2", e2);
+ }
+
+ protected void assertElement(String elementName, Element element)
+ {
+ assertElement(elementName, element, false);
+ }
+
+ protected void assertElement(String elementName, Element element, boolean ignoreChars)
+ {
+ assertNotNull(element);
+ assertEquals(elementName, element.getLocalName());
+ assertEquals(elementName + "a1", element.getAttribute(elementName + "a1"));
+ assertEquals(elementName + "a2", element.getAttribute(elementName + "a2"));
+ if (ignoreChars == false)
+ assertEquals(elementName + "c1", getElementContent(element));
+ }
+
+ protected static String getElementContent(Element element)
+ {
+ if (element == null)
+ return null;
+ NodeList children = element.getChildNodes();
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < children.getLength(); ++i)
+ {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.CDATA_SECTION_NODE)
+ result.append(child.getNodeValue());
+ }
+ return result.toString().trim();
+ }
+
+ protected static Element getUniqueChild(Element element, String childName)
+ {
+ if (element == null)
+ return null;
+ NodeList children = element.getChildNodes();
+ Element result = null;
+ for (int i = 0; i < children.getLength(); ++i)
+ {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE && childName.equals(child.getNodeName()))
+ {
+ if (result != null)
+ fail(childName + " not unique");
+ result = (Element) child;
+ }
+ }
+
+ if (result == null)
+ fail("No " + childName);
+ return result;
+ }
+
+ public Element createTopElement(String namespace, String name)
+ {
+ try
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ DOMImplementation impl = builder.getDOMImplementation();
+ Document document = impl.createDocument(null, null, null);
+
+ Element element = document.createElementNS(namespace, name);
+ document.appendChild(element);
+ getLog().debug("createTopElement " + namespace + ":" + name + " result=" + toDebugString(element));
+ return element;
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error creating dom", e);
+ }
+ }
+
+ public Element appendChildElement(Element parentElement, String namespace, String name)
+ {
+ Document document = parentElement.getOwnerDocument();
+ Element element = document.createElementNS(namespace, name);
+ parentElement.appendChild(element);
+ getLog().debug("appendChild parent=" + toDebugString(parentElement) + " child=" + toDebugString(element));
+ return element;
+ }
+
+ public void addAttributes(Element element, Attributes attrs)
+ {
+ for (int i = 0; i < attrs.getLength(); ++i)
+ {
+ String local = attrs.getLocalName(i);
+ String nsURI = attrs.getURI(i);
+ String value = attrs.getValue(i);
+ getLog().debug("setAttribute " + nsURI + " " + local + " element=" + toDebugString(element) + " value=" + value);
+ element.setAttributeNS(nsURI, local, value);
+ }
+ }
+
+ public void setText(Object owner, Object value, QName qName)
+ {
+ if (value == null)
+ return;
+ if (owner == null || owner instanceof Element == false)
+ throw new IllegalStateException("Unexpected owner: " + owner + " for " + qName);
+ if (value instanceof String == false)
+ throw new IllegalStateException("Unexpected value " + value + " for " + qName);
+ Element element = (Element) owner;
+ Text text = element.getOwnerDocument().createTextNode((String) value);
+ getLog().debug("setText " + qName + " parent=" + toDebugString(owner) + " child=" + toDebugString(value));
+ element.appendChild(text);
+ }
+
+ public class DOMUnresolvedHandler extends CharactersHandler implements ParticleHandler
+ {
+ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs, NamespaceContext nsCtx)
+ {
+ getLog().debug("startParticle " + elementName + " parent=" + toDebugString(parent));
+ Element element = null;
+ if (parent == null || parent instanceof Element == false)
+ element = createTopElement(elementName.getNamespaceURI(), elementName.getLocalPart());
+ else
+ element = appendChildElement((Element) parent, elementName.getNamespaceURI(), elementName.getLocalPart());
+ addAttributes(element, attrs);
+ return element;
+ }
+
+ public Object endParticle(Object o, QName elementName, ParticleBinding particle)
+ {
+ getLog().debug("endParticle " + elementName + " result=" + toDebugString(o));
+ return o;
+ }
+
+ public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
+ {
+ getLog().debug("setParent " + elementName + " parent=" + toDebugString(parent) + " o=" + toDebugString(o));
+ }
+
+ public void setValue(QName qName, ElementBinding element, Object owner, Object value)
+ {
+ setText(owner, value, qName);
+ }
+
+ public Object unmarshal(QName qName, TypeBinding typeBinding, NamespaceContext nsCtx, ValueMetaData valueMetaData, String value)
+ {
+ return value;
+ }
+
+ public Object unmarshalEmpty(QName qName, TypeBinding typeBinding, NamespaceContext nsCtx, ValueMetaData valueMetaData)
+ {
+ return null;
+ }
+ }
+
+ public class DOMInterceptor extends DefaultElementInterceptor
+ {
+ public Object startElement(Object parent, QName qName, TypeBinding type)
+ {
+ getLog().debug("startElement " + qName + " parent=" + toDebugString(parent));
+ Element element = null;
+ if (parent == null || parent instanceof Element == false)
+ {
+ element = createTopElement(qName.getNamespaceURI(), qName.getLocalPart());
+ ((Top) parent).element = element;
+ }
+ else
+ element = appendChildElement((Element) parent, qName.getNamespaceURI(), qName.getLocalPart());
+ return element;
+ }
+
+ public void attributes(Object o, QName elementName, TypeBinding type, Attributes attrs, NamespaceContext nsCtx)
+ {
+ getLog().debug("setAttributes " + elementName + " parent=" + toDebugString(o));
+ if (o == null || o instanceof Element == false)
+ throw new IllegalStateException(Strings.defaultToString(o) + " is not an instanceof Element");
+ addAttributes((Element) o, attrs);
+ }
+
+ public void characters(Object o, QName qName, TypeBinding type, NamespaceContext nsCtx, String text)
+ {
+ if (o == null || o instanceof Element == false)
+ throw new IllegalStateException(Strings.defaultToString(o) + " is not an instanceof Element");
+ setText(o, text, qName);
+ }
+
+ public void add(Object parent, Object child, QName qName)
+ {
+ getLog().debug("add " + qName + " parent=" + toDebugString(parent) + " child=" + toDebugString(child));
+ if (parent == null || parent instanceof Element == false)
+ throw new IllegalStateException(Strings.defaultToString(parent) + " is not an instanceof Element");
+ if (child == null || child instanceof Element == false)
+ throw new IllegalStateException(Strings.defaultToString(child) + " is not an instanceof Element");
+
+ Element parentElement = (Element) parent;
+ Element childElement = (Element) child;
+
+ parentElement.getOwnerDocument().adoptNode(childElement);
+ parentElement.appendChild(childElement);
+ }
+ }
+
+ public static class Top
+ {
+ public Element element;
+ }
+
+ public static String toDebugString(Object object)
+ {
+ if (object == null)
+ return "null";
+ if (object instanceof String)
+ return object.toString();
+ if (object instanceof Element == false)
+ return Strings.defaultToString(object);
+ Element element = (Element) object;
+ return "Element@" + System.identityHashCode(element) + "{" + element.getLocalName() + "}";
+ }
+}
Added: jbossxb/trunk/src/test/java/org/jboss/test/xml/CollectionOverridePropertyUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/CollectionOverridePropertyUnitTestCase.java 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/CollectionOverridePropertyUnitTestCase.java 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,123 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.xml;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestSuite;
+
+import org.jboss.xb.binding.metadata.ClassMetaData;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultElementInterceptor;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+
+/**
+ * CollectionOverridePropertyUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class CollectionOverridePropertyUnitTestCase extends AbstractJBossXBTest
+{
+ private static final String NS = "http://www.jboss.org/test/xml/collectionOverrideProperty";
+
+ public static final TestSuite suite()
+ {
+ return new TestSuite(CollectionOverridePropertyUnitTestCase.class);
+ }
+
+ public CollectionOverridePropertyUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testCollectionOverrideProperty() throws Exception
+ {
+ enableTrace("org.jboss.xb");
+
+ SchemaBinding schema = bind("CollectionOverrideProperty.xsd");
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ ClassMetaData classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Parent.class.getName());
+ TypeBinding type = schema.getType(new QName(NS, "parent-type"));
+ assertNotNull(type);
+ type.setClassMetaData(classMetaData);
+
+ type.pushInterceptor(new QName(NS, "child"), new DefaultElementInterceptor()
+ {
+ public void add(Object parent, Object child, QName qName)
+ {
+ getLog().debug("Add " + parent + " " + child);
+ Parent p = (Parent) parent;
+ if (p.list == null)
+ p.list = new LinkedList();
+ p.list.add(child);
+ }
+ });
+
+ classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Child.class.getName());
+ type = schema.getType(new QName(NS, "child-type"));
+ assertNotNull(type);
+ type.setClassMetaData(classMetaData);
+
+ Parent parent = (Parent) unmarshal("CollectionOverrideProperty.xml", schema, Parent.class);
+ List list = parent.list;
+ assertNotNull(list);
+ assertEquals("one", ((Child) list.get(0)).getValue());
+ assertEquals("two", ((Child) list.get(1)).getValue());
+ }
+
+ public static class Parent
+ {
+ private List list;
+
+ public List getList()
+ {
+ return list;
+ }
+
+ public void setList(List list)
+ {
+ this.list = list;
+ }
+ }
+
+ public static class Child
+ {
+ private String value;
+
+ public String getValue()
+ {
+ return value;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+ }
+}
Added: jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleContentUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleContentUnitTestCase.java 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleContentUnitTestCase.java 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.xml;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestSuite;
+
+import org.jboss.test.xml.CollectionOverridePropertyUnitTestCase.Parent;
+import org.jboss.xb.binding.metadata.ClassMetaData;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultElementInterceptor;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+
+/**
+ * SimpleContentUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class SimpleContentUnitTestCase extends AbstractJBossXBTest
+{
+ private static final String NS = "http://www.jboss.org/test/xml/simpleContent";
+
+ public static final TestSuite suite()
+ {
+ return new TestSuite(SimpleContentUnitTestCase.class);
+ }
+
+ public SimpleContentUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testCollectionOverrideProperty() throws Exception
+ {
+ enableTrace("org.jboss.xb");
+
+ SchemaBinding schema = bind("SimpleContent.xsd");
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ ClassMetaData classMetaData = new ClassMetaData();
+ classMetaData.setImpl(Top.class.getName());
+ ElementBinding element = schema.getElement(new QName(NS, "top"));
+ assertNotNull(element);
+ element.setClassMetaData(classMetaData);
+
+ //TypeBinding type = schema.getType(new QName(NS, "myString"));
+ //type.setStartElementCreatesObject(false);
+
+ element.getType().pushInterceptor(new QName(NS, "child"), new DefaultElementInterceptor()
+ {
+ public void add(Object parent, Object child, QName qName)
+ {
+ getLog().debug("Add " + parent + " " + child);
+ Top p = (Top) parent;
+ if (p.string == null)
+ p.string = new LinkedList();
+ p.string.add(child);
+ }
+ });
+
+ Top top = (Top) unmarshal("SimpleContent.xml", schema, Top.class);
+ assertNotNull(top.getString());
+ assertEquals("Hello", top.getString().get(0));
+ }
+
+ public static class Top
+ {
+ public List string;
+
+ public List getString()
+ {
+ return string;
+ }
+
+ public void setString(List string)
+ {
+ this.string = string;
+ }
+ }
+}
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexType.xsd
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexType.xsd 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexType.xsd 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.jboss.org/test/xml/anyComplexType"
+ xmlns="http://www.jboss.org/test/xml/anyComplexType"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0">
+
+ <xsd:element name="top">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="element"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="element" type="any-complexType"/>
+
+ <xsd:complexType name="any-complexType" mixed="true">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xsd:sequence>
+ <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+</xsd:schema>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromMultipleWildCardAndElement.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromMultipleWildCardAndElement.xml 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromMultipleWildCardAndElement.xml 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<top xmlns='http://www.jboss.org/test/xml/anyComplexType'>
+ <element elementa1="elementa1" elementa2="elementa2">
+ <e1 e1a1="e1a1" e1a2="e1a2">e1c1
+ <e1s1 e1s1a1="e1s1a1" e1s1a2="e1s1a2">e1s1c1
+ <e1s1s1 e1s1s1a1="e1s1s1a1" e1s1s1a2="e1s1s1a2">e1s1s1c1
+ </e1s1s1>
+ <e1s1s2 e1s1s2a1="e1s1s2a1" e1s1s2a2="e1s1s2a2">e1s1s2c1
+ </e1s1s2>
+ </e1s1>
+ <e1s2 e1s2a1="e1s2a1" e1s2a2="e1s2a2">e1s2c1
+ </e1s2>
+ </e1>
+ <e2 e2a1="e2a1" e2a2="e2a2">e2c1
+ </e2>
+ </element>
+</top>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCard.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCard.xml 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCard.xml 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<top xmlns='http://www.jboss.org/test/xml/anyComplexType'>
+ <element>
+ <e1 e1a1="e1a1" e1a2="e1a2">e1c1
+ <e1s1 e1s1a1="e1s1a1" e1s1a2="e1s1a2">e1s1c1
+ <e1s1s1 e1s1s1a1="e1s1s1a1" e1s1s1a2="e1s1s1a2">e1s1s1c1
+ </e1s1s1>
+ <e1s1s2 e1s1s2a1="e1s1s2a1" e1s1s2a2="e1s1s2a2">e1s1s2c1
+ </e1s1s2>
+ </e1s1>
+ <e1s2 e1s2a1="e1s2a1" e1s2a2="e1s2a2">e1s2c1
+ </e1s2>
+ </e1>
+ </element>
+</top>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCardAndElement.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCardAndElement.xml 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/AnyComplexTypeFromWildCardAndElement.xml 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<top xmlns='http://www.jboss.org/test/xml/anyComplexType'>
+ <element elementa1="elementa1" elementa2="elementa2">
+ <e1 e1a1="e1a1" e1a2="e1a2">e1c1
+ <e1s1 e1s1a1="e1s1a1" e1s1a2="e1s1a2">e1s1c1
+ <e1s1s1 e1s1s1a1="e1s1s1a1" e1s1s1a2="e1s1s1a2">e1s1s1c1
+ </e1s1s1>
+ <e1s1s2 e1s1s2a1="e1s1s2a1" e1s1s2a2="e1s1s2a2">e1s1s2c1
+ </e1s1s2>
+ </e1s1>
+ <e1s2 e1s2a1="e1s2a1" e1s2a2="e1s2a2">e1s2c1
+ </e1s2>
+ </e1>
+ </element>
+</top>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xml 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xml 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<parent xmlns='http://www.jboss.org/test/xml/collectionOverrideProperty'>
+ <child>one</child>
+ <child>two</child>
+</parent>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xsd
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xsd 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/CollectionOverrideProperty.xsd 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.jboss.org/test/xml/collectionOverrideProperty"
+ xmlns="http://www.jboss.org/test/xml/collectionOverrideProperty"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0">
+
+ <xsd:element name="parent" type="parent-type"/>
+
+ <xsd:element name="child" type="child-type"/>
+
+ <xsd:complexType name="parent-type">
+ <xsd:sequence>
+ <xsd:element ref="child" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="child-type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+</xsd:schema>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xml 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xml 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<top xmlns='http://www.jboss.org/test/xml/simpleContent'>
+ <string>Hello</string>
+</top>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xsd
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xsd 2006-11-14 22:43:01 UTC (rev 2156)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/SimpleContent.xsd 2006-11-15 17:09:05 UTC (rev 2157)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.jboss.org/test/xml/simpleContent"
+ xmlns="http://www.jboss.org/test/xml/simpleContent"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0">
+
+ <xsd:element name="top">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="string" type="myString" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="myString">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+</xsd:schema>
More information about the jboss-svn-commits
mailing list