You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by ng...@apache.org on 2010/10/12 23:30:32 UTC

svn commit: r1021933 [9/9] - in /incubator/wink/trunk: ./ wink-json4j/ wink-json4j/src/ wink-json4j/src/main/ wink-json4j/src/main/java/ wink-json4j/src/main/java/org/ wink-json4j/src/main/java/org/apache/ wink-json4j/src/main/java/org/apache/wink/ win...

Added: incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/OrderedJSONObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/OrderedJSONObjectTest.java?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/OrderedJSONObjectTest.java (added)
+++ incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/OrderedJSONObjectTest.java Tue Oct 12 21:30:30 2010
@@ -0,0 +1,234 @@
+/*
+ * 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 org.apache.wink.json4j.tests;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import java.io.*;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.HashMap;
+import java.util.ArrayList;
+
+import org.apache.wink.json4j.*;
+import org.apache.wink.json4j.utils.*;
+
+/**
+ * Tests for the basic Java OrderedJSONObject model
+ */
+public class OrderedJSONObjectTest extends JSONObjectTest {
+    public void test_OrderedJson() {
+        String JSON = "{\"attribute\":\"foo\",\"number\":100.959,\"boolean\":true}";
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject(JSON);
+            String jsonStr = obj.write(false);
+            assertTrue(jsonStr.equals(JSON));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Rest of removing the first and then adding it back in to see if it shifts to the end.
+     */
+    public void test_OrderedJsonMove() {
+        String JSON = "{\"attribute\":\"foo\", \"number\":100.959, \"boolean\":true}";
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject(JSON);
+            String attribute = (String)obj.remove("attribute");
+            obj.put("attribute",attribute);
+
+            String jsonStr = obj.write(false);
+            Iterator order = obj.getOrder();
+
+            String[] expectedOrder = new String[] { "number", "boolean", "attribute" };
+            int i = 0;
+            while (order.hasNext()) {
+                assertTrue(expectedOrder[i].equals((String)order.next()));
+                i++;
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Test of removing two entries and ensuring the order is as expected in output
+     */
+    public void test_OrderedJsonRemove() {
+        String JSON = "{\"attribute\":\"foo\", \"number\":100.959, \"boolean\":true, \"banana\":\"sherbert\"}";
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject(JSON);
+            obj.remove("attribute");
+            obj.remove("boolean");
+            assertTrue(obj.toString().equals("{\"number\":100.959,\"banana\":\"sherbert\"}"));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Test of removing two entries and ensuring the order is as expected in output
+     */
+    public void test_OrderedJsonRemoveMove() {
+        String JSON = "{\"attribute\":\"foo\", \"number\":100.959, \"boolean\":true, \"banana\":\"sherbert\"}";
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject(JSON);
+            obj.remove("attribute");
+            Boolean b = (Boolean)obj.remove("boolean");
+            obj.put("boolean", b);
+
+            System.out.println("Ordering: " + obj.toString());
+
+            assertTrue(obj.toString().equals("{\"number\":100.959,\"banana\":\"sherbert\",\"boolean\":true}"));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Test of multiple puts not affecting ordering.
+     */
+    public void test_OrderedJsonMultiPut() {
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject();
+
+            obj.put("Entry1", "Value1");
+            obj.put("Entry2", "Value2");
+            obj.put("Entry3", "Value3");
+            obj.put("Entry2", "ReplacedValue2");
+            String jsonStr = obj.write(true);
+            System.out.println(jsonStr);
+
+            Iterator order = obj.getOrder();
+            ArrayList orderList = new ArrayList();
+            StringBuffer buf = new StringBuffer("");
+            while (order.hasNext()) {
+                String next = (String)order.next();
+                buf.append(next);
+                orderList.add(next);
+                if (order.hasNext()) {
+                    buf.append(" ");
+                }
+            }
+            assertTrue(orderList.get(0).equals("Entry1"));
+            assertTrue(orderList.get(1).equals("Entry2"));
+            assertTrue(orderList.get(2).equals("Entry3"));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Test of clone
+     */
+    public void test_OrderedClone() {
+        try {
+            OrderedJSONObject obj = new OrderedJSONObject();
+
+            obj.put("Entry1", "Value1");
+            obj.put("Entry2", "Value2");
+            obj.put("Entry3", "Value3");
+            obj.put("Entry2", "ReplacedValue2");
+
+            OrderedJSONObject clone = (OrderedJSONObject)obj.clone();
+
+            String jsonStr = clone.write(true);
+            Iterator order = clone.getOrder();
+            ArrayList orderList = new ArrayList();
+            StringBuffer buf = new StringBuffer("");
+            while (order.hasNext()) {
+                String next = (String)order.next();
+                buf.append(next);
+                orderList.add(next);
+                if (order.hasNext()) {
+                    buf.append(" ");
+                }
+            }
+            assertTrue(orderList.get(0).equals("Entry1"));
+            assertTrue(orderList.get(1).equals("Entry2"));
+            assertTrue(orderList.get(2).equals("Entry3"));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    /**
+     * Test of ensuring an object loaded via an Ordered parse remains in the proper order.
+     */
+    public void test_OrderedJsonRead() {
+        try {
+            FileInputStream fis = new FileInputStream(new File("jsonfiles/utf8_ordered.json"));
+            ArrayList orderList = new ArrayList();
+
+            OrderedJSONObject obj = new OrderedJSONObject(fis);
+            fis.close();
+
+            String jsonStr = obj.write(true);
+            Iterator order = obj.getOrder();
+            while (order.hasNext()) {
+                String next = (String) order.next();
+                orderList.add(next);
+            }
+            assertTrue(orderList.get(0).equals("First_Entry"));
+            assertTrue(orderList.get(1).equals("Second_Entry"));
+            assertTrue(orderList.get(2).equals("Third_Entry"));
+
+            //Validate the nested JSONObject was also contructed in an ordered manner.
+            OrderedJSONObject jObject = (OrderedJSONObject)obj.get("Second_Entry");
+            order = jObject.getOrder();
+            orderList.clear();
+            StringBuffer buf = new StringBuffer("");
+            while (order.hasNext()) {
+                String next = (String) order.next();
+                orderList.add(next);
+                buf.append(next);
+                if (order.hasNext()) {
+                    buf.append(" ");
+                }
+            }
+            assertTrue(orderList.get(0).equals("name"));
+            assertTrue(orderList.get(1).equals("demos"));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    public void test_toString() {
+        try {
+            JSONObject obj = new JSONObject();
+            obj.put("attribute", "foo");
+            obj.put("number", new Double(100.959));
+            String jsonStr = obj.write();
+            String jsonStr2 = obj.toString();
+            assertTrue(jsonStr.equals(jsonStr2));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            assertTrue(false);
+        }
+    }
+}

Added: incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/XMLTests.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/XMLTests.java?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/XMLTests.java (added)
+++ incubator/wink/trunk/wink-json4j/src/test/java/org/apache/wink/json4j/tests/XMLTests.java Tue Oct 12 21:30:30 2010
@@ -0,0 +1,492 @@
+/*
+ * 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 org.apache.wink.json4j.tests;
+
+/**
+ * Basic junit imports.
+ */
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import java.io.*;
+
+/**
+ * Import JSON code we're testing
+ */
+import org.apache.wink.json4j.JSONArray;
+import org.apache.wink.json4j.JSONObject;
+import org.apache.wink.json4j.utils.*;
+
+/**
+ * Tests for all the basic XML Transform functions.
+ */
+public class XMLTests extends TestCase {
+
+    /**
+     * Test a basic transform of an XML file to a JSON string with verbose emit.
+     */
+    public void testSimpleXMLDocument_AsFileToStringCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+
+        try {
+            String JSON = XML.toJson(file);
+            System.out.println("JSON compacted text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a basic transform of an XML file to a JSON string with compact emit.
+     */
+    public void testSimpleXMLDocument_AsFileToStringVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+
+        try {
+            String JSON = XML.toJson(file, true);
+            System.out.println("JSON non-compact text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+
+    /**
+     * Test a complex transform of an XML file to a JSON string with verbose emit.
+     */
+    public void testComplexXMLDocument_AsFileToStringCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+
+        try {
+            String JSON = XML.toJson(file);
+            System.out.println("JSON compacted text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML file to a JSON string with compact emit.
+     */
+    public void testComplexXMLDocument_AsFileToStringVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+
+        try {
+            String JSON = XML.toJson(file, true);
+            System.out.println("JSON non-compact text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML file to a JSON string with compact emit.
+     */
+    public void testComplexXMLDocumentWithLongText_AsFileToStringVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/long-text.xml");
+
+        try {
+            String JSON = XML.toJson(file, true);
+            System.out.println("JSON non-compact text with LONG string:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+            ex.printStackTrace();
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a basic transform of an XML stream to a JSON string with verbose emit.
+     */
+    public void testSimpleXMLDocument_AsStreamToStringCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+
+        try {
+            FileInputStream fis = new FileInputStream(file);
+            String JSON = XML.toJson(fis);
+            fis.close();
+            System.out.println("JSON compacted text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+
+
+    /**
+     * Test a basic transform of an XML stream to a JSON string with compact emit.
+     */
+    public void testSimpleXMLDocument_AsStreamToStringVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+
+        try {
+            FileInputStream fis = new FileInputStream(file);
+            String JSON = XML.toJson(fis, true);
+            fis.close();
+            System.out.println("JSON non-compact text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+
+    /**
+     * Test a complex transform of an XML stream to a JSON string with verbose emit.
+     */
+    public void testComplexXMLDocument_AsStreamToStringCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+
+        try {
+            FileInputStream fis = new FileInputStream(file);
+            String JSON = XML.toJson(fis);
+            fis.close();
+            System.out.println("JSON compacted text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML stream to a JSON string with verbose emit.
+     */
+    public void testComplexXMLDocument_AsStreamToStringVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+
+        try {
+            FileInputStream fis = new FileInputStream(file);
+            String JSON = XML.toJson(fis, true);
+            fis.close();
+            System.out.println("JSON non-compact text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a basic transform of an XML stream to a JSON stream with compact emit.
+     */
+    public void testSimpleXMLDocument_AsStreamToStreamCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+        File fileOut = new File("json_output/simple_json_compact.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis  = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a basic transform of an XML stream to a JSON stream with verbose emit.
+     */
+    public void testSimpleXMLDocument_AsStreamToStreamVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple.xml");
+        File fileOut = new File("json_output/simple_json_verbose.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis  = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos, true);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML stream to a JSON stream with compact emit.
+     */
+    public void testComplexXMLDocument_AsStreamToStreamCompact() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+        File fileOut = new File("json_output/complex_json_compact.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML stream to a JSON stream with verbose emit.
+     */
+    public void testComplexXMLDocument_AsStreamToStreamVerbose() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/complex.xml");
+        File fileOut = new File("json_output/complex_json_verbose.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos, true);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a malformed XML document failure.
+     */
+    public void testSimpleXMLDocument_AsFileToStringCompactFailure() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/simple_broken.xml");
+
+        try {
+            String JSON = XML.toJson(file, true);
+            System.out.println("JSON compacted text:\n");
+            System.out.println(JSON);
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex instanceof org.xml.sax.SAXException);
+    }
+
+    /**
+     * Test conversions of ATOM feeds to JSON.
+     */
+    public void testAtomFeedConversion1() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/atom-xml-entry1");
+        File oFile   = new File("json_output/atomentry-xml-json1.json");
+
+        try {
+            File parent = oFile.getParentFile();
+            if (parent != null && !parent.exists()) {
+                parent.mkdirs();
+            }
+            FileInputStream fis  = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(oFile);
+            XML.toJson(fis, fos, true);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+            ex.printStackTrace();
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test conversions of ATOM feeds to JSON.
+     */
+    public void testAtomFeedConversion2() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/atom-xml-feed1");
+        File oFile   = new File("json_output/atomfeed-xml-json2.json");
+
+        try {
+            File parent = oFile.getParentFile();
+            if (parent != null && !parent.exists()) {
+                parent.mkdirs();
+            }
+            FileInputStream fis  = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(oFile);
+            XML.toJson(fis, fos, true);
+            fis.close();
+            fos.flush();
+            fos.close();
+        } catch (Exception ex1) {
+            ex = ex1;
+            ex.printStackTrace();
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a simple low character UTF-8 string.
+     */
+    public void testLowCharacterUTF8String() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/utf8-lowerchar.xml");
+        File fileOut = new File("json_output/utf8-lowerchar.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos, false);
+            fis.close();
+            fos.flush();
+            fos.close();
+
+            fis = new FileInputStream("json_output/utf8-lowerchar.json");
+            JSONObject jObject = new JSONObject(fis);
+            fis.close();
+            String str = (String)jObject.get("hi");
+            String expected="\u00C5\u00C5\u00C5\u00C5";
+            //Compare this to the string with unicode \u00C5 in it.
+            assertTrue(expected.equals(str));
+
+        } catch (Exception ex1) {
+            ex1.printStackTrace();
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a simple array of UTF-8 strings.
+     */
+    public void testArrayUTF8String() {
+        Exception ex = null;
+        File file    = new File("xmlfiles/utf8-array.xml");
+        File fileOut = new File("json_output/utf8-array.json");
+
+        try {
+            File parent = fileOut.getParentFile();
+            parent.mkdirs();
+
+            FileInputStream fis = new FileInputStream(file);
+            FileOutputStream fos = new FileOutputStream(fileOut);
+            XML.toJson(fis, fos, false);
+            fis.close();
+            fos.flush();
+            fos.close();
+
+            fis = new FileInputStream("json_output/utf8-array.json");
+            JSONObject jObject = new JSONObject(fis);
+            fis.close();
+            String expected="\u592a\u548c\u6bbf";
+            JSONObject search = (JSONObject)jObject.get("search");
+            JSONObject payload = (JSONObject)search.get("payLoad");
+            JSONObject ssug = (JSONObject)payload.get("sSug");
+            JSONArray items = (JSONArray)ssug.get("item");
+
+            for (int i = 0; i <items.size(); i++) {
+                String str = (String)items.get(i);
+                assertTrue(expected.equals(str));
+            }
+        } catch (Exception ex1) {
+            ex1.printStackTrace();
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /************************************
+     * Performance tests.
+     /***********************************/
+
+    /**
+     * Test a complex transform of an XML file to a JSON string with compact emit.
+    public void testComplexXMLDocument_AsFileToStringCompactTiming() {
+        Exception ex   = null;
+        File file      = new File("xmlfiles/complex.xml");
+        long endTime   = 0;
+        long startTime = 0;
+
+        try {
+            startTime = System.currentTimeMillis();
+            for (int i = 0; i < 10000; i++) {
+                String JSON = XML.toJson(file);
+            }
+            endTime = System.currentTimeMillis();
+            System.out.println("Complex xml timing.  Total time for 10000 transforms: [" + (endTime - startTime) + "ms].  Time per execution: [" + ((endTime - startTime)/10000) + "ms]");
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+
+    /**
+     * Test a complex transform of an XML file to a JSON string with compact emit.
+    public void testSimpleXMLDocument_AsFileToStringCompactTiming() {
+        Exception ex   = null;
+        File file      = new File("xmlfiles/simple.xml");
+        long endTime   = 0;
+        long startTime = 0;
+
+
+        try {
+            startTime = System.currentTimeMillis();
+            for (int i = 0; i < 10000; i++) {
+                String JSON = XML.toJson(file);
+            }
+            endTime = System.currentTimeMillis();
+            System.out.println("Simple xml timing.  Total time for 10000 transforms: [" + (endTime - startTime) + "ms].  Time per execution: [" + ((endTime - startTime)/10000) + "ms]");
+        } catch (Exception ex1) {
+            ex = ex1;
+        }
+        assertTrue(ex == null);
+    }
+    */
+}

Added: incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-entry1
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-entry1?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-entry1 (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-entry1 Tue Oct 12 21:30:30 2010
@@ -0,0 +1,13 @@
+<entry xmlns="http://www.w3.org/2005/Atom" xmlns:ns2="http://a9.com/-/spec/opensearch/1.1/">
+  <content type="text">Test post body.</content>
+  <title type="text">Entry #1</title>
+  <summary type="text">A summary of atom entry #1</summary>
+  <published>2010-09-23T14:23:32.187-05:00</published>
+  <updated>2010-09-23T14:23:32.187-05:00</updated>
+  <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:189912220" type="application/atom+xml" rel="self" />
+  <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:189912220" rel="edit" />
+  <link href="http://abdera.watson.ibm.com:8080/atom/entry/urn:lsid:abdera.watson.ibm.com:entries:189912220" rel="alternate" />
+  <author>
+    <name>Joe Blow</name>
+  </author>
+</entry>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-feed1
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-feed1?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-feed1 (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/atom-xml-feed1 Tue Oct 12 21:30:30 2010
@@ -0,0 +1,44 @@
+<feed xmlns="http://www.w3.org/2005/Atom" xmlns:ns2="http://a9.com/-/spec/opensearch/1.1/">
+  <title type="text">Elias</title>
+  <updated>1969-12-31T18:02:03.456-06:00</updated>
+  <author>
+    <name>Unknown</name>
+  </author>
+  <id>urn:some:arbitrary:value</id>
+  <updated>1969-12-31T18:02:03.456-06:00</updated>
+  <title type="text">A sample feed!</title>
+  <ns2:itemsPerPage>5</ns2:itemsPerPage>
+  <link href="http://abdera.watson.ibm.com:8080/atom/Elias" type="application/atom+xml" rel="self" />
+  <link href="http://abdera.watson.ibm.com:8080/atom/Elias" rel="first" />
+  <link href="http://abdera.watson.ibm.com:8080/atom/Elias" rel="last" />
+
+
+  <entry xmlns="http://www.w3.org/2005/Atom" xmlns:ns2="http://a9.com/-/spec/opensearch/1.1/">
+    <content type="text/html">This is the content of the new collection</content>
+    <title type="text">Entry #1</title>
+    <summary type="text">A summary of atom entry #1</summary>
+    <published>2010-09-23T14:23:32.187-05:00</published>
+    <updated>2010-09-23T14:23:32.187-05:00</updated>
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:189912220" type="application/atom+xml" rel="self" />
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:189912220" rel="edit" />
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/urn:lsid:abdera.watson.ibm.com:entries:189912220" rel="alternate" />
+    <author>
+      <name>Joe Blow</name>
+    </author>
+  </entry>
+
+
+  <entry>
+    <content type="plain/text">dsfdfadsf</content>
+    <title type="text">foo bar</title>
+    <summary type="text">foo</summary>
+    <id>urn:lsid:abdera.watson.ibm.com:entries:326319018</id>
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/urn:lsid:abdera.watson.ibm.com:entries:326319018" rel="alternate" />
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:326319018" rel="edit" />
+    <link href="http://abdera.watson.ibm.com:8080/atom/entry/edit/urn:lsid:abdera.watson.ibm.com:entries:326319018" type="application/atom+xml" rel="self" />
+    <updated>2006-08-07T12:37:54.468Z</updated>
+    <author>
+      <name>boo</name>
+    </author>
+  </entry>
+</feed>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/complex.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/complex.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/complex.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/complex.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<process:Server xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:adminservice="http://www.ibm.com/websphere/appserver/schemas/5.0/adminservice.xmi" xmlns:applicationserver="http://www.ibm.com/websphere/appserver/schemas/5.0/applicationserver.xmi" xmlns:applicationserver.ejbcontainer="http://www.ibm.com/websphere/appserver/schemas/5.0/applicationserver.ejbcontainer.xmi" xmlns:applicationserver.ejbcontainer.messagelistener="http://www.ibm.com/websphere/appserver/schemas/5.0/applicationserver.ejbcontainer.messagelistener.xmi" xmlns:applicationserver.webcontainer="http://www.ibm.com/websphere/appserver/schemas/5.0/applicationserver.webcontainer.xmi" xmlns:channelservice="http://www.ibm.com/websphere/appserver/schemas/6.0/channelservice.xmi" xmlns:channelservice.channels="http://www.ibm.com/websphere/appserver/schemas/6.0/channelservice.channels.xmi" xmlns:coregroupbridgeservice="http://www.ibm.com/websphere/appserver/schemas/6.0/coregroupbridgeservice.xmi" xmlns:loggin
 gservice.http="http://www.ibm.com/websphere/appserver/schemas/6.0/loggingservice.http.xmi" xmlns:loggingservice.ras="http://www.ibm.com/websphere/appserver/schemas/5.0/loggingservice.ras.xmi" xmlns:namingserver="http://www.ibm.com/websphere/appserver/schemas/5.0/namingserver.xmi" xmlns:orb="http://www.ibm.com/websphere/appserver/schemas/5.0/orb.xmi" xmlns:pmiservice="http://www.ibm.com/websphere/appserver/schemas/5.0/pmiservice.xmi" xmlns:process="http://www.ibm.com/websphere/appserver/schemas/5.0/process.xmi" xmlns:processexec="http://www.ibm.com/websphere/appserver/schemas/5.0/processexec.xmi" xmlns:threadpoolmanager="http://www.ibm.com/websphere/appserver/schemas/6.0/threadpoolmanager.xmi" xmlns:tperfviewer="http://www.ibm.com/websphere/appserver/schemas/6.0/tperfviewer.xmi" xmlns:traceservice="http://www.ibm.com/websphere/appserver/schemas/5.0/traceservice.xmi" xmi:id="Server_1144082873421" name="server1">
+  <stateManagement xmi:id="StateManageable_1144082873437" initialState="START"/>
+  <statisticsProvider xmi:id="StatisticsProvider_1144082873437" specification="com.ibm.orb=enabled"/>
+  <services xmi:type="pmiservice:PMIService" xmi:id="PMIService_1144082873437" enable="true" initialSpecLevel="" statisticSet="basic" synchronizedUpdate="false"/>
+  <services xmi:type="adminservice:AdminService" xmi:id="AdminService_1144082873437" enable="true" standalone="true" preferredConnector="SOAPConnector_1144082873437">
+    <connectors xmi:type="adminservice:SOAPConnector" xmi:id="SOAPConnector_1144082873437">
+      <properties xmi:id="Property_1144082873437" name="sslConfig" value="shadowfaxNode04/DefaultSSLSettings"/>
+      <properties xmi:id="Property_1144082873438" name="requestTimeout" value="600"/>
+    </connectors>
+    <connectors xmi:type="adminservice:RMIConnector" xmi:id="RMIConnector_1144082873437"/>
+    <configRepository xmi:id="RepositoryService_1144082873437"/>
+    <pluginConfigService xmi:id="PluginConfigService_1144082873437" enable="true"/>
+  </services>
+  <services xmi:type="traceservice:TraceService" xmi:id="TraceService_1144082873437" enable="true" startupTraceSpecification="*=info" traceOutputType="SPECIFIED_FILE" traceFormat="BASIC" memoryBufferSize="8">
+    <traceLog xmi:id="TraceLog_1144082873437" fileName="${SERVER_LOG_ROOT}/trace.log" rolloverSize="20" maxNumberOfBackupFiles="1"/>
+  </services>
+  <services xmi:type="loggingservice.ras:RASLoggingService" xmi:id="RASLoggingService_1144082873437" enable="true" messageFilterLevel="NONE" enableCorrelationId="true">
+    <serviceLog xmi:id="ServiceLog_1144082873437" name="${LOG_ROOT}/activity.log" size="2" enabled="true"/>
+  </services>
+  <services xmi:type="coregroupbridgeservice:CoreGroupBridgeService" xmi:id="CoreGroupBridgeService_1144082873437" enable="true"/>
+  <services xmi:type="tperfviewer:TPVService" xmi:id="TPVService_1144082873437" enable="true"/>
+  <services xmi:type="orb:ObjectRequestBroker" xmi:id="ObjectRequestBroker_1144082873437" enable="true" requestTimeout="180" requestRetriesCount="1" requestRetriesDelay="0" connectionCacheMaximum="240" connectionCacheMinimum="100" commTraceEnabled="false" locateRequestTimeout="180" forceTunnel="never" noLocalCopies="false">
+    <properties xmi:id="Property_1144082873439" name="com.ibm.CORBA.enableLocateRequest" value="true"/>
+    <properties xmi:id="Property_1144082873440" name="com.ibm.CORBA.WSSSLServerSocketFactoryName" value="com.ibm.ws.security.orbssl.WSSSLServerSocketFactoryImpl"/>
+    <properties xmi:id="Property_1144082873441" name="com.ibm.CORBA.WSSSLClientSocketFactoryName" value="com.ibm.ws.security.orbssl.WSSSLClientSocketFactoryImpl"/>
+    <properties xmi:id="Property_1144082873442" name="com.ibm.CORBA.ConnectionInterceptorName" value="com.ibm.ISecurityLocalObjectBaseL13Impl.SecurityConnectionInterceptor"/>
+    <properties xmi:id="Property_1144082873443" name="com.ibm.CORBA.RasManager" value="com.ibm.websphere.ras.WsOrbRasManager"/>
+    <properties xmi:id="Property_1144082873444" name="com.ibm.ws.orb.transport.useMultiHome" value="true"/>
+    <interceptors xmi:id="Interceptor_1144082873437" name="com.ibm.ejs.ras.RasContextSupport"/>
+    <interceptors xmi:id="Interceptor_1144082873438" name="com.ibm.ws.runtime.workloadcontroller.OrbWorkloadRequestInterceptor"/>
+    <interceptors xmi:id="Interceptor_1144082873439" name="com.ibm.ws.Transaction.JTS.TxInterceptorInitializer"/>
+    <interceptors xmi:id="Interceptor_1144082873440" name="com.ibm.ISecurityLocalObjectBaseL13Impl.SecurityComponentFactory"/>
+    <interceptors xmi:id="Interceptor_1144082873441" name="com.ibm.ISecurityLocalObjectBaseL13Impl.ServerRIWrapper"/>
+    <interceptors xmi:id="Interceptor_1144082873442" name="com.ibm.ISecurityLocalObjectBaseL13Impl.ClientRIWrapper"/>
+    <interceptors xmi:id="Interceptor_1144082873443" name="com.ibm.ISecurityLocalObjectBaseL13Impl.CSIClientRI"/>
+    <interceptors xmi:id="Interceptor_1144082873444" name="com.ibm.ISecurityLocalObjectBaseL13Impl.CSIServerRI"/>
+    <interceptors xmi:id="Interceptor_1144082873445" name="com.ibm.ws.wlm.client.WLMClientInitializer"/>
+    <interceptors xmi:id="Interceptor_1144082873446" name="com.ibm.ws.wlm.server.WLMServerInitializer"/>
+    <interceptors xmi:id="Interceptor_1144082873447" name="com.ibm.ws.activity.ActivityServiceServerInterceptor"/>
+    <interceptors xmi:id="Interceptor_1144082873448" name="com.ibm.debug.DebugPortableInterceptor"/>
+    <interceptors xmi:id="Interceptor_1144082873449" name="com.ibm.debug.olt.ivbtrjrt.OLT_RI"/>
+    <plugins xmi:id="ORBPlugin_1144082873437" name="com.ibm.ws.orbimpl.transport.WSTransport"/>
+    <plugins xmi:id="ORBPlugin_1144082873438" name="com.ibm.ISecurityUtilityImpl.SecurityPropertyManager"/>
+    <plugins xmi:id="ORBPlugin_1144082873439" name="com.ibm.ws.orbimpl.WSORBPropertyManager"/>
+    <plugins xmi:id="ORBPlugin_1144082873440" name="com.ibm.ws.wlm.client.WLMClient"/>
+    <plugins xmi:id="ORBPlugin_1144082873441" name="com.ibm.ws.pmi.server.modules.OrbPerfModule"/>
+    <plugins xmi:id="ORBPlugin_1144082873442" name="com.ibm.ws.csi.CORBAORBMethodAccessControl"/>
+    <threadPool xmi:id="ThreadPool_1144082873437" minimumSize="10" maximumSize="50" inactivityTimeout="3500" isGrowable="false" name="ORB.thread.pool"/>
+  </services>
+  <services xmi:type="channelservice:TransportChannelService" xmi:id="TransportChannelService_1144082873437" enable="true">
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873437" name="TCP_1" endPointName="WC_adminhost" maxOpenConnections="100" inactivityTimeout="60" threadPool="ThreadPool_1144082873438"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873438" name="TCP_2" endPointName="WC_defaulthost" maxOpenConnections="20000" inactivityTimeout="60" threadPool="ThreadPool_1144082873438"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873439" name="TCP_3" endPointName="WC_adminhost_secure" maxOpenConnections="100" inactivityTimeout="60" threadPool="ThreadPool_1144082873438"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873440" name="TCP_4" endPointName="WC_defaulthost_secure" maxOpenConnections="20000" inactivityTimeout="60" threadPool="ThreadPool_1144082873438"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873441" name="TCP_5" endPointName="DCS_UNICAST_ADDRESS" maxOpenConnections="20000" inactivityTimeout="60" threadPool="ThreadPool_1144082873439"/>
+    <transportChannels xmi:type="channelservice.channels:SSLInboundChannel" xmi:id="SSLInboundChannel_1144082873437" name="SSL_1" discriminationWeight="1" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:SSLInboundChannel" xmi:id="SSLInboundChannel_1144082873438" name="SSL_2" discriminationWeight="1" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:SSLInboundChannel" xmi:id="SSLInboundChannel_1144082873439" name="SSL_3" discriminationWeight="2" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPInboundChannel" xmi:id="HTTPInboundChannel_1144082873437" name="HTTP_1" discriminationWeight="10" maximumPersistentRequests="100" keepAlive="true" readTimeout="60" writeTimeout="60" persistentTimeout="30" enableLogging="false"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPInboundChannel" xmi:id="HTTPInboundChannel_1144082873438" name="HTTP_2" discriminationWeight="10" maximumPersistentRequests="100" keepAlive="true" readTimeout="60" writeTimeout="60" persistentTimeout="30" enableLogging="false"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPInboundChannel" xmi:id="HTTPInboundChannel_1144082873439" name="HTTP_3" discriminationWeight="10" maximumPersistentRequests="100" keepAlive="true" readTimeout="60" writeTimeout="60" persistentTimeout="30" enableLogging="false"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPInboundChannel" xmi:id="HTTPInboundChannel_1144082873440" name="HTTP_4" discriminationWeight="10" maximumPersistentRequests="100" keepAlive="true" readTimeout="60" writeTimeout="60" persistentTimeout="30" enableLogging="false"/>
+    <transportChannels xmi:type="channelservice.channels:WebContainerInboundChannel" xmi:id="WebContainerInboundChannel_1144082873437" name="WCC_1" discriminationWeight="1" writeBufferSize="32768"/>
+    <transportChannels xmi:type="channelservice.channels:WebContainerInboundChannel" xmi:id="WebContainerInboundChannel_1144082873438" name="WCC_2" discriminationWeight="1" writeBufferSize="32768"/>
+    <transportChannels xmi:type="channelservice.channels:WebContainerInboundChannel" xmi:id="WebContainerInboundChannel_1144082873439" name="WCC_3" discriminationWeight="1" writeBufferSize="32768"/>
+    <transportChannels xmi:type="channelservice.channels:WebContainerInboundChannel" xmi:id="WebContainerInboundChannel_1144082873440" name="WCC_4" discriminationWeight="1" writeBufferSize="32768"/>
+    <transportChannels xmi:type="channelservice.channels:DCSInboundChannel" xmi:id="DCSInboundChannel_1144082873437" name="DCS_1" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:DCSInboundChannel" xmi:id="DCSInboundChannel_1144082873438" name="DCS_2" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873442" name="SIB_TCP_JFAP" endPointName="SIB_ENDPOINT_ADDRESS"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873443" name="SIB_TCP_JFAP_SSL" endPointName="SIB_ENDPOINT_SECURE_ADDRESS"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873444" name="SIB_TCP_MQFAP" endPointName="SIB_MQ_ENDPOINT_ADDRESS"/>
+    <transportChannels xmi:type="channelservice.channels:TCPInboundChannel" xmi:id="TCPInboundChannel_1144082873445" name="SIB_TCP_MQFAP_SSL" endPointName="SIB_MQ_ENDPOINT_SECURE_ADDRESS"/>
+    <transportChannels xmi:type="channelservice.channels:SSLInboundChannel" xmi:id="SSLInboundChannel_1144082873440" name="SIB_SSL_JFAP" discriminationWeight="1" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:SSLInboundChannel" xmi:id="SSLInboundChannel_1144082873441" name="SIB_SSL_MQFAP" discriminationWeight="1" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPInboundChannel" xmi:id="JFAPInboundChannel_1144082873437" name="SIB_JFAP" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPInboundChannel" xmi:id="JFAPInboundChannel_1144082873438" name="SIB_JFAP_SSL" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:MQFAPInboundChannel" xmi:id="MQFAPInboundChannel_1144082873437" name="SIB_MQFAP" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:MQFAPInboundChannel" xmi:id="MQFAPInboundChannel_1144082873438" name="SIB_MQFAP_SSL" discriminationWeight="1"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873437" name="SIB_TCP_JFAP_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873438" name="SIB_TCP_JFAP_SSL_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873439" name="SIB_TCP_JFAP_TUN_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873440" name="SIB_TCP_JFAP_TUN_SSL_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873441" name="SIB_TCP_MQFAP_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:TCPOutboundChannel" xmi:id="TCPOutboundChannel_1144082873442" name="SIB_TCP_MQFAP_SSL_OUT" threadPool="ThreadPool_1144082873440"/>
+    <transportChannels xmi:type="channelservice.channels:SSLOutboundChannel" xmi:id="SSLOutboundChannel_1144082873437" name="SIB_SSL_MQFAP_SSL_OUT" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:SSLOutboundChannel" xmi:id="SSLOutboundChannel_1144082873438" name="SIB_SSL_JFAP_SSL_OUT" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:SSLOutboundChannel" xmi:id="SSLOutboundChannel_1144082873439" name="SIB_SSL_JFAP_TUN_SSL_OUT" sslConfigAlias="shadowfaxNode04/DefaultSSLSettings"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPOutboundChannel" xmi:id="HTTPOutboundChannel_1144082873437" name="SIB_HTTP_JFAP_TUN_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPOutboundChannel" xmi:id="HTTPOutboundChannel_1144082873438" name="SIB_HTTP_JFAP_TUN_SSL_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPTunnelOutboundChannel" xmi:id="HTTPTunnelOutboundChannel_1144082873437" name="SIB_HTC_JFAP_TUN_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:HTTPTunnelOutboundChannel" xmi:id="HTTPTunnelOutboundChannel_1144082873438" name="SIB_HTC_JFAP_TUN_SSL_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPOutboundChannel" xmi:id="JFAPOutboundChannel_1144082873437" name="SIB_JFAP_JFAP_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPOutboundChannel" xmi:id="JFAPOutboundChannel_1144082873438" name="SIB_JFAP_JFAP_SSL_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPOutboundChannel" xmi:id="JFAPOutboundChannel_1144082873439" name="SIB_JFAP_JFAP_TUN_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:JFAPOutboundChannel" xmi:id="JFAPOutboundChannel_1144082873440" name="SIB_JFAP_JFAP_TUN_SSL_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:MQFAPOutboundChannel" xmi:id="MQFAPOutboundChannel_1144082873437" name="SIB_MQFAP_MQFAP_SSL_OUT"/>
+    <transportChannels xmi:type="channelservice.channels:MQFAPOutboundChannel" xmi:id="MQFAPOutboundChannel_1144082873438" name="SIB_MQFAP_MQFAP_OUT"/>
+    <chains xmi:id="Chain_1144082873437" name="WCInboundAdmin" enable="true" transportChannels="TCPInboundChannel_1144082873437 HTTPInboundChannel_1144082873437 WebContainerInboundChannel_1144082873437"/>
+    <chains xmi:id="Chain_1144082873438" name="WCInboundDefault" enable="true" transportChannels="TCPInboundChannel_1144082873438 HTTPInboundChannel_1144082873438 WebContainerInboundChannel_1144082873438"/>
+    <chains xmi:id="Chain_1144082873439" name="WCInboundAdminSecure" enable="true" transportChannels="TCPInboundChannel_1144082873439 SSLInboundChannel_1144082873437 HTTPInboundChannel_1144082873439 WebContainerInboundChannel_1144082873439"/>
+    <chains xmi:id="Chain_1144082873440" name="WCInboundDefaultSecure" enable="true" transportChannels="TCPInboundChannel_1144082873440 SSLInboundChannel_1144082873438 HTTPInboundChannel_1144082873440 WebContainerInboundChannel_1144082873440"/>
+    <chains xmi:id="Chain_1144082873441" name="DCS" enable="true" transportChannels="TCPInboundChannel_1144082873441 DCSInboundChannel_1144082873437"/>
+    <chains xmi:id="Chain_1144082873442" name="DCS-Secure" enable="true" transportChannels="TCPInboundChannel_1144082873441 SSLInboundChannel_1144082873439 DCSInboundChannel_1144082873438"/>
+    <chains xmi:id="Chain_1144082873443" name="InboundBasicMessaging" enable="true" transportChannels="TCPInboundChannel_1144082873442 JFAPInboundChannel_1144082873437"/>
+    <chains xmi:id="Chain_1144082873444" name="InboundSecureMessaging" enable="true" transportChannels="TCPInboundChannel_1144082873443 SSLInboundChannel_1144082873440 JFAPInboundChannel_1144082873438"/>
+    <chains xmi:id="Chain_1144082873445" name="InboundBasicMQLink" enable="true" transportChannels="TCPInboundChannel_1144082873444 MQFAPInboundChannel_1144082873437"/>
+    <chains xmi:id="Chain_1144082873446" name="InboundSecureMQLink" enable="true" transportChannels="TCPInboundChannel_1144082873445 SSLInboundChannel_1144082873441 MQFAPInboundChannel_1144082873438"/>
+    <chains xmi:id="Chain_1144082873447" name="BootstrapBasicMessaging" transportChannels="JFAPOutboundChannel_1144082873437 TCPOutboundChannel_1144082873437"/>
+    <chains xmi:id="Chain_1144082873448" name="BootstrapSecureMessaging" transportChannels="JFAPOutboundChannel_1144082873438 SSLOutboundChannel_1144082873438 TCPOutboundChannel_1144082873438"/>
+    <chains xmi:id="Chain_1144082873449" name="BootstrapTunneledMessaging" transportChannels="JFAPOutboundChannel_1144082873439 HTTPTunnelOutboundChannel_1144082873437 HTTPOutboundChannel_1144082873437 TCPOutboundChannel_1144082873439"/>
+    <chains xmi:id="Chain_1144082873450" name="BootstrapTunneledSecureMessaging" transportChannels="JFAPOutboundChannel_1144082873440 HTTPTunnelOutboundChannel_1144082873438 HTTPOutboundChannel_1144082873438 SSLOutboundChannel_1144082873439 TCPOutboundChannel_1144082873440"/>
+    <chains xmi:id="Chain_1144082873451" name="OutboundBasicMQLink" transportChannels="MQFAPOutboundChannel_1144082873438 TCPOutboundChannel_1144082873441"/>
+    <chains xmi:id="Chain_1144082873452" name="OutboundSecureMQLink" transportChannels="MQFAPOutboundChannel_1144082873437 SSLOutboundChannel_1144082873437 TCPOutboundChannel_1144082873442"/>
+  </services>
+  <services xmi:type="threadpoolmanager:ThreadPoolManager" xmi:id="ThreadPoolManager_1144082873437" enable="true">
+    <threadPools xmi:id="ThreadPool_1144082873441" minimumSize="0" maximumSize="10" inactivityTimeout="30000" isGrowable="false" name="server.startup" description="This pool is used by WebSphere during server startup."/>
+    <threadPools xmi:id="ThreadPool_1144082873439" minimumSize="5" maximumSize="20" name="Default"/>
+    <threadPools xmi:id="ThreadPool_1144082873438" minimumSize="10" maximumSize="50" inactivityTimeout="3500" isGrowable="false" name="WebContainer"/>
+    <threadPools xmi:id="ThreadPool_1144082873440" minimumSize="4" maximumSize="50" name="SIBFAPThreadPool" description="Service integration bus FAP outbound channel thread pool"/>
+  </services>
+  <services xmi:type="loggingservice.http:HTTPAccessLoggingService" xmi:id="HTTPAccessLoggingService_1144082873437" enable="false" enableErrorLogging="true" enableAccessLogging="true">
+    <errorLog xmi:id="LogFile_1144082873437" filePath="${SERVER_LOG_ROOT}/http_error.log" maximumSize="500"/>
+    <accessLog xmi:id="LogFile_1144082873438" filePath="${SERVER_LOG_ROOT}/http_access.log" maximumSize="500"/>
+  </services>
+  <errorStreamRedirect xmi:id="StreamRedirect_1144082873437" fileName="${SERVER_LOG_ROOT}/SystemErr.log" rolloverType="SIZE" maxNumberOfBackupFiles="1" rolloverSize="1" baseHour="24" rolloverPeriod="24" formatWrites="true" messageFormatKind="BASIC" suppressWrites="false" suppressStackTrace="false"/>
+  <outputStreamRedirect xmi:id="StreamRedirect_1144082873438" fileName="${SERVER_LOG_ROOT}/SystemOut.log" rolloverType="SIZE" maxNumberOfBackupFiles="1" rolloverSize="1" baseHour="24" rolloverPeriod="24" formatWrites="true" messageFormatKind="BASIC" suppressWrites="false" suppressStackTrace="false"/>
+  <components xmi:type="namingserver:NameServer" xmi:id="NameServer_1144082873437">
+    <stateManagement xmi:id="StateManageable_1144082873438" initialState="START"/>
+  </components>
+  <components xmi:type="applicationserver:ApplicationServer" xmi:id="ApplicationServer_1144082873453" applicationClassLoaderPolicy="MULTIPLE">
+    <stateManagement xmi:id="StateManageable_1144082873453" initialState="START"/>
+    <services xmi:type="applicationserver:TransactionService" xmi:id="TransactionService_1144082873453" enable="true" totalTranLifetimeTimeout="120" clientInactivityTimeout="60"/>
+    <services xmi:type="applicationserver:DynamicCache" xmi:id="DynamicCache_1144082873453" enable="true">
+      <cacheGroups xmi:id="ExternalCacheGroup_1144082873453" name="EsiInvalidator">
+        <members xmi:id="ExternalCacheGroupMember_1144082873453" address="localhost" adapterBeanName="com.ibm.websphere.servlet.cache.ESIInvalidatorServlet"/>
+      </cacheGroups>
+    </services>
+    <components xmi:type="applicationserver.webcontainer:WebContainer" xmi:id="WebContainer_1144082873453" enableServletCaching="false">
+      <stateManagement xmi:id="StateManageable_1144082873454" initialState="START"/>
+      <services xmi:type="applicationserver.webcontainer:SessionManager" xmi:id="SessionManager_1144082873453" enable="true" enableUrlRewriting="false" enableCookies="true" enableSSLTracking="false" enableProtocolSwitchRewriting="false" sessionPersistenceMode="NONE" enableSecurityIntegration="false" allowSerializedSessionAccess="false" maxWaitTime="5" accessSessionOnTimeout="true">
+        <defaultCookieSettings xmi:id="Cookie_1144082873453" domain="" maximumAge="-1" secure="false"/>
+        <sessionDatabasePersistence xmi:id="SessionDatabasePersistence_1144082873453" datasourceJNDIName="jdbc/Sessions" userId="db2admin" password="{xor}Oz1tPjsyNjE=" db2RowSize="ROW_SIZE_4KB" tableSpaceName=""/>
+        <tuningParams xmi:id="TuningParams_1144082873453" usingMultiRowSchema="false" maxInMemorySessionCount="1000" allowOverflow="true" scheduleInvalidation="false" writeFrequency="TIME_BASED_WRITE" writeInterval="10" writeContents="ONLY_UPDATED_ATTRIBUTES" invalidationTimeout="30">
+          <invalidationSchedule xmi:id="InvalidationSchedule_1144082873453" firstHour="14" secondHour="2"/>
+        </tuningParams>
+      </services>
+    </components>
+    <components xmi:type="applicationserver.ejbcontainer:EJBContainer" xmi:id="EJBContainer_1144082873453" passivationDirectory="${USER_INSTALL_ROOT}/temp" inactivePoolCleanupInterval="30000">
+      <stateManagement xmi:id="StateManageable_1144082873455" initialState="START"/>
+      <services xmi:type="applicationserver.ejbcontainer.messagelistener:MessageListenerService" xmi:id="MessageListenerService_1144082873453">
+        <threadPool xmi:id="ThreadPool_1144082873453" minimumSize="10" maximumSize="50" inactivityTimeout="3500" isGrowable="false" name="Message.Listener.Pool"/>
+      </services>
+      <cacheSettings xmi:id="EJBCache_1144082873453" cleanupInterval="3000" cacheSize="2053"/>
+      <timerSettings xmi:id="EJBTimer_1144082873453" datasourceJNDIName="jdbc/DefaultEJBTimerDataSource" tablePrefix="EJBTIMER_" pollInterval="300" numAlarmThreads="1"/>
+    </components>
+    <webserverPluginSettings xmi:id="WebserverPluginSettings_1144082873453" WaitForContinue="false" ConnectTimeout="0" MaxConnections="-1" ExtendedHandshake="false"/>
+  </components>
+  <processDefinitions xmi:type="processexec:JavaProcessDef" xmi:id="JavaProcessDef_1144082873453" workingDirectory="${USER_INSTALL_ROOT}" executableTargetKind="JAVA_CLASS" executableTarget="com.ibm.ws.runtime.WsServer">
+    <execution xmi:id="ProcessExecution_1144082873453" processPriority="20" runAsUser="" runAsGroup=""/>
+    <ioRedirect xmi:id="OutputRedirect_1144082873453" stdoutFilename="${SERVER_LOG_ROOT}/native_stdout.log" stderrFilename="${SERVER_LOG_ROOT}/native_stderr.log"/>
+    <monitoringPolicy xmi:id="MonitoringPolicy_1144082873453" maximumStartupAttempts="3" pingInterval="60" pingTimeout="300" autoRestart="true" nodeRestartState="STOPPED"/>
+    <jvmEntries xmi:id="JavaVirtualMachine_1144082873453" verboseModeClass="false" verboseModeGarbageCollection="false" verboseModeJNI="false" runHProf="false" hprofArguments="" debugMode="false" debugArgs="-Djava.compiler=NONE -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777" genericJvmArguments=""/>
+  </processDefinitions>
+  <banana foo="This &quot;sucks&quot;"/>
+  
+  <banana foo="&quot;sucks&quot; this does."/>
+  
+  <banana foo="&quot;sucks&quot;"/>
+  
+  <banana foo="   &quot;sucks&quot;  "/>  
+  <banana>BananaMan!</banana>
+  <banana foo="Bad guy">BananaMan!</banana>
+  <banana/>
+</process:Server>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/long-text.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/long-text.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/long-text.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/long-text.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<fcbst:eColl xmlns:fcbst="http://fcbst.ibm.com">
+  <entity crtDt="2008-01-24" id="1001" lng="en_US" lvl="3" title="Hall of Supreme Harmony" type="Bld">
+    <msgHeader>
+      <retCd>0</retCd>
+    </msgHeader>
+    <sDesc>The Hall of Supreme Harmony is the largest building in the Forbidden City. Located along the central axis, it lies in the center of the Outer Court, and was where the emperor hosted his most important and most lavish ceremonies.</sDesc>
+    <lDesc>The Hall of Supreme Harmony is the largest and most lavish building in the Forbidden City, as well as the largest wooden structure in all of Chinese history.  It was commonly known as the &quot;Golden Imperial Hall&quot; due to the lavish golden decorations both inside and outside the hall.
+
+Along with the Hall of Complete Harmony and the Hall of Preserving Harmony, it lies in the center of the Outer Court.  Together, these three halls are known as the Three Great Audience Halls.
+
+The Hall of Supreme Harmony was the center of court activities, and was where the emperor celebrated the most important ceremonies, such as enthronements, imperial birthdays, royal weddings, the crowning of the empress, and the New Year&apos;s festival.
+
+Later in the Qing dynasty, the emperor held court more frequently, and so moved court hearings to the Inner Court, while the Hall of Supreme Harmony continued to serve as a ceremonial hall.
+
+Before the Hall of Supreme Harmony lies the Pavilion of Spreading Righteousness, the largest courtyard of the Imperial City.  In contrast to the lavishness of the hall, the courtyard is simple, flat-tiled and low-ridged, creating an even more majestic atmosphere for the hall by contrast, as with the Taoist saying, &quot;Heaven is high and the earth is broad&quot; </lDesc>
+    <tnail>
+      <presTxt></presTxt>
+      <presAudio></presAudio>
+      <mediaPath>HOSH1_tn.jpg</mediaPath>
+      <mediaTp>2D</mediaTp>
+    </tnail>
+    <mediaGrp>
+      <media crtDt="2008-01-21 2008-01-21" id="11001 11001" lng="en_US zh_CN" lvl="3 3" title="Gate of Supreme Harmony  Text" type="Med Med">
+        <tnail crtDt="2008-01-21 2008-01-21" id="0 0" lng="en_US zh_CN" lvl="3 3" title="Default Test - tn  Text" type="Med Med">
+          <presTxt>Text</presTxt>
+          <presAudio></presAudio>
+          <mediaPath>TEST_tn.jpg</mediaPath>
+          <mediaTp>2D</mediaTp>
+        </tnail>
+        <presTxt>Text</presTxt>
+        <presAudio></presAudio>
+        <mediaPath>GOSH1.jpg</mediaPath>
+        <mediaTp>2D</mediaTp>
+      </media>
+    </mediaGrp>
+    <coor x="-1.40252" y="-68.8839" z="6.89267"/>
+    <inSBInd>false</inSBInd>
+    <hasRatedInd>false</hasRatedInd>
+    <tags>
+      <tag>Text</tag>
+      <tag>Text</tag>
+      <tag>Hall of Supreme Harmony</tag>
+    </tags>
+  </entity>
+</fcbst:eColl> 

Added: incubator/wink/trunk/wink-json4j/src/test/resources/simple.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/simple.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/simple.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/simple.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,28 @@
+<!--
+    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.
+-->
+<getValuesReturn return="true">
+   <attribute attrValue="value"/>
+   <String>First item</String>
+   <String>Second item</String>
+   <String>Third item</String>
+   <TextTag>Text!</TextTag>
+   <EmptyTag/>
+   <TagWithAttrs attr1="value1" attr2="value2" attr3="value3"/>
+   <TagWithAttrsAndText attr1="value1" attr2="value2" attr3="value3">Text!</TagWithAttrsAndText>
+</getValuesReturn>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/simple_broken.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/simple_broken.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/simple_broken.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/simple_broken.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,30 @@
+<!--
+    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.
+-->
+<getValuesReturn return="true">
+   <attribute attrValue="value"/>
+   <String>First item</String>
+   <String>Second item</String>
+   <String>Third item</String>
+   <TextTag>Text!</TextTag>
+   <EmptyTag/>
+   <TagWithAttrs attr1="value1" attr2="value2" attr3="value3"/>
+   
+   <!-- Incomplete closure, missing </TagWithAttrsAndText> -->
+   <TagWithAttrsAndText attr1="value1" attr2="value2" attr3="value3">Text!
+</getValuesReturn>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8-array.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8-array.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8-array.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8-array.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<fc:search xmlns:fc="http://fcbst.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://fcbst.ibm.com fcbst.xsd"><payLoad><sSug><item>太和殿</item><item>太和殿</item></sSug></payLoad></fc:search>

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8-lowerchar.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8-lowerchar.xml?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8-lowerchar.xml (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8-lowerchar.xml Tue Oct 12 21:30:30 2010
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    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.
+-->
+<hi>ÅÅÅÅ</hi>
\ No newline at end of file

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic.json
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic.json?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic.json (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic.json Tue Oct 12 21:30:30 2010
@@ -0,0 +1,15 @@
+{
+        "string": "This is a string",
+        "booleanTrue": true,
+        "booleanFalse": false,
+        "null": null,
+        "number": 1,
+        "negativeNumber": -1,
+        "float": 1.123,
+        "negativeFloat": -1.123,
+        "exponential": 1123e-3,
+        "negativeExponential": -1123e-3,
+        "object": {"message": "New Object"},
+        "array": [1, 2, null, true, "string", {"message": "Object"}, [1,2,3]]
+}
+

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic_array.json
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic_array.json?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic_array.json (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8_basic_array.json Tue Oct 12 21:30:30 2010
@@ -0,0 +1,10 @@
+[
+        1, 
+        2, 
+        null, 
+        true, 
+        "string", 
+        {"message": "Object"}, 
+        [1,2,3]
+]
+

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8_helloworld_ko.json
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8_helloworld_ko.json?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8_helloworld_ko.json (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8_helloworld_ko.json Tue Oct 12 21:30:30 2010
@@ -0,0 +1 @@
+{"greet": "안녕 세상아"}
\ No newline at end of file

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8_lowerchar.json
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8_lowerchar.json?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8_lowerchar.json (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8_lowerchar.json Tue Oct 12 21:30:30 2010
@@ -0,0 +1 @@
+{"message":"ÅÅÅÅ"}
\ No newline at end of file

Added: incubator/wink/trunk/wink-json4j/src/test/resources/utf8_ordered.json
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-json4j/src/test/resources/utf8_ordered.json?rev=1021933&view=auto
==============================================================================
--- incubator/wink/trunk/wink-json4j/src/test/resources/utf8_ordered.json (added)
+++ incubator/wink/trunk/wink-json4j/src/test/resources/utf8_ordered.json Tue Oct 12 21:30:30 2010
@@ -0,0 +1,13 @@
+{
+    "First_Entry" : "Entry One",
+    "Second_Entry": {
+        "name": "Demo Object",
+        "demos": [
+            "Demo 1",
+            "Demo 2",
+            "Demo 3",
+            "Demo 4"
+         ]
+    },
+    "Third_Entry" : 3
+}