[jboss-svn-commits] JBoss Common SVN: r2098 - in jbossxb/trunk/src: main/java/org/jboss/xb/binding/parser/sax test/java/org/jboss/test/xml test/resources/org/jboss/test/xml
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 2 10:20:23 EDT 2006
Author: adrian at jboss.org
Date: 2006-10-02 10:20:15 -0400 (Mon, 02 Oct 2006)
New Revision: 2098
Added:
jbossxb/trunk/src/test/java/org/jboss/test/xml/XIncludeUnitTestCase.java
jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xsd
jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude_Included.xml
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/AbstractJBossXBTest.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/RepeatableTermsUnitTestCase.java
Log:
[JBXB-86] Add support for XInclude
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2006-10-02 14:20:15 UTC (rev 2098)
@@ -23,6 +23,8 @@
import java.io.InputStream;
import java.io.Reader;
+import java.lang.reflect.Method;
+
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.jboss.logging.Logger;
@@ -54,6 +56,7 @@
{
saxFactory.setValidating(true);
saxFactory.setNamespaceAware(true);
+ enableXInclude();
}
private final XMLReader reader;
@@ -61,6 +64,25 @@
private DelegatingContentHandler delegateHandler;
private boolean trace;
+ /**
+ * Enables XInclude if the saxFactory supports it.<p>
+ *
+ * NOTE: Checks the real factory class, not the JAXP interface.
+ */
+ private static void enableXInclude()
+ {
+ try
+ {
+ Class clazz = saxFactory.getClass();
+ Method method = clazz.getMethod("setXIncludeAware", new Class[] { Boolean.TYPE });
+ method.invoke(saxFactory, new Object[] { Boolean.TRUE });
+ }
+ catch (Exception e)
+ {
+ log.trace("Not setting XIncludeAware", e);
+ }
+ }
+
public SaxJBossXBParser()
throws JBossXBException
{
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/AbstractJBossXBTest.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/AbstractJBossXBTest.java 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/AbstractJBossXBTest.java 2006-10-02 14:20:15 UTC (rev 2098)
@@ -26,7 +26,11 @@
import org.jboss.test.AbstractTestCaseWithSetup;
import org.jboss.test.AbstractTestDelegate;
import org.jboss.util.Classes;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
/**
* AbstractJBossXBTest.
@@ -110,6 +114,7 @@
* Unmarshal some xml
*
* @param name the name
+ * @param resolver the resolver
* @return the unmarshalled object
* @throws Exception for any error
*/
@@ -120,6 +125,26 @@
}
/**
+ * Unmarshall some xml<p>
+ *
+ * The xsd name is UnitTestClass_testName.xsd<p>
+ *
+ * The xml name is UnitTestClass_testName.xml
+ *
+ * @return the object
+ * @throws Exception for any problem
+ */
+ protected Object unmarshal() throws Exception
+ {
+ String testXsd = findXML(rootName + "_" + getName() + ".xsd");
+ SchemaBinding schema = XsdBinder.bind(testXsd, (SchemaBindingResolver)null);
+ schema.setIgnoreUnresolvedFieldOrClass(false);
+
+ Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ return unmarshaller.unmarshal(findXML(rootName + "_" + getName() + ".xml"), schema);
+ }
+
+ /**
* Find the xml
*
* @param name the name
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/RepeatableTermsUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/RepeatableTermsUnitTestCase.java 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/RepeatableTermsUnitTestCase.java 2006-10-02 14:20:15 UTC (rev 2098)
@@ -22,11 +22,6 @@
package org.jboss.test.xml;
import java.util.Arrays;
-import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
-import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
-import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
-import org.jboss.xb.binding.Unmarshaller;
-import org.jboss.xb.binding.UnmarshallerFactory;
/**
* @author <a href="mailto:alex at jboss.org">Alexey Loubyansky</a>
@@ -100,17 +95,7 @@
assertEquals("item1", top.item1);
assertEquals("item2", top.item2);
}
-
- private Object unmarshal() throws Exception
- {
- String testXsd = findXML(rootName + "_" + getName() + ".xsd");
- SchemaBinding schema = XsdBinder.bind(testXsd, (SchemaBindingResolver)null);
- schema.setIgnoreUnresolvedFieldOrClass(false);
- Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
- return unmarshaller.unmarshal(findXML(rootName + "_" + getName() + ".xml"), schema);
- }
-
// Inner
public static final class Top
Added: jbossxb/trunk/src/test/java/org/jboss/test/xml/XIncludeUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/XIncludeUnitTestCase.java 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/XIncludeUnitTestCase.java 2006-10-02 14:20:15 UTC (rev 2098)
@@ -0,0 +1,48 @@
+/*
+ * 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;
+
+/***
+ * XIncludeUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class XIncludeUnitTestCase extends AbstractJBossXBTest
+{
+ public XIncludeUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testXInclude() throws Exception
+ {
+ Object o = unmarshal();
+
+ assertNotNull(o);
+ assertTrue(o instanceof Top);
+ }
+
+ public static final class Top
+ {
+ }
+}
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xml 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xml 2006-10-02 14:20:15 UTC (rev 2098)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xi:include href="XIncludeUnitTestCase_testXInclude_Included.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+/>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xsd
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xsd 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude.xsd 2006-10-02 14:20:15 UTC (rev 2098)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.jboss.org/test/xml/xinclude"
+ xmlns="http://www.jboss.org/test/xml/xinclude"
+ xmlns:jbxb="http://www.jboss.org/xml/ns/jbxb"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0"
+>
+
+ <xsd:element name="top">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jbxb:class impl="org.jboss.test.xml.XIncludeUnitTestCase$Top"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+</xsd:schema>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude_Included.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude_Included.xml 2006-09-30 07:57:56 UTC (rev 2097)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xml/XIncludeUnitTestCase_testXInclude_Included.xml 2006-10-02 14:20:15 UTC (rev 2098)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<top xmlns='http://www.jboss.org/test/xml/xinclude'/>
More information about the jboss-svn-commits
mailing list