in core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java [290:328]
private static Map<String, Object> getProperties(Class clazz, Document metadata) {
Map<String, Object> props = new HashMap<String, Object>();
String query = getComponentXPathQuery(clazz) + "/property[@name!='' and @value!='']";
NodeList nodes = queryNodes(metadata, query);
if (nodes != null) {
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
String name = getAttributeValue(node, "name");
String value = getAttributeValue(node, "value");
String type = getAttributeValue(node, "type");
if (StringUtils.equals("Integer", type)) {
props.put(name, Integer.parseInt(value));
}
else if (StringUtils.equals("Long", type)) {
props.put(name, Long.parseLong(value));
}
else if (StringUtils.equals("Boolean", type)) {
props.put(name, Boolean.parseBoolean(value));
}
else {
props.put(name, value);
}
}
}
query = getComponentXPathQuery(clazz) + "/property[@name!='' and text()!='']";
nodes = queryNodes(metadata, query);
if (nodes != null) {
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
String name = getAttributeValue(node, "name");
String[] value = StringUtils.split(StringUtils.trim(node.getTextContent()), "\n\r");
for (int j = 0; j<value.length; j++) {
value[j] = StringUtils.trim(value[j]);
}
props.put(name, value);
}
}
return props;
}