You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by rw...@apache.org on 2011/07/05 09:11:03 UTC

svn commit: r1142905 - in /geronimo/server/trunk/framework/modules: geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/ geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/

Author: rwonly
Date: Tue Jul  5 07:11:03 2011
New Revision: 1142905

URL: http://svn.apache.org/viewvc?rev=1142905&view=rev
Log:
GERONIMO-6046 Add getBundleId API to geronimo-bundle-recorder so that GEP don't need use the SLOW listBundles method of OSGi JMX API

Modified:
    geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorder.java
    geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorderGBean.java
    geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/Utils.java
    geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ExtendedDeploymentManager.java

Modified: geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorder.java?rev=1142905&r1=1142904&r2=1142905&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorder.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorder.java Tue Jul  5 07:11:03 2011
@@ -38,6 +38,16 @@ public interface BundleRecorder {
      * @throws IOException
      */
     public void eraseUninstall(long bundleId) throws IOException;
+    
+    
+    /**
+     * Get the bundle id according to its symbolic name and version.
+     * It is pretty slow to call listBundles of OSGi JMX API.
+     * @param symbolicName
+     * @param version
+     * @return the installed bundle id, return -1 if can not find.
+     */
+    public long getBundleId(String symbolicName, String version);
 }
 
 

Modified: geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorderGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorderGBean.java?rev=1142905&r1=1142904&r2=1142905&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorderGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/BundleRecorderGBean.java Tue Jul  5 07:11:03 2011
@@ -19,6 +19,7 @@ package org.apache.geronimo.system.bundl
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Properties;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
@@ -32,6 +33,7 @@ import org.apache.geronimo.kernel.Kernel
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.WritableListableRepository;
 import org.apache.geronimo.kernel.util.FileUtils;
+import org.apache.geronimo.kernel.util.IOUtils;
 import org.apache.geronimo.system.serverinfo.ServerInfo;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -155,12 +157,19 @@ public class BundleRecorderGBean impleme
         String recordKey = getRecordKey(artifact);
         
         Properties startupBundles = new Properties();
-        startupBundles.load(new FileInputStream(startupFile)); 
-        if (startupBundles.containsKey(recordKey.toString())) { // check if we have recorded this
-            log.warn("This bundle has been recorded in startup.properties: "+ recordKey);
-        } else {
-            // record it
-            Utils.appendLine(startupFile, recordKey+"="+String.valueOf(startLevel));
+        InputStream is = null;
+        try{
+            is = new FileInputStream(startupFile);
+            startupBundles.load(is); 
+            if (startupBundles.containsKey(recordKey.toString())) { // check if we have recorded this
+                log.warn("This bundle has been recorded in startup.properties: "+ recordKey);
+            } else {
+                // record it
+                Utils.appendLine(startupFile, recordKey+"="+String.valueOf(startLevel));
+            }
+        }finally{
+            if (is!=null)
+                IOUtils.close(is);
         }
             
         return bundle.getBundleId();
@@ -242,4 +251,13 @@ public class BundleRecorderGBean impleme
         return recordKey.toString();
     }
     
+    @Override
+    public long getBundleId(String symbolicName, String version) {
+        for (Bundle bundle : bundleContext.getBundles()) {
+            if (symbolicName.equals(bundle.getSymbolicName()) && version.equals(bundle.getVersion().toString())){
+                return bundle.getBundleId();
+            }
+        }
+        return -1;
+    }
 }

Modified: geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/Utils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/Utils.java?rev=1142905&r1=1142904&r2=1142905&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/Utils.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-bundle-recorder/src/main/java/org/apache/geronimo/system/bundle/Utils.java Tue Jul  5 07:11:03 2011
@@ -58,7 +58,7 @@ public class Utils {
         File tmpFile = new File(file.getAbsolutePath()+".tmpfile");
         try {
             reader = new BufferedReader(new FileReader(file));
-            writer = new BufferedWriter(new FileWriter(tmpFile,true));
+            writer = new BufferedWriter(new FileWriter(tmpFile));
             String line = null;
             while (( line = reader.readLine()) != null){
                 if (line.startsWith("#")) { // comments line
@@ -74,8 +74,8 @@ public class Utils {
             }
             
         } finally {
-            reader.close();
-            writer.close();
+            IOUtils.close(reader);
+            IOUtils.close(writer);
         }
         
         if (file.delete()){
@@ -99,7 +99,7 @@ public class Utils {
             }
             
         } finally {
-            reader.close();
+            IOUtils.close(reader);
         }
         
         return null;

Modified: geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ExtendedDeploymentManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ExtendedDeploymentManager.java?rev=1142905&r1=1142904&r2=1142905&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ExtendedDeploymentManager.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ExtendedDeploymentManager.java Tue Jul  5 07:11:03 2011
@@ -339,4 +339,14 @@ public abstract class ExtendedDeployment
             kernel.getProxyManager().destroyProxy(recorder);
         }
     }
+    
+    @Override
+    public long getBundleId(String symbolicName, String version) {
+        BundleRecorder recorder = getBundleRecorder();
+        try {
+            return recorder.getBundleId(symbolicName, version);
+        } finally {
+            kernel.getProxyManager().destroyProxy(recorder);
+        }
+    }
 }