X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2FDetachedXmlConverterCompat.java;h=7ad49fadaad5ba1ad161345a2292f17a746d4dec;hb=7a8f034133c1112e187e2a2bfd2c56a8d2452345;hp=1a361dfa128b437484ade6f1f286df4f99d4467c;hpb=d4b76dcc41be6340beb91e959b9b69741be17bc0;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedXmlConverterCompat.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedXmlConverterCompat.java index 1a361dfa1..7ad49fada 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedXmlConverterCompat.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedXmlConverterCompat.java @@ -33,6 +33,61 @@ public class DetachedXmlConverterCompat implements DetachedXmlConverter { } } + public void marshallCommunication(DetachedCommunication detCom, + Result result) { + if (detCom instanceof DetachedRequest) { + marshallRequest((DetachedRequest) detCom, result); + } else if (detCom instanceof DetachedAnswer) { + marshallAnswer((DetachedAnswer) detCom, result); + } else { + throw new DetachedException("Unkown communication type " + + detCom.getClass()); + } + } + + public DetachedCommunication unmarshallCommunication(Source source) { + // Parse + DOMResult result = new DOMResult(); + try { + copy.transform(source, result); + } catch (TransformerException e) { + throw new DetachedException("Could not copy xml source", e); + } + Element root = (Element) ((Document) result.getNode()) + .getDocumentElement(); + + // Create objects + String requestType = root.getLocalName(); + if (requestType.equals("detached-request")) { + DetachedRequest request = new DetachedRequest(); + request.setUuid(root.getElementsByTagNameNS( + SLC_DETACHED_NAMESPACE_URI, "uuid").item(0) + .getTextContent()); + request + .setRef(root.getElementsByTagNameNS( + SLC_DETACHED_NAMESPACE_URI, "ref").item(0) + .getTextContent()); + request.setPath(root.getElementsByTagNameNS( + SLC_DETACHED_NAMESPACE_URI, "path").item(0) + .getTextContent()); + Element propertiesElement = (Element) root.getElementsByTagNameNS( + SLC_DETACHED_NAMESPACE_URI, "properties").item(0); + NodeList propElements = propertiesElement.getElementsByTagNameNS( + SLC_DETACHED_NAMESPACE_URI, "prop"); + Properties properties = new Properties(); + for (int i = 0; i < propElements.getLength(); i++) { + Element propElement = (Element) propElements.item(i); + String key = propElement.getAttribute("key"); + String value = propElement.getTextContent(); + properties.setProperty(key, value); + } + request.setProperties(properties); + return request; + } else { + throw new DetachedException(requestType + " not implemented."); + } + } + public void marshallAnswer(DetachedAnswer answer, Result result) { StringBuffer buf = new StringBuffer(""); buf.append("