InvocationResultSerializer.java
001 /*
002  *
003  * Licensed to the Apache Software Foundation (ASF) under one
004  * or more contributor license agreements.  See the NOTICE file
005  * distributed with this work for additional information
006  * regarding copyright ownership.  The ASF licenses this file
007  * to you under the Apache License, Version 2.0 (the
008  * "License"); you may not use this file except in compliance
009  * with the License.  You may obtain a copy of the License at
010  *
011  *   http://www.apache.org/licenses/LICENSE-2.0
012  *
013  * Unless required by applicable law or agreed to in writing,
014  * software distributed under the License is distributed on an
015  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016  * KIND, either express or implied.  See the License for the
017  * specific language governing permissions and limitations
018  * under the License.
019  *
020  */
021 package org.apache.qpid.management.wsdm.muse.serializer;
022 
023 import java.util.Map;
024 
025 import javax.xml.namespace.QName;
026 
027 import org.apache.muse.core.serializer.Serializer;
028 import org.apache.muse.core.serializer.SerializerRegistry;
029 import org.apache.muse.util.xml.XmlUtils;
030 import org.apache.muse.ws.addressing.soap.SoapFault;
031 import org.apache.qpid.management.wsdm.capabilities.Result;
032 import org.w3c.dom.Element;
033 
034 /**
035  * Implementation of Muse Serializer for Result type.
036  *  
037  @author Andrea Gazzarini
038  */
039 public class InvocationResultSerializer implements Serializer 
040 {  
041   private Serializer _longSerializer = SerializerRegistry.getInstance().getSerializer(long.class);
042   private Serializer _stringSerializer = SerializerRegistry.getInstance().getSerializer(String.class);
043   private Serializer _mapSerializer = SerializerRegistry.getInstance().getSerializer(Map.class);
044   
045   /**
046    * Return a UUID representation of the given xml element.
047    
048    @param xml the element to unmarshal.
049    @throws SoapFault when the unmarshalling fails.
050    */  
051   @SuppressWarnings("unchecked")
052   public Object fromXML(Element elementDatathrows SoapFault 
053   {
054     long statusCode = 0;
055     String statusText = null;
056     Map<String, Object> outputSection = null;
057     
058     Element[] elements = XmlUtils.getAllElements(elementData);
059     for (Element element : elements)
060     {
061       if ("statusCode".equals(element.getNodeName()))
062       {
063         statusCode = (Long_longSerializer.fromXML(element);
064       else if ("statusText".equals(element.getNodeName()))
065       {
066         statusText = (String_stringSerializer.fromXML(element);
067       else if ("outputParameters".equals(element.getNodeName()))
068       {
069         outputSection = (Map<String, Object>_mapSerializer.fromXML(element);
070       
071     }
072     
073     return new Result(statusCode,statusText,outputSection);
074   }
075 
076   /**
077    * Returns the java type associated to this class.
078    
079    @return the java type associated to this class.
080    */
081   public Class<?> getSerializableType() 
082   {
083     return Result.class;
084   }
085 
086   /**
087    * Return an xml representation of the given UUID with the given name.
088    
089    @param object the UUID to marshal.
090    @param qname the qualified (xml) name of the object to use in xml representation.
091    @return the xml representation of the UUID.
092    @throws SoapFault when the marshalling fails.
093    */
094   public Element toXML(Object obj, QName qnamethrows SoapFault 
095   {
096     Result result = (Resultobj;
097     Element root = XmlUtils.createElement(qname);
098     Element statusCode = SerializerRegistry.getInstance().getSerializer(long.class).toXML(result.getStatusCode()new QName("statusCode"));
099     Element statusText = SerializerRegistry.getInstance().getSerializer(String.class).toXML(result.getStatusText()new QName("statusText"));    
100     
101     root.appendChild(statusCode);
102     root.appendChild(statusText);
103     if (result.getOutputParameters() != null)
104     {
105       Element outputSection = SerializerRegistry.getInstance().getSerializer(Map.class).toXML(result.getOutputParameters()new QName("outputParameters"));
106       root.appendChild(outputSection);
107     }
108     return root;
109     
110   }
111 }