You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2008/12/17 14:59:11 UTC
svn commit: r727382 - in
/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine:
asb/impl/ASB_impl.java asb/impl/FlowControllerContainer.java
impl/AggregateAnalysisEngine_impl.java
Author: schor
Date: Wed Dec 17 05:59:11 2008
New Revision: 727382
URL: http://svn.apache.org/viewvc?rev=727382&view=rev
Log:
[UIMA-1251] call destroy method if initialization fails for an aggregate component, on the previously (successfully) initialized parts.
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java?rev=727382&r1=727381&r2=727382&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java Wed Dec 17 05:59:11 2008
@@ -164,14 +164,18 @@
* @see org.apache.uima.resource.Resource#destroy()
*/
public void destroy() {
- // destroy component AnalysisEngines
+ // destroy component AnalysisEngines that have been successfully initialized
+ // unsuccessful initializations are not put into the Map
Iterator i = mComponentAnalysisEngineMap.entrySet().iterator();
while (i.hasNext()) {
Map.Entry entry = (Map.Entry) i.next();
Resource delegate = (Resource) entry.getValue();
delegate.destroy();
}
- if (mFlowControllerContainer != null) {
+
+ if (mFlowControllerContainer != null &&
+ // the container might be non-null, but the initialization could have failed
+ mFlowControllerContainer.isInitialized()) {
mFlowControllerContainer.destroy();
}
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java?rev=727382&r1=727381&r2=727382&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java Wed Dec 17 05:59:11 2008
@@ -57,6 +57,8 @@
private boolean mSofaAware;
private Object mMBeanServer;
+
+ private boolean initialized = false;
/*
* (non-Javadoc)
@@ -126,6 +128,7 @@
// (Java 1.5 only)
JmxMBeanAgent.registerMBean(getMBean(), mMBeanServer);
+ initialized = true;
return true;
} catch (ResourceConfigurationException e) {
throw new ResourceInitializationException(e);
@@ -296,4 +299,8 @@
}
return (FlowController) userObject;
}
+
+ boolean isInitialized() {
+ return initialized;
+ }
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java?rev=727382&r1=727381&r2=727382&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java Wed Dec 17 05:59:11 2008
@@ -250,7 +250,7 @@
public void destroy() {
if (mASB != null)
mASB.destroy();
- getLogger().logrb(Level.CONFIG, CLASS_NAME.getName(), "initialize", LOG_RESOURCE_BUNDLE,
+ getLogger().logrb(Level.CONFIG, CLASS_NAME.getName(), "destroy", LOG_RESOURCE_BUNDLE,
"UIMA_analysis_engine_destroyed__CONFIG", getMetaData().getName());
super.destroy();
}
@@ -364,7 +364,14 @@
// the component AnalysisEngines and the FlowController. This method also retrieves
// the component AnalysisEngines' metadata from the ASB, so it can be access via the
// _getComponentCasProcessorMetaData() method.
- initASB(aDescription, aAdditionalParams);
+ // If any delegates fail to initialize, must let the successful ones release their resources.
+ // Necessary for JMS sevice adapters that create listener threads. Jira 1251.
+ try {
+ initASB(aDescription, aAdditionalParams);
+ } catch (ResourceInitializationException e) {
+ destroy();
+ throw e;
+ }
// Do any processing we need to do now that we have this metadata.
processDelegateAnalysisEngineMetaData();