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);