You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by bi...@apache.org on 2008/11/17 20:42:30 UTC

svn commit: r718345 - in /webservices/commons/trunk/modules/XmlSchema: ./ src/main/java/org/apache/ws/commons/schema/ src/main/java/org/apache/ws/commons/schema/utils/

Author: bimargulies
Date: Mon Nov 17 11:42:30 2008
New Revision: 718345

URL: http://svn.apache.org/viewvc?rev=718345&view=rev
Log:
Merged revisions 718331,718337 via svnmerge from 
https://svn.apache.org/repos/asf/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH

........
  r718331 | bimargulies | 2008-11-17 14:25:44 -0500 (Mon, 17 Nov 2008) | 3 lines
  
  WSCOMMONS-362. When capturing a node list, make a document fragment. Note that the 'set' APIs for AppInfo and Documentation don't do the cloning, the
  builder does. So anyone building their own XmlSchema should worry about this issue for themselves.
........
  r718337 | bimargulies | 2008-11-17 14:29:06 -0500 (Mon, 17 Nov 2008) | 2 lines
  
  WSCOMMONS-358
........

Added:
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/DocumentFragmentNodeList.java
      - copied unchanged from r718337, webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/DocumentFragmentNodeList.java
Modified:
    webservices/commons/trunk/modules/XmlSchema/   (props changed)
    webservices/commons/trunk/modules/XmlSchema/build.xml
    webservices/commons/trunk/modules/XmlSchema/pom.xml
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/XDOMUtil.java

Propchange: webservices/commons/trunk/modules/XmlSchema/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Nov 17 11:42:30 2008
@@ -1 +1 @@
-/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH:1-718319
+/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH:1-718344

Modified: webservices/commons/trunk/modules/XmlSchema/build.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/build.xml?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/build.xml (original)
+++ webservices/commons/trunk/modules/XmlSchema/build.xml Mon Nov 17 11:42:30 2008
@@ -30,16 +30,16 @@
 	<property name="dist.dir" value="${build.dir}/dist"/>
 	<property name="dist.zip" value="${project.name}.zip"/>
 	<property name="srcdist.zip" value="${project.name}-src.zip"/>
-    <property name="test.dir" value="${basedir}/src/test/java"/>
+	<property name="test.dir" value="${basedir}/src/test/java"/>
 	<property name="test_classes.dir" value="${build.dir}/test-classes"/>
-    <property name="test_reports.dir" value="${build.dir}/test-reports"/>
-    <property name="test_reports_w3c.dir" value="${build.dir}/test-reports-w3c"/>
+	<property name="test_reports.dir" value="${build.dir}/test-reports"/>
+	<property name="test_reports_w3c.dir" value="${build.dir}/test-reports-w3c"/>
 
-    <target name="setproxy" if="http.proxyhost">
-        <setproxy proxyhost="${http.proxyHost}" proxyport="${http.proxyPort}"/>
-    </target>
+	<target name="setproxy" if="http.proxyhost">
+	  <setproxy proxyhost="${http.proxyHost}" proxyport="${http.proxyPort}"/>
+	</target>
 
-    <target name="prepare" depends="setproxy">
+	<target name="prepare" depends="setproxy">
 		<mkdir dir="${build_classes.dir}"/>
 		<mkdir dir="${build_lib.dir}"/>
     	
@@ -74,13 +74,13 @@
 	      </not>
 	    </condition>
     	<antcall target="get-xml-schema-tests"/>
-   </target>
+    </target>
     	
-	<target name="get-xml-schema-tests" if="needsTestsDownload">
-		<echo>Downloading 6MB XML Schema test suite. This make take a few minutes...</echo>
-		<get dest="${build.dir}/xsts-2002-01-16.tar.gz" 
-			src="http://www.w3.org/XML/2004/xml-schema-test-suite/xmlschema2002-01-16/xsts-2002-01-16.tar.gz"/>
-		<untar src="${build.dir}/xsts-2002-01-16.tar.gz" compression="gzip" dest="${build.dir}"/>
+    <target name="get-xml-schema-tests" if="needsTestsDownload">
+      <echo>Downloading 6MB XML Schema test suite. This make take a few minutes...</echo>
+      <get dest="${build.dir}/xsts-2002-01-16.tar.gz" 
+	   src="http://www.w3.org/XML/2004/xml-schema-test-suite/xmlschema2002-01-16/xsts-2002-01-16.tar.gz"/>
+      <untar src="${build.dir}/xsts-2002-01-16.tar.gz" compression="gzip" dest="${build.dir}"/>
     </target>
 
     <target name="compile" depends="prepare" description="compiles the src and puts it in build/classes">

Modified: webservices/commons/trunk/modules/XmlSchema/pom.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/pom.xml?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/pom.xml (original)
+++ webservices/commons/trunk/modules/XmlSchema/pom.xml Mon Nov 17 11:42:30 2008
@@ -29,7 +29,7 @@
     <version>1.4-SNAPSHOT</version>
     <description>Commons XMLSchema is a light weight schema object model that can be used to manipualte or
         generate a schema. It has a clean, easy to use API and can easily be integrated into an existing project
-        since it has almost no dependancies on third party libraries.</description>
+        since it has almost no dependencies on third party libraries.</description>
     <url>http://ws.apache.org/commons/XmlSchema</url>
     <issueManagement>
         <system>JIRA</system>
@@ -84,7 +84,7 @@
   		     the assembly plugin cannot override the filter properties (as explained
 			 in the docs) and also does not inherit the maven standard properties. This
 		     is the one that points to a seperare filter props file --> 
-		<filters>
+	<filters>
         	<filter>src/main/assembly/filter.properties</filter>
         </filters>
 
@@ -92,8 +92,14 @@
        <resources>
           <resource>
              <directory>src/main/resources</directory>
-       </resource>
-     </resources>
+	  </resource>
+       </resources>
+       <testResources>
+	  <testResource>
+	    <directory>src/test/test-resources</directory>
+	  </testResource>
+       </testResources>
+
 
         <plugins>
             <plugin>
@@ -142,10 +148,6 @@
             </plugin>
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
-                <!--
-                        Required to run the TestW3CSchemaBucket test
-                        <version>2.3-SNAPSHOT</version>
-                -->
                 <configuration>
                     <includes>
                         <include>**/*Test.java</include>
@@ -223,10 +225,6 @@
         		<plugins>
         			<plugin>
         				<artifactId>maven-surefire-plugin</artifactId>
-        				<!--
-        					Required to run the TestW3CSchemaBucket test
-        					<version>2.3-SNAPSHOT</version>
-        				-->
         				<configuration>
         					<includes>
         						<include>**/*Test.java</include>
@@ -281,10 +279,6 @@
         		<plugins>
         			<plugin>
         				<artifactId>maven-surefire-plugin</artifactId>
-        				<!--
-        					Required to run the TestW3CSchemaBucket test
-        					<version>2.3-SNAPSHOT</version>
-        				-->
         				<configuration>
         					<includes>
         						<include>**/*Test.java</include>
@@ -371,7 +365,7 @@
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jdepend-maven-plugin</artifactId>
-                <version>2.0-beta-1</version>
+                <version>2.0-beta-2</version>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java Mon Nov 17 11:42:30 2008
@@ -34,7 +34,9 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import java.lang.ref.SoftReference;
+import java.util.ArrayList;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -771,7 +773,7 @@
 		
 		return complexContent;
 	}
-
+	
 	private XmlSchemaSimpleContentRestriction handleSimpleContentRestriction(
 			XmlSchema schema, Element restrictionEl, Element schemaEl) {
 
@@ -805,10 +807,7 @@
 				restriction.setAnnotation(handleAnnotation(el));
 			} else {
 				XmlSchemaFacet facet = XmlSchemaFacet.construct(el);
-				NodeList annotations = el.getElementsByTagNameNS(
-						XmlSchema.SCHEMA_NS, "annotation");
-
-				if (annotations.getLength() > 0) {
+				if(XDOMUtil.anyElementsWithNameNS(el, XmlSchema.SCHEMA_NS, "annotation")) {
 					XmlSchemaAnnotation facetAnnotation = handleAnnotation(el);
 					facet.setAnnotation(facetAnnotation);
 				}
@@ -1564,7 +1563,7 @@
 	}
 
 	/**
-	 * Hanlde the import
+	 * Handle the import
 	 * @param schema
 	 * @param importEl
 	 * @param schemaEl
@@ -1734,10 +1733,9 @@
 	 */
 	XmlSchemaAppInfo handleAppInfo(Element content) {
 		XmlSchemaAppInfo appInfo = new XmlSchemaAppInfo();
-		NodeList markup = getChildren(content);
+		NodeList markup = new DocumentFragmentNodeList(content);
 
-		if (!content.hasAttribute("source")
-				&& (markup == null || markup.getLength() <= 0)) {
+		if (!content.hasAttribute("source")) {
 			return null;
 		}
 		appInfo.setSource(getAttribute(content, "source"));
@@ -1748,16 +1746,16 @@
 	//iterate each documentation element, create new XmlSchemaAppinfo and add to collection
 	XmlSchemaDocumentation handleDocumentation(Element content) {
 		XmlSchemaDocumentation documentation = new XmlSchemaDocumentation();
-		NodeList markup = getChildren(content);
+		List markup = getChildren(content);
 
 		if (!content.hasAttribute("source")
 				&& !content.hasAttribute("xml:lang")
-				&& (markup == null || markup.getLength() <= 0))
+				&& markup == null)
 			return null;
 
 		documentation.setSource(getAttribute(content, "source"));
 		documentation.setLanguage(getAttribute(content, "xml:lang"));
-		documentation.setMarkup(getChildren(content));
+		documentation.setMarkup(new DocumentFragmentNodeList(content));
 
 		return documentation;
 	}
@@ -1768,11 +1766,16 @@
 		return null;
 	}
 
-	private NodeList getChildren(Element content) {
-		NodeList childs = content.getChildNodes();
-		if (childs.getLength() > 0)
-			return childs;
-		return null;
+	private List getChildren(Element content) {
+		List result = new ArrayList();
+		for(Node n = content.getFirstChild(); n != null; n = n.getNextSibling()) {
+			result.add(n);
+		}
+		if(result.size() == 0) {
+			return null;
+		} else {
+			return result;
+		}
 	}
 
 	long getMinOccurs(Element el) {

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java Mon Nov 17 11:42:30 2008
@@ -1952,7 +1952,7 @@
         if (appInfoObj.markup != null) {
             int markupLength = appInfoObj.markup.getLength();
             for (int j = 0; j < markupLength; j++) {
-                Node n = appInfoObj.markup.item(j);
+                Node n = (Node) appInfoObj.markup.item(j);
                appInfoEl.appendChild(doc.importNode(n,true));
             }
         }
@@ -1998,7 +1998,7 @@
         if (documentationObj.markup != null) {
             int markupLength = documentationObj.markup.getLength();
             for (int j = 0; j < markupLength; j++) {
-                Node n = documentationObj.markup.item(j);
+                Node n = (Node) documentationObj.markup.item(j);
 
                 switch (n.getNodeType()) {
                     case Node.ELEMENT_NODE:

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java Mon Nov 17 11:42:30 2008
@@ -598,9 +598,9 @@
      */
     public static String getInputEncoding(Document doc) {
         try {
-            Method m = Document.class.getMethod("getInputEncoding", new Class[]{});
+            Method m = doc.getClass().getMethod("getInputEncoding", new Class[]{});
             return (String) m.invoke(doc, new Object[]{});
-        } catch (Exception e) {
+        } catch (Throwable e) {
             return DEFAULT_ENCODING;
         }
     }
@@ -615,10 +615,10 @@
      */
     public static String getXmlEncoding(Document doc) {
         try {
-        	 Method m = Document.class.getMethod("getXmlEncoding", new Class[]{});
+        	 Method m = doc.getClass().getMethod("getXmlEncoding", new Class[]{});
              return (String) m.invoke(doc, new Object[]{});
-        } catch (Exception e) {
+        } catch (Throwable e) {
             return DEFAULT_ENCODING;
         }
     }
-} // class XUtil
+} 

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/XDOMUtil.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/XDOMUtil.java?rev=718345&r1=718344&r2=718345&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/XDOMUtil.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/XDOMUtil.java Mon Nov 17 11:42:30 2008
@@ -66,5 +66,15 @@
         return null;
 
     }
+    
+    public static boolean anyElementsWithNameNS(Element element, String uri, String name) {
+    	for (Element el = getFirstChildElementNS(element, uri); el != null; el = XDOMUtil.getNextSiblingElementNS(el, uri)) {
+    		if(el.getLocalName().equals(name) && el.getNamespaceURI().equals(uri)) {
+    			return true;
+    		}
+    	}
+    	return false;
+    }
+    
 
 }