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