// Copyright 2012 Citrix Systems, Inc. Licensed under the // Apache License, Version 2.0 (the "License"); you may not use this // file except in compliance with the License. Citrix Systems, Inc. // reserves all rights not expressly granted by 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. // // Automatically generated by addcopyright.py at 04/03/2012 * follows: * Linking this library statically or dynamically with other modules is * making a combined work based on this library. Thus, the terms and * permission to link this library with independent modules to produce an * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. package com.xensource.xenapi; import java.util.*; /** * Marshalls Java types onto the wire. * Does not cope with records. Use individual record.toMap() */ public final class Marshalling { /** * Converts Integers to Strings * and Sets to Lists recursively. */ public static Object toXMLRPC(Object o) { if (o instanceof String || o instanceof Boolean || o instanceof Double || o instanceof Date) { return o; } else if (o instanceof Long) { return o.toString(); } else if (o instanceof Map) { Map<Object, Object> result = new HashMap<Object, Object>(); Map m = (Map)o; for (Object k : m.keySet()) { result.put(toXMLRPC(k), toXMLRPC(m.get(k))); } return result; } else if (o instanceof Set) { List<Object> result = new ArrayList<Object>(); for (Object e : ((Set)o)) { result.add(toXMLRPC(e)); } return result; } else if (o instanceof XenAPIObject) { return ((XenAPIObject) o).toWireString(); } else if (o instanceof Enum) { return o.toString(); }else if (o == null){ return ""; } else { throw new RuntimeException ("=============don't know how to marshall:({[" + o + "]})"); } } }