throws ResourceInitializationException {
try {
// specifier must be a FlowControllerDescription. (Eventually, we
// might support remote specifiers, but not yet)
if (!(aSpecifier instanceof FlowControllerDescription)) {
throw new ResourceInitializationException(
ResourceInitializationException.NOT_A_FLOW_CONTROLLER_DESCRIPTOR, new Object[] {
aSpecifier.getSourceUrlString(), aSpecifier.getClass().getName() });
}
ResourceCreationSpecifier desc = (ResourceCreationSpecifier) aSpecifier;
// also framework implementation must start with org.apache.uima.java
final String fwImpl = desc.getFrameworkImplementation();
if (fwImpl == null
|| !fwImpl.equalsIgnoreCase(Constants.JAVA_FRAMEWORK_NAME)) {
throw new ResourceInitializationException(
ResourceInitializationException.UNSUPPORTED_FRAMEWORK_IMPLEMENTATION, new Object[] {
fwImpl, aSpecifier.getSourceUrlString() });
}
super.initialize(aSpecifier, aAdditionalParams);
// validate the descriptor
desc.validate(getResourceManager());
// instantiate FlowController
mFlowController = instantiateFlowController(desc);
// record metadata
setMetaData(desc.getMetaData());
// add our metadata to the CasManager, so that it will pick up our
// type system, priorities, and indexes
getCasManager().addMetaData(getProcessingResourceMetaData());
// determine if this component is Sofa-aware (based on whether it
// declares any input or output sofas in its capabilities)
mSofaAware = getProcessingResourceMetaData().isSofaAware();
// Set Logger, to enable component-specific logging configuration
UimaContextAdmin uimaContext = getUimaContextAdmin();
Logger logger = UIMAFramework.getLogger(mFlowController.getClass());
logger.setResourceManager(this.getResourceManager());
uimaContext.setLogger(logger);
// initialize FlowController
mFlowController.initialize(getFlowControllerContext());
mMBeanServer = null;
String mbeanNamePrefix = null;
if (aAdditionalParams != null) {
mMBeanServer = aAdditionalParams.get(AnalysisEngine.PARAM_MBEAN_SERVER);
mbeanNamePrefix = (String)aAdditionalParams.get(AnalysisEngine.PARAM_MBEAN_NAME_PREFIX);
}
// update MBean with the name taken from metadata
getMBean().setName(getMetaData().getName(), getUimaContextAdmin(), mbeanNamePrefix);
// register MBean with MBeanServer. If no MBeanServer specified in the
// additionalParams map, this will use the platform MBean Server
// (Java 1.5 only)
JmxMBeanAgent.registerMBean(getMBean(), mMBeanServer);
initialized = true;
return true;
} catch (ResourceConfigurationException e) {
throw new ResourceInitializationException(e);
}
}