in uimafit-core/src/main/java/org/apache/uima/fit/factory/ExternalResourceFactory.java [1337:1382]
protected static Map<String, ExternalResourceDescription> extractResourceParameters(
final Object[] configurationData) {
if (configurationData == null) {
return Collections.emptyMap();
}
Map<String, ExternalResourceDescription> extRes = new HashMap<String, ExternalResourceDescription>();
for (int i = 0; i < configurationData.length - 1; i += 2) {
String key = (String) configurationData[i];
Object value = configurationData[i + 1];
if (value == null) {
continue;
}
// Store External Resource parameters separately
ResourceValueType type = getResourceParameterType(value);
if (type == ResourceValueType.PRIMITIVE) {
ExternalResourceDescription description = (ExternalResourceDescription) value;
extRes.put(key, description);
} else if (type.isMultiValued()) {
Collection<ExternalResourceDescription> resList;
if (type == ResourceValueType.ARRAY) {
resList = asList((ExternalResourceDescription[]) value);
} else {
resList = (Collection<ExternalResourceDescription>) value;
}
// Record the list elements
List<Object> params = new ArrayList<Object>();
params.add(ResourceList.PARAM_SIZE);
params.add(String.valueOf(resList.size())); // "Resource" only supports String parameters!
int n = 0;
for (ExternalResourceDescription res : resList) {
params.add(ResourceList.ELEMENT_KEY + "[" + n + "]");
params.add(res);
n++;
}
// Record the list and attach the list elements to the list
extRes.put(key, createResourceDescription(ResourceList.class, params.toArray()));
}
}
return extRes;
}