You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/06/05 20:21:18 UTC

svn commit: r544583 - in /incubator/tuscany/java/sca/modules: ./ databinding-json/ databinding-json/src/main/java/org/apache/tuscany/databinding/ databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/ databinding-json/src/main/java/org...

Author: rfeng
Date: Tue Jun  5 11:21:16 2007
New Revision: 544583

URL: http://svn.apache.org/viewvc?view=rev&rev=544583
Log:
Add databinding-json

Added:
    incubator/tuscany/java/sca/modules/databinding-json/
      - copied from r544539, incubator/tuscany/sandbox/rfeng/databinding-json/
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java
      - copied, changed from r544562, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java
      - copied, changed from r544562, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java
      - copied unchanged from r544562, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/module/
      - copied from r544540, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/module/
    incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/
      - copied from r544540, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/resources/META-INF/services/
Removed:
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/databinding/
Modified:
    incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java
    incubator/tuscany/java/sca/modules/pom.xml

Added: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java?view=auto&rev=544583
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java Tue Jun  5 11:21:16 2007
@@ -0,0 +1,56 @@
+/*
+ * 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.tuscany.sca.databinding.json;
+
+import org.apache.tuscany.sca.databinding.PullTransformer;
+import org.apache.tuscany.sca.databinding.TransformationContext;
+import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
+import org.codehaus.jettison.json.JSONObject;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JSON2String extends BaseTransformer<JSONObject, String> implements
+    PullTransformer<JSONObject, String> {
+    
+    @Override
+    protected Class getSourceType() {
+        return JSONObject.class;
+    }
+
+    @Override
+    protected Class getTargetType() {
+        return String.class;
+    }
+
+    public String transform(JSONObject source, TransformationContext context) {
+        try {
+            return source.toString();
+        } catch (Exception e) {
+            throw new TransformationException(e);
+        } 
+    }
+
+    public int getWeight() {
+        return 500;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java (from r544562, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java?view=diff&rev=544583&p1=incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java&r1=544562&p2=incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java&r2=544583
==============================================================================
--- incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java Tue Jun  5 11:21:16 2007
@@ -24,16 +24,13 @@
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
-import org.apache.tuscany.sca.databinding.Transformer;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
 import org.codehaus.jettison.badgerfish.BadgerFishXMLStreamReader;
 import org.codehaus.jettison.json.JSONObject;
-import org.osoa.sca.annotations.Service;
 
 /**
  * @version $Rev$ $Date$
  */
-@Service(Transformer.class)
 public class JSON2XMLStreamReader extends BaseTransformer<JSONObject, XMLStreamReader> implements
     PullTransformer<JSONObject, XMLStreamReader> {
     

Added: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java?view=auto&rev=544583
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java Tue Jun  5 11:21:16 2007
@@ -0,0 +1,56 @@
+/*
+ * 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.tuscany.sca.databinding.json;
+
+import org.apache.tuscany.sca.databinding.PullTransformer;
+import org.apache.tuscany.sca.databinding.TransformationContext;
+import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
+import org.codehaus.jettison.json.JSONObject;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class String2JSON extends BaseTransformer<String, JSONObject> implements
+    PullTransformer<String, JSONObject> {
+    
+    @Override
+    protected Class getSourceType() {
+        return String.class;
+    }
+
+    @Override
+    protected Class getTargetType() {
+        return JSONObject.class;
+    }
+
+    public JSONObject transform(String source, TransformationContext context) {
+        try {
+            return new JSONObject(source);
+        } catch (Exception e) {
+            throw new TransformationException(e);
+        } 
+    }
+
+    public int getWeight() {
+        return 500;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java (from r544562, incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java?view=diff&rev=544583&p1=incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java&r1=544562&p2=incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java&r2=544583
==============================================================================
--- incubator/tuscany/sandbox/rfeng/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java Tue Jun  5 11:21:16 2007
@@ -27,16 +27,13 @@
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
-import org.apache.tuscany.sca.databinding.Transformer;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
 import org.codehaus.jettison.badgerfish.BadgerFishXMLStreamWriter;
 import org.codehaus.jettison.json.JSONObject;
-import org.osoa.sca.annotations.Service;
 
 /**
  * @version $Rev$ $Date$
  */
-@Service(Transformer.class)
 public class XMLStreamReader2JSON extends BaseTransformer<XMLStreamReader, JSONObject> implements
     PullTransformer<XMLStreamReader, JSONObject> {
     

Modified: incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java?view=diff&rev=544583&r1=544539&r2=544583
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java Tue Jun  5 11:21:16 2007
@@ -25,38 +25,36 @@
 import org.codehaus.jettison.json.JSONObject;
 
 public class JSONTransformerTestCase extends TestCase {
-    private static final String IPO_XML =
-        "<?xml version=\"1.0\"?>" + "<ipo:purchaseOrder"
-            + "  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
-            + "  xmlns:ipo=\"http://www.example.com/IPO\""
-            + "  xsi:schemaLocation=\"http://www.example.com/IPO ipo.xsd\""
-            + "  orderDate=\"1999-12-01\">"
-            + "  <shipTo exportCode=\"1\" xsi:type=\"ipo:UKAddress\">"
-            + "    <name>Helen Zoe</name>"
-            + "    <street>47 Eden Street</street>"
-            + "    <city>Cambridge</city>"
-            + "    <postcode>CB1 1JR</postcode>"
-            + "  </shipTo>"
-            + "  <billTo xsi:type=\"ipo:USAddress\">"
-            + "    <name>Robert Smith</name>"
-            + "    <street>8 Oak Avenue</street>"
-            + "    <city>Old Town</city>"
-            + "    <state>PA</state>"
-            + "    <zip>95819</zip>"
-            + "  </billTo>"
-            + "  <items>"
-            + "    <item partNum=\"833-AA\">"
-            + "      <productName>Lapis necklace</productName>"
-            + "      <quantity>1</quantity>"
-            + "      <USPrice>99.95</USPrice>"
-            + "      <ipo:comment>Want this for the holidays</ipo:comment>"
-            + "      <shipDate>1999-12-05</shipDate>"
-            + "    </item>"
-            + "  </items>"
-            + "</ipo:purchaseOrder>";
+    private static final String IPO_XML = "<?xml version=\"1.0\"?>" + "<ipo:purchaseOrder"
+                                          + "  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+                                          + "  xmlns:ipo=\"http://www.example.com/IPO\""
+                                          + "  xsi:schemaLocation=\"http://www.example.com/IPO ipo.xsd\""
+                                          + "  orderDate=\"1999-12-01\">"
+                                          + "  <shipTo exportCode=\"1\" xsi:type=\"ipo:UKAddress\">"
+                                          + "    <name>Helen Zoe</name>"
+                                          + "    <street>47 Eden Street</street>"
+                                          + "    <city>Cambridge</city>"
+                                          + "    <postcode>CB1 1JR</postcode>"
+                                          + "  </shipTo>"
+                                          + "  <billTo xsi:type=\"ipo:USAddress\">"
+                                          + "    <name>Robert Smith</name>"
+                                          + "    <street>8 Oak Avenue</street>"
+                                          + "    <city>Old Town</city>"
+                                          + "    <state>PA</state>"
+                                          + "    <zip>95819</zip>"
+                                          + "  </billTo>"
+                                          + "  <items>"
+                                          + "    <item partNum=\"833-AA\">"
+                                          + "      <productName>Lapis necklace</productName>"
+                                          + "      <quantity>1</quantity>"
+                                          + "      <USPrice>99.95</USPrice>"
+                                          + "      <ipo:comment>Want this for the holidays</ipo:comment>"
+                                          + "      <shipDate>1999-12-05</shipDate>"
+                                          + "    </item>"
+                                          + "  </items>"
+                                          + "</ipo:purchaseOrder>";
 
-    private static final String JSON_STR =
-        "{\"xsl:root\":{\"@xmlns\":{\"xsl\":\"http://foo.com\"},\"data\":{\"$\":\"my json string\"}}}";
+    private static final String JSON_STR = "{\"xsl:root\":{\"@xmlns\":{\"xsl\":\"http://foo.com\"},\"data\":{\"$\":\"my json string\"}}}";
 
     public void testXML2JSON() throws Exception {
         XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(IPO_XML));
@@ -66,14 +64,14 @@
 
         // Cannot round-trip as we hit a bug in Jettison
         /*
-        JSON2XMLStreamReader t2 = new JSON2XMLStreamReader();
-        XMLStreamReader reader2 = t2.transform(json, null);
-        StringWriter sw = new StringWriter();
-        XMLStreamWriter streamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(sw);
-        new XMLStreamSerializer().serialize(reader2, streamWriter);
-        streamWriter.flush();
-        System.out.println(sw.toString());
-        */
+         JSON2XMLStreamReader t2 = new JSON2XMLStreamReader();
+         XMLStreamReader reader2 = t2.transform(json, null);
+         StringWriter sw = new StringWriter();
+         XMLStreamWriter streamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(sw);
+         new XMLStreamSerializer().serialize(reader2, streamWriter);
+         streamWriter.flush();
+         System.out.println(sw.toString());
+         */
 
     }
 
@@ -84,7 +82,8 @@
         XMLStreamWriter streamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(sw);
         new XMLStreamSerializer().serialize(reader2, streamWriter);
         streamWriter.flush();
-        Assert.assertTrue(sw.toString().contains("<xsl:root xmlns:xsl=\"http://foo.com\"><data>my json string</data></xsl:root>"));
+        Assert.assertTrue(sw.toString()
+            .contains("<xsl:root xmlns:xsl=\"http://foo.com\"><data>my json string</data></xsl:root>"));
     }
 
     public void testJSON2OMElement() throws Exception {
@@ -95,6 +94,17 @@
         OMElement element = t1.transform(new JSONObject(JSON_STR), context);
         StringWriter writer = new StringWriter();
         element.serialize(writer);
-        System.out.println(writer.toString());
+        // System.out.println(writer.toString());
+    }
+
+    public void testString2JSON() throws Exception {
+        String json = "{\"name\":\"John\",\"age\":25}";
+        String2JSON t1 = new String2JSON();
+        JSONObject jsonObject = t1.transform(json, null);
+        assertEquals(jsonObject.getString("name"), "John");
+        assertEquals(jsonObject.getInt("age"), 25);
+        JSON2String t2 = new JSON2String();
+        String str = t2.transform(jsonObject, null);
+        assertEquals(json, str);
     }
 }

Modified: incubator/tuscany/java/sca/modules/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/pom.xml?view=diff&rev=544583&r1=544582&r2=544583
==============================================================================
--- incubator/tuscany/java/sca/modules/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/pom.xml Tue Jun  5 11:21:16 2007
@@ -61,6 +61,7 @@
                 <module>databinding-jaxb</module>
                 <module>databinding-sdo</module>
                 <module>databinding-sdo-axiom</module>
+                <module>databinding-json</module>
                 <!--
                 <module>discovery-jms</module>
                 -->



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