[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