package org.ovirt.engine.core.common.queries; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessType; import java.io.Serializable; import java.util.List; import java.util.Map; @XmlType(namespace = "http://service.engine.ovirt.org") @XmlAccessorType(XmlAccessType.NONE) @XmlSeeAlso({ ValueObjectList.class, ValueObjectSingle.class, ValueObjectMap.class }) public class ValueObject implements Serializable { private static final long serialVersionUID = -405401713169411987L; public List asList() { throw new IllegalStateException("Object doesn't represent list"); } public Object asValue() { throw new IllegalStateException("Object doesn't represent single value"); } public Map asMap() { throw new IllegalStateException("Object doesn't represent map"); } public static ValueObject createValueObject(Object value) { if (value instanceof List) return new ValueObjectList(((List) value)); if (value instanceof Map) return new ValueObjectMap(((Map) value), false); else return new ValueObjectSingle(value); } }