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 aj...@apache.org on 2007/10/22 22:14:13 UTC

svn commit: r587229 - in /webservices/commons/trunk/modules/XmlSchema/src: main/java/org/apache/ws/commons/schema/ main/java/org/apache/ws/commons/schema/utils/ test/java/tests/ test/test-resources/other_encoding/

Author: ajith
Date: Mon Oct 22 13:14:12 2007
New Revision: 587229

URL: http://svn.apache.org/viewvc?rev=587229&view=rev
Log:
1. Added a non UTF xml file and tested the reading and writing of that file. This file is of euc-jp (Japanese characters) encoding

Added:
    webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/EncodingTest.java
    webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/
    webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/japaneseElementForm.xsd
Modified:
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java
    webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/utils/DOMUtil.java

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java?rev=587229&r1=587228&r2=587229&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java Mon Oct 22 13:14:12 2007
@@ -397,4 +397,7 @@
 
         return true;
     }
+	public String getInputEncoding() {
+		return inputEncoding;
+	}
 }

Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java?rev=587229&r1=587228&r2=587229&view=diff
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java (original)
+++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java Mon Oct 22 13:14:12 2007
@@ -381,10 +381,11 @@
         return builder.build(doc, null, veh);
     }
 
+   
     public XmlSchema read(Element elem) {
         SchemaBuilder builder = new SchemaBuilder(this, null);
         XmlSchema xmlSchema = builder.handleXmlSchemaElement(elem, null);
-        xmlSchema.setInputEncoding(DOMUtil.getInputEncoding(elem.getOwnerDocument()));
+        xmlSchema.setInputEncoding(DOMUtil.getXmlEncoding(elem.getOwnerDocument()));
         return xmlSchema;
     }
 
@@ -395,7 +396,9 @@
     public XmlSchema read(Document doc, String uri, ValidationEventHandler veh,
             TargetNamespaceValidator validator) {
         SchemaBuilder builder = new SchemaBuilder(this, validator);
-        return builder.build(doc, uri, veh);
+        XmlSchema schema = builder.build(doc, uri, veh);
+        schema.setInputEncoding(doc.getInputEncoding());
+		return schema;
     }
 
     public XmlSchema read(Element elem, String uri) {

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=587229&r1=587228&r2=587229&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 Oct 22 13:14:12 2007
@@ -588,10 +588,20 @@
         return node.getNamespaceURI();
     }
 
+    //why do we need to use reflection here??
     public static String getInputEncoding(Document doc) {
         try {
             Method m = Document.class.getMethod("getInputEncoding", new Class[]{});
             return (String) m.invoke(doc, new Object[]{});
+        } catch (Exception e) {
+            return "UTF-8";
+        }
+    }
+    
+    //why do we need to use reflection here??
+    public static String getXmlEncoding(Document doc) {
+        try {
+            return doc.getXmlEncoding();
         } catch (Exception e) {
             return "UTF-8";
         }

Added: webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/EncodingTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/EncodingTest.java?rev=587229&view=auto
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/EncodingTest.java (added)
+++ webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/EncodingTest.java Mon Oct 22 13:14:12 2007
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package tests;
+
+import junit.framework.TestCase;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.constants.Constants;
+import org.w3c.dom.Document;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+public class EncodingTest extends TestCase {
+
+
+    public void testExternalAtt() throws Exception{
+             //create a DOM document
+           DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+           documentBuilderFactory.setNamespaceAware(true);
+           DocumentBuilder newDocumentBuilder = documentBuilderFactory.newDocumentBuilder();
+           
+		   Document doc = newDocumentBuilder.
+                   parse(Resources.asURI("other_encoding/japaneseElementForm.xsd"));
+           
+           System.out.println(doc.getXmlEncoding());
+
+           XmlSchemaCollection schemaCol = new XmlSchemaCollection();
+           XmlSchema s1 = schemaCol.read(doc.getDocumentElement());
+           assertNotNull(s1);
+           assertEquals("EUC-JP", s1.getInputEncoding().toUpperCase());
+           
+          //write it back to a stream - re read it and check the encoding
+           //we need to explicitly say to have the xml header
+           Map options = new HashMap();
+           options.put(OutputKeys.OMIT_XML_DECLARATION, "no");
+           
+           ByteArrayOutputStream baos = new ByteArrayOutputStream();
+           s1.write(baos,options);
+           
+          
+           
+           Document doc2 = newDocumentBuilder.parse(new ByteArrayInputStream(baos.toByteArray()));
+           XmlSchema s2 = schemaCol.read(doc2.getDocumentElement());
+           assertNotNull(s2);
+           assertEquals("EUC-JP", s2.getInputEncoding().toUpperCase());
+            
+           
+           
+
+       }
+
+}

Added: webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/japaneseElementForm.xsd
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/japaneseElementForm.xsd?rev=587229&view=auto
==============================================================================
--- webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/japaneseElementForm.xsd (added)
+++ webservices/commons/trunk/modules/XmlSchema/src/test/test-resources/other_encoding/japaneseElementForm.xsd Mon Oct 22 13:14:12 2007
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="euc-jp"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<!--  
+	Note - this document contains japanese characters!
+	The japanese words come from the example at http://java.sun.com/developer/earlyAccess/xml/examples/samples/weekly-euc-jp.xml.
+	I have no knowledge of japanese and apologies to the japanese users if this contains somewhat ambigous terms
+	The idea of this is to use a non ascii - non UTF characterset for testing
+ -->
+<schema
+    xmlns="http://www.w3.org/2001/XMLSchema"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:tns="http://unqualified-elements.example.com"
+    targetNamespace="http://unqualified-elements.example.com">
+
+    <element name="¶È̳Êó¹ð¥ê¥¹¥È">
+        <complexType>
+            <sequence>
+                <element name="¶È̳Êó¹ð" type="xsd:string"/>
+                <element name="»á̾"  type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+
+</schema>



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org