]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/runtime/org.argeo.slc.client.oxm/src/main/java/org/argeo/slc/client/oxm/OxmBean.java
+ refactor to separate runtime and module project under eclipse plugin.
[gpl/argeo-slc.git] / eclipse / plugins / runtime / org.argeo.slc.client.oxm / src / main / java / org / argeo / slc / client / oxm / OxmBean.java
diff --git a/eclipse/plugins/runtime/org.argeo.slc.client.oxm/src/main/java/org/argeo/slc/client/oxm/OxmBean.java b/eclipse/plugins/runtime/org.argeo.slc.client.oxm/src/main/java/org/argeo/slc/client/oxm/OxmBean.java
new file mode 100644 (file)
index 0000000..5ea94d2
--- /dev/null
@@ -0,0 +1,48 @@
+package org.argeo.slc.client.oxm;
+
+import org.argeo.slc.SlcException;
+import org.springframework.oxm.Marshaller;
+import org.springframework.oxm.Unmarshaller;
+import org.springframework.xml.transform.StringResult;
+import org.springframework.xml.transform.StringSource;
+
+public class OxmBean implements OxmInterface {
+
+       private Marshaller marshaller;
+       private Unmarshaller unmarshaller;
+
+       public void init() {
+       }
+
+       public Object unmarshal(String result) {
+               Object res;
+               if (result == null)
+                       throw new SlcException("Cannot unmarshall empty string ");
+               try {
+                       res = unmarshaller.unmarshal(new StringSource(result));
+               } catch (Exception e) {
+                       throw new SlcException("Could not unmarshall " + result, e);
+               }
+               return res;
+       }
+
+       public String marshal(Object graph) {
+               StringResult result = new StringResult();
+               try {
+                       marshaller.marshal(graph, result);
+               } catch (Exception e) {
+                       throw new SlcException("Cannot Marshal object " + graph.toString()
+                                       + " - " + e);
+               }
+               return result.toString();
+       }
+
+       // IoC
+       public void setMarshaller(Marshaller marshaller) {
+               this.marshaller = marshaller;
+       }
+
+       public void setUnmarshaller(Unmarshaller unmarshaller) {
+               this.unmarshaller = unmarshaller;
+       }
+}