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 2017/11/24 04:50:53 UTC
svn commit: r1816210 -
/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java
Author: schor
Date: Fri Nov 24 04:50:53 2017
New Revision: 1816210
URL: http://svn.apache.org/viewvc?rev=1816210&view=rev
Log:
[UIMA-5652] enhance implementation of MDC contexts to handle case of no MDC available
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java?rev=1816210&r1=1816209&r2=1816210&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java Fri Nov 24 04:50:53 2017
@@ -600,12 +600,20 @@ public abstract class AnalysisEngineImpl
return mMBeanNamePrefix;
}
+ private static final boolean isMDC;
+ static {
+ MDC.put("uima_test", "uima_test");
+ isMDC = null != MDC.get("uima_test");
+ MDC.remove("uima_test");
+ }
protected void callInitializeMethod(AnalysisComponent component, UimaContext context) throws ResourceInitializationException {
// component.initialize(context);
try {
withContexts(component, context, null, () -> component.initialize(context));
} catch (Exception e) {
- throw (ResourceInitializationException)e;
+ throw (e instanceof ResourceInitializationException)
+ ? ((ResourceInitializationException)e)
+ : new ResourceInitializationException(e);
}
}
@@ -620,6 +628,7 @@ public abstract class AnalysisEngineImpl
}
private void withContexts(AnalysisComponent component, UimaContext context, AbstractCas cas, Runnable_withException r) throws Exception {
+ if (isMDC) {
UimaContext_ImplBase ucib = (UimaContext_ImplBase)context;
String prevCN = pushMDCstring(MDC_ANNOTATOR_CONTEXT_NAME, ucib.getQualifiedContextName());
String prevAN = pushMDCstring(MDC_ANNOTATOR_IMPL_NAME, component.getClass().getName());
@@ -640,9 +649,13 @@ public abstract class AnalysisEngineImpl
popMDCstring(MDC_CAS_ID, prevCAS);
}
}
+ } else {
+ r.run();
+ }
}
private String pushMDCstring(String key, String value) {
+ if (value == null) value = ""; // protect against failures if no value
String v = MDC.get(key);
if (value.equals(v)) return value;
MDC.put(key, (v == null) ? value : v + " : " + value);