private Object getValue()

in discovery/local/src/main/java/org/apache/aries/rsa/discovery/endpoint/PropertiesMapper.java [60:89]


    private Object getValue(PropertyType prop) {
        Object value = null;
        String type = getTypeName(prop);
        Object content = getFirstNonText(prop.getContent());
        if (content instanceof JAXBElement<?>) {
            JAXBElement<?> el = (JAXBElement<?>)content;
            if (el.getDeclaredType() == ArrayType.class) {
                String elName = el.getName().getLocalPart();
                ArrayType inValue = (ArrayType)el.getValue();
                if ("array".equals(elName)) {
                    value = getArray(inValue, type);
                } else if ("set".equals(elName)) {
                    value = handleCollection(inValue, new HashSet<>(), type);
                } else if ("list".equals(elName)) {
                    value = handleCollection(inValue, new ArrayList<>(), type);
                }
            } else if (el.getDeclaredType() == XmlType.class) {
                value = readXML((XmlType)el.getValue(), type);
            }
        } else {
            if (prop.getValue() != null) {
                value = instantiate(type, prop.getValue());
            } else {
                if (prop.getContent().size() > 0) {
                    value = instantiate(type, prop.getContent().get(0).toString());
                }
            }
        }
        return value;
    }