You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by de...@apache.org on 2010/10/14 09:21:20 UTC

svn commit: r1022395 - in /geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins: org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/ org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/in...

Author: delos
Date: Thu Oct 14 07:21:19 2010
New Revision: 1022395

URL: http://svn.apache.org/viewvc?rev=1022395&view=rev
Log:
GERONIMODEVTOOLS-608 reduce time-consuming in DependencyHelper with cache. Thanks Boes and Chris for the patch

Modified:
    geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/DependencyHelper.java
    geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/internal/DependencyHelper.java

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/DependencyHelper.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/DependencyHelper.java?rev=1022395&r1=1022394&r2=1022395&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/DependencyHelper.java (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v11.core/src/main/java/org/apache/geronimo/st/v11/core/internal/DependencyHelper.java Thu Oct 14 07:21:19 2010
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.xml.bind.JAXBElement;
 
@@ -34,9 +35,9 @@ import org.apache.geronimo.j2ee.deployme
 import org.apache.geronimo.j2ee.deployment.ObjectFactory;
 import org.apache.geronimo.j2ee.openejb_jar.OpenejbJarType;
 import org.apache.geronimo.j2ee.web.WebAppType;
+import org.apache.geronimo.st.core.jaxb.JAXBUtils;
 import org.apache.geronimo.st.v11.core.DeploymentUtils;
 import org.apache.geronimo.st.v11.core.GeronimoUtils;
-import org.apache.geronimo.st.core.jaxb.JAXBUtils;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.server.core.IModule;
@@ -67,6 +68,8 @@ public class DependencyHelper {
     private List<JAXBElement> inputJAXBElements = new ArrayList();
     private List<JAXBElement> reorderedJAXBElements = new ArrayList();
 
+    //provide a cache
+    private ConcurrentHashMap<IModule, EnvironmentType> environmentCache = new ConcurrentHashMap<IModule, EnvironmentType>();
 
     /**
      * Reorder the publish order of the modules based on any discovered dependencies
@@ -78,6 +81,9 @@ public class DependencyHelper {
      */
     public List reorderModules(IServer server, List modules, List deltaKind ) {
         Trace.tracePoint("Entry", "DependencyTypeHelper.reorderModules", modules, deltaKind);
+        
+        //provide a cache
+        ConcurrentHashMap<String,Boolean> verifiedModules = new ConcurrentHashMap<String,Boolean>();
 
         if (modules.size() == 0) {
             List reorderedLists = new ArrayList(2);
@@ -125,8 +131,23 @@ public class DependencyHelper {
 	                            if (dep.getType()!=null)
 	                            	configId.append(dep.getType());
 	                            
-	                            if (!DeploymentUtils.isInstalledModule(server,configId.toString()))
-	                               	dm.addDependency(child, parent );
+								// get install flag from the cache
+								Boolean isInstalledModule = verifiedModules
+										.get(configId.toString());
+								if (isInstalledModule == null) {
+									// not in the cache, invoke
+									// isInstalledModule() method
+									isInstalledModule = DeploymentUtils
+											.isInstalledModule(server,
+													configId.toString());
+									// put install flag into the cache for next
+									// retrieve
+									verifiedModules.put(configId.toString(),
+											isInstalledModule);
+								}
+
+								if (!isInstalledModule)
+									dm.addDependency(child, parent);
 	                        }
 	                    }
 	                }
@@ -375,6 +396,11 @@ public class DependencyHelper {
     private EnvironmentType getEnvironment(IModule module) {
         Trace.tracePoint("Enter", "DependencyTypeHelper.getEnvironment", module);
 
+		// if module's environment is in the cache, get it from the cache
+		if (environmentCache.containsKey(module)) {
+			return environmentCache.get(module);
+		}
+        
         EnvironmentType environment = null;
         if (GeronimoUtils.isWebModule(module)) {
             if (getWebDeploymentPlan(module) != null) {
@@ -410,6 +436,9 @@ public class DependencyHelper {
                     environment = plan.getServerEnvironment();
             }
         }
+        
+        //put module's environment into the cache for next retrieve
+        environmentCache.put(module, environment);
 
         Trace.tracePoint("Exit ", "DependencyTypeHelper.getEnvironment", environment);
         return environment;

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/internal/DependencyHelper.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/internal/DependencyHelper.java?rev=1022395&r1=1022394&r2=1022395&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/internal/DependencyHelper.java (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/internal/DependencyHelper.java Thu Oct 14 07:21:19 2010
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.xml.bind.JAXBElement;
 
@@ -68,6 +69,8 @@ public class DependencyHelper {
     private List<JAXBElement> inputJAXBElements = new ArrayList();
     private List<JAXBElement> reorderedJAXBElements = new ArrayList();
 
+    //provide a cache
+    private ConcurrentHashMap<IModule, Environment> environmentCache = new ConcurrentHashMap<IModule, Environment>();
 
     /**
      * Reorder the publish order of the modules based on any discovered dependencies
@@ -79,6 +82,9 @@ public class DependencyHelper {
      */
     public List reorderModules(IServer server, List modules, List deltaKind ) {
         Trace.tracePoint("Entry", "DependencyHelper.reorderModules", modules, deltaKind);
+        
+        //provide a cache
+        ConcurrentHashMap<String,Boolean> verifiedModules = new ConcurrentHashMap<String,Boolean>();
 
         if (modules.size() == 0) {
             List reorderedLists = new ArrayList(2);
@@ -126,8 +132,23 @@ public class DependencyHelper {
 	                            if (dep.getType()!=null)
 	                            	configId.append(dep.getType());
 	                            
-	                            if (!DeploymentUtils.isInstalledModule(server,configId.toString()))
-	                               	dm.addDependency(child, parent );
+	                         // get install flag from the cache
+								Boolean isInstalledModule = verifiedModules
+										.get(configId.toString());
+								if (isInstalledModule == null) {
+									// not in the cache, invoke
+									// isInstalledModule() method
+									isInstalledModule = DeploymentUtils
+											.isInstalledModule(server,
+													configId.toString());
+									// put install flag into the cache for next
+									// retrieve
+									verifiedModules.put(configId.toString(),
+											isInstalledModule);
+								}
+
+								if (!isInstalledModule)
+									dm.addDependency(child, parent);
 	                        }
 	                    }
 	                }
@@ -376,6 +397,11 @@ public class DependencyHelper {
     private Environment getEnvironment(IModule module) {
         Trace.tracePoint("Enter", "DependencyHelper.getEnvironment", module);
 
+    	// if module's environment is in the cache, get it from the cache
+		if (environmentCache.containsKey(module)) {
+			return environmentCache.get(module);
+		}
+        
         Environment environment = null;
         if (GeronimoUtils.isWebModule(module)) {
             if (getWebDeploymentPlan(module) != null) {
@@ -412,6 +438,9 @@ public class DependencyHelper {
             }
         }
 
+        //put module's environment into the cache for next retrieve
+        environmentCache.put(module, environment);
+        
         Trace.tracePoint("Exit ", "DependencyHelper.getEnvironment", environment);
         return environment;
     }