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);
+ }
+ }
}