/**
*
convertToNativeType
*
* @param type a {@link org.jinterop.dcom.core.JIVariant} object.
* @return a {@link java.lang.Object} object.
* @throws org.opennms.protocols.wmi.WmiException if any.
*/
public static Object convertToNativeType(final JIVariant type) throws WmiException {
try {
if (type.isArray()) {
final ArrayList objs = new ArrayList();
final Object [] array = (Object[])type.getObjectAsArray().getArrayInstance();
for (final Object element : array) {
objs.add(convertToNativeType((JIVariant)element));
}
return objs;
}
switch (type.getType()) {
case JIVariant.VT_NULL:
return null;
case JIVariant.VT_BSTR:
return type.getObjectAsString().getString();
case JIVariant.VT_I2: // sint16
return type.getObjectAsShort();
case JIVariant.VT_I4:
return type.getObjectAsInt();
case JIVariant.VT_UI1: // uint8 (convert to Java Number)
return type.getObjectAsUnsigned().getValue();
case JIVariant.VT_BOOL:
return type.getObjectAsBoolean();
case JIVariant.VT_DECIMAL:
return type.getObjectAsFloat();
case JIVariant.VT_DATE:
return type.getObjectAsDate();
default:
throw new WmiException("Unknown type presented (" + type.getType() + "), defaulting to Object: " + type.toString());
}
} catch (final JIException e) {
throw new WmiException("Failed to conver WMI type to native object: " + e.getMessage(), e);
}
}