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