You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2012/10/26 21:51:06 UTC

svn commit: r1402636 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java

Author: cwiklik
Date: Fri Oct 26 19:51:05 2012
New Revision: 1402636

URL: http://svn.apache.org/viewvc?rev=1402636&view=rev
Log:
UIMA-2487 Refactored code responsible for gathering pipeline stats

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java?rev=1402636&r1=1402635&r2=1402636&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java Fri Oct 26 19:51:05 2012
@@ -479,25 +479,27 @@ public class PrimitiveAnalysisEngineCont
 	  }
 	  return null;
   }
-  private AnalysisEngineManagement deepCopy(AnalysisEngineManagement aem) {
-    String xml = xstream.toXML(aem); // serialize to XML
-    return (AnalysisEngineManagement)xstream.fromXML(xml);
-  }
-  private void getLeafManagementObjects(AnalysisEngineManagement aem, List<AnalysisEngineManagement> result, boolean deepCopy) {
-    if (aem.getComponents().isEmpty()) {
-      if (!aem.getName().equals("Fixed Flow Controller")) {
-        if ( deepCopy ) {
-          result.add(deepCopy(aem)); // deep copy
-        } else {
-          result.add(aem); // reference
-        }
-      }
-    } else {
-      for (AnalysisEngineManagement child : (Iterable<AnalysisEngineManagement>) aem.getComponents().values()) {
-        getLeafManagementObjects(child, result, deepCopy);
-      }
-    }
+  private AnalysisEnginePerformanceMetrics deepCopyMetrics(AnalysisEngineManagement aem) {
+	  return new AnalysisEnginePerformanceMetrics(aem.getName(),
+                      aem.getUniqueMBeanName(),
+                      aem.getAnalysisTime(),
+                      aem.getNumberOfCASesProcessed());
   }
+
+  private void getLeafManagementObjects(AnalysisEngineManagement aem, List<AnalysisEnginePerformanceMetrics> result) {
+	    if (aem.getComponents().isEmpty()) {
+	      if (!aem.getName().equals("Fixed Flow Controller")) {
+	    	  result.add(deepCopyMetrics(aem));
+	      }
+	    } else {
+	      for (AnalysisEngineManagement child : (Iterable<AnalysisEngineManagement>) aem.getComponents().values()) {
+		        getLeafManagementObjects(child, result);
+	      }
+	    }
+	  }
+
+  
+  
   public void destroyAE()  {
 	  try {
 	    if ( aeInstancePool != null ) {
@@ -529,8 +531,9 @@ public class PrimitiveAnalysisEngineCont
     if (stopped) {
       return;
     }
-    List<AnalysisEngineManagement> beforeAnalysisManagementObjects = new ArrayList<AnalysisEngineManagement>();
-    List<AnalysisEngineManagement> afterAnalysisManagementObjects = new ArrayList<AnalysisEngineManagement>();
+    
+    List<AnalysisEnginePerformanceMetrics> beforeAnalysisManagementObjects = new ArrayList<AnalysisEnginePerformanceMetrics>();
+    List<AnalysisEnginePerformanceMetrics> afterAnalysisManagementObjects = new ArrayList<AnalysisEnginePerformanceMetrics>();
     CasStateEntry parentCasStateEntry = null;
     //	If enabled, keep a reference to a timer which
     //  when it expires, will cause a JVM to dump a stack
@@ -573,9 +576,9 @@ public class PrimitiveAnalysisEngineCont
       
       AnalysisEngineManagement rootAem = ae.getManagementInterface();
       if ( rootAem.getComponents().size() > 0 ) {
-          getLeafManagementObjects(rootAem, beforeAnalysisManagementObjects, true);
+          getLeafManagementObjects(rootAem, beforeAnalysisManagementObjects);
       } else {
-          beforeAnalysisManagementObjects.add(deepCopy(rootAem));   
+          beforeAnalysisManagementObjects.add(deepCopyMetrics(rootAem));   
       }
       
       CasIterator casIterator = ae.processAndOutputNewCASes(aCAS);
@@ -834,10 +837,10 @@ public class PrimitiveAnalysisEngineCont
           //  Flatten the hierarchy by recursively (if this AE is an aggregate) extracting  
           //  primitive AE's AnalysisEngineManagement instance and placing it in 
           //  afterAnalysisManagementObjects List.
-          getLeafManagementObjects(aem, afterAnalysisManagementObjects, false);
+          getLeafManagementObjects(aem, afterAnalysisManagementObjects);
       } else {
           //  Add the top level AnalysisEngineManagement instance.
-          afterAnalysisManagementObjects.add(aem);    
+          afterAnalysisManagementObjects.add(deepCopyMetrics(aem));    
       }
 
       //  Create a List to hold per CAS analysisTime and total number of CASes processed
@@ -846,14 +849,14 @@ public class PrimitiveAnalysisEngineCont
         new ArrayList<AnalysisEnginePerformanceMetrics>();
       //  Diff the before process() performance metrics with post process performance
       //  metrics
-      for (AnalysisEngineManagement after : afterAnalysisManagementObjects) {
-        for( AnalysisEngineManagement before: beforeAnalysisManagementObjects) {
-          if ( before.getUniqueMBeanName().equals(after.getUniqueMBeanName())) {
+      for (AnalysisEnginePerformanceMetrics after : afterAnalysisManagementObjects) {
+        for( AnalysisEnginePerformanceMetrics before: beforeAnalysisManagementObjects) {
+          if ( before.getUniqueName().equals(after.getUniqueName())) {
             AnalysisEnginePerformanceMetrics metrics = 
               new AnalysisEnginePerformanceMetrics(after.getName(),
-                      after.getUniqueMBeanName(),
+                      after.getUniqueName(),
                       after.getAnalysisTime()- before.getAnalysisTime(),
-                      after.getNumberOfCASesProcessed());
+                      after.getNumProcessed());
             performanceList.add(metrics);
             break;
           }