private static void toXML()

in src/main/java/com/vmware/vim25/ws/XmlGen.java [91:195]


    private static void toXML(StringBuffer sb, String tagName, Class<?> type, Object obj) {
        Class<?> clazz = obj.getClass();

        if (clazz.isArray()) {
            if (obj.getClass() == TypeUtil.INT_ARRAY_CLASS) {
                int[] objs = (int[]) obj;
                for (int obj1 : objs) {
                    sb.append("<").append(tagName).append(">");
                    sb.append(obj1);
                    sb.append("</").append(tagName).append(">");
                }
            }
            else if (obj.getClass() == TypeUtil.BYTE_ARRAY_CLASS) {
                byte[] objs = (byte[]) obj;
                for (byte obj1 : objs) {
                    sb.append("<").append(tagName).append(">");
                    sb.append(obj1);
                    sb.append("</").append(tagName).append(">");
                }
            }
            else if (obj.getClass() == TypeUtil.LONG_ARRAY_CLASS) {
                long[] objs = (long[]) obj;
                for (long obj1 : objs) {
                    sb.append("<").append(tagName).append(">");
                    sb.append(obj1);
                    sb.append("</").append(tagName).append(">");
                }
            }
            else {
                Object[] objs = (Object[]) obj;
                for (Object obj1 : objs) {
                    toXML(sb, tagName, type.getComponentType(), obj1);
                }
            }
        }

        // from now on, no array type
        else if (clazz == ManagedObjectReference.class) { //MOR]
            ManagedObjectReference mor = (ManagedObjectReference) obj;
            if (clazz == type) {
                sb.append("<").append(tagName).append(" type=\"").append(mor.type).append("\">");
            }
            else {
                sb.append("<").append(tagName).append(" xsi:type=\"ManagedObjectReference\" type=\"").append(mor.type).append("\">");
            }
            sb.append(mor.val);
            sb.append("</").append(tagName).append(">");
        }
        else if (clazz.getCanonicalName().startsWith("java.lang")) //basic data type
        {
            if (clazz != type) {
                sb.append("<").append(tagName).append(" xsi:type=\"").append(TypeUtil.getXSIType(obj)).append("\">");
            }
            else {
                sb.append("<").append(tagName).append(">");
            }

            if (clazz == String.class) {
                String temp = (String) obj;
                obj = XmlUtil.escapeForXML(temp);
            }

            sb.append(obj);
            sb.append("</").append(tagName).append(">");
        }
        else if (clazz.isEnum()) //enum data type
        {
            sb.append("<").append(tagName).append(">").append(obj).append("</").append(tagName).append(">");
        }
        else if (obj instanceof Calendar) {
            sb.append("<").append(tagName).append(" xsi:type=\"xsd:dateTime\">").append(DatatypeConverter.printDateTime((Calendar) obj)).append("</").append(tagName).append(">");
        }
        else { // VIM type
            if (clazz == type) {
                sb.append("<").append(tagName).append(">");
            }
            else {
                String nameSpaceType = clazz.getSimpleName();
                sb.append("<").append(tagName).append(" xsi:type=\"").append(nameSpaceType).append("\">");
            }

            Field[] fields = ReflectUtil.getAllFields(clazz);

            for (Field f : fields) {
                String fName = f.getName();

                Object value = null;
                if (!Modifier.isTransient(f.getModifiers())) {
                    try {
                        value = f.get(obj);
                    }
                    catch (IllegalAccessException iae) {
                        log.error("IllegalAccessException caught.", iae);
                    }
                }
                if (value == null) {
                    continue;
                }

                Class<?> fType = f.getType();
                toXML(sb, fName, fType, value);
            }
            sb.append("</").append(tagName).append(">");
        }
    }