in uimaj-core/src/main/java/org/apache/uima/pear/util/UIMAUtil.java [164:271]
private static synchronized String identifyUimaComponentCategory(File xmlDescFile, URL xmlDescUrl)
throws IOException {
String uimaCompCtg = null;
XMLInputSource xmlSource = null;
String xmlDescUri = (xmlDescFile != null) ? xmlDescFile.getAbsolutePath()
: xmlDescUrl.toString();
try {
// clean error message
__errTableByUri.remove(xmlDescUri);
// get XMLParser
XMLParser xmlParser = UIMAFramework.getXMLParser();
// create XML source
xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
: new XMLInputSource(xmlDescUrl);
// parse XML source and create resource specifier
ResourceSpecifier resourceSpec = null;
try {
resourceSpec = xmlParser.parseResourceSpecifier(xmlSource);
} catch (UIMAException err) {
__errTableByUri.put(xmlDescUri, err);
} catch (UIMARuntimeException exc) {
__errTableByUri.put(xmlDescUri, exc);
}
if (resourceSpec != null) { // AE | CR | CI | CC | CustomResourceSpecifier ?
// identify UIMA resource category
if (resourceSpec instanceof AnalysisEngineDescription) {
uimaCompCtg = ANALYSIS_ENGINE_CTG;
} else if (resourceSpec instanceof CollectionReaderDescription) {
uimaCompCtg = COLLECTION_READER_CTG;
} else if (resourceSpec instanceof CasInitializerDescription) {
uimaCompCtg = CAS_INITIALIZER_CTG;
} else if (resourceSpec instanceof CasConsumerDescription) {
uimaCompCtg = CAS_CONSUMER_CTG;
} else if (resourceSpec instanceof CustomResourceSpecifier) {
// try to treat custom resource specifiers as AE
uimaCompCtg = ANALYSIS_ENGINE_CTG;
}
}
if (uimaCompCtg == null) { // CPE ?
// refresh XML source object
try {
xmlSource.getInputStream().close();
} catch (Exception e) {
}
xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
: new XMLInputSource(xmlDescUrl);
try {
// try parsing CPE configuration
xmlParser.parseCpeDescription(xmlSource);
uimaCompCtg = CPE_CONFIGURATION_CTG;
__errTableByUri.remove(xmlDescUri);
} catch (UIMAException err) {
__errTableByUri.put(xmlDescUri, err);
} catch (UIMARuntimeException exc) {
__errTableByUri.put(xmlDescUri, exc);
}
}
if (uimaCompCtg == null) { // TS ?
// refresh XML source object
try {
xmlSource.getInputStream().close();
} catch (Exception e) {
}
xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
: new XMLInputSource(xmlDescUrl);
try {
// try parsing TS description
xmlParser.parseTypeSystemDescription(xmlSource);
uimaCompCtg = TYPE_SYSTEM_CTG;
__errTableByUri.remove(xmlDescUri);
} catch (UIMAException err) {
__errTableByUri.put(xmlDescUri, err);
} catch (UIMARuntimeException exc) {
__errTableByUri.put(xmlDescUri, exc);
}
}
if (uimaCompCtg == null) { // RR ?
// refresh XML source object
try {
xmlSource.getInputStream().close();
} catch (Exception e) {
}
xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
: new XMLInputSource(xmlDescUrl);
try {
// try parsing RES manager configuration
xmlParser.parseResourceManagerConfiguration(xmlSource);
uimaCompCtg = REUSABLE_RESOURCE_CTG;
__errTableByUri.remove(xmlDescUri);
} catch (UIMAException err) {
__errTableByUri.put(xmlDescUri, err);
} catch (UIMARuntimeException exc) {
__errTableByUri.put(xmlDescUri, exc);
}
}
} catch (IOException exc) {
throw exc;
} catch (Exception err) {
__errTableByUri.put(xmlDescUri, err);
} finally {
if (xmlSource != null && xmlSource.getInputStream() != null)
try {
xmlSource.getInputStream().close();
} catch (Exception e) {
}
}
return uimaCompCtg;
}