Author: doll
Date: Fri Jun 13 15:14:52 2008
New Revision: 667669

URL: http://svn.apache.org/viewvc?rev=667669&view=rev
Log:
Extracted an interface from the two bean converters so that they can be used 
interchangeably. 


Added:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanConverter.java
Modified:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanXmlConverter.java

Added: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanConverter.java?rev=667669&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanConverter.java
 (added)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanConverter.java
 Fri Jun 13 15:14:52 2008
@@ -0,0 +1,24 @@
+/*
+ * 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.shindig.social.opensocial.util;
+
+public interface BeanConverter {
+  <T> T convertToObject(String string, Class<T> className);
+
+  String convertToString(Object pojo);
+}

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java?rev=667669&r1=667668&r2=667669&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
 Fri Jun 13 15:14:52 2008
@@ -38,7 +38,7 @@
  * Converts pojos to json objects
  * TODO: Replace with standard library
  */
-public class BeanJsonConverter {
+public class BeanJsonConverter implements BeanConverter {
 
   private static final Object[] EMPTY_OBJECT = {};
   private static final String EXCLUDED_FIELDS = "class";
@@ -46,6 +46,16 @@
   private static final Pattern SETTER = Pattern.compile("^set([a-zA-Z]+)$");
 
   /**
+   * Convert the passed in object to a string
+   *
+   * @param pojo The object to convert
+   * @return An object whos toString method will return json
+   */
+  public String convertToString(Object pojo) {
+    return convertToJson(pojo).toString();
+  }
+
+  /**
    * Convert the passed in object to a json object
    *
    * @param pojo The object to convert
@@ -161,7 +171,7 @@
 
     try {
       T pojo = className.newInstance();
-      return convertToObjectPrivate(json, pojo);
+      return convertToObject(json, pojo);
     } catch (JSONException e) {
       throw new RuntimeException(errorMessage, e);
     } catch (InvocationTargetException e) {
@@ -173,7 +183,7 @@
     }
   }
 
-  private <T> T convertToObjectPrivate(String json, T pojo)
+  private <T> T convertToObject(String json, T pojo)
       throws JSONException, InvocationTargetException, IllegalAccessException,
       InstantiationException {
 

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanXmlConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanXmlConverter.java?rev=667669&r1=667668&r2=667669&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanXmlConverter.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanXmlConverter.java
 Fri Jun 13 15:14:52 2008
@@ -17,19 +17,25 @@
  */
 package org.apache.shindig.social.opensocial.util;
 
+import org.apache.commons.betwixt.io.BeanReader;
 import org.apache.commons.betwixt.io.BeanWriter;
 import org.xml.sax.SAXException;
 
 import java.beans.IntrospectionException;
 import java.io.IOException;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class BeanXmlConverter {
+public class BeanXmlConverter implements BeanConverter {
   private static Logger logger =
       Logger.getLogger(BeanXmlConverter.class.getName());
 
+  public String convertToString(Object pojo) {
+    return convertToXml(pojo);
+  }
+
   public String convertToXml(Object obj) {
     StringWriter outputWriter = new StringWriter();
     BeanWriter writer = new BeanWriter(outputWriter);
@@ -62,4 +68,21 @@
 
     return toReturn;
   }
+
+  public <T> T convertToObject(String xml, Class<T> className) {
+    String errorMessage = "Could not convert " + xml + " to " + className;
+
+    BeanReader reader = new BeanReader();
+    try {
+      reader.registerBeanClass("activity", className);
+      StringReader rd = new StringReader(xml);
+      return (T) reader.parse(rd);
+    } catch (IntrospectionException e) {
+      throw new RuntimeException(errorMessage, e);
+    } catch (IOException e) {
+      throw new RuntimeException(errorMessage, e);
+    } catch (SAXException e) {
+      throw new RuntimeException(errorMessage, e);
+    }
+  }
 }


Reply via email to