You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2010/02/03 17:20:53 UTC

svn commit: r906108 - in /sling/trunk/installer/osgi/installer/src: main/java/org/apache/sling/osgi/installer/impl/ main/java/org/apache/sling/osgi/installer/impl/tasks/ test/java/org/apache/sling/osgi/installer/impl/

Author: bdelacretaz
Date: Wed Feb  3 16:20:52 2010
New Revision: 906108

URL: http://svn.apache.org/viewvc?rev=906108&view=rev
Log:
SLING-1346 - BundleUpdateTask checks for null InputStream, and more data file logging in RegisteredResourceImpl

Modified:
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResource.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceImpl.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java
    sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/LocalFileRegisteredResource.java
    sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockBundleResource.java
    sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java
    sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceTest.java
    sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/TaskOrderingTest.java

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java Wed Feb  3 16:20:52 2010
@@ -120,7 +120,7 @@
 	public void addResource(InstallableResource r) {
 	    RegisteredResource rr = null; 
         try {
-            rr = new RegisteredResourceImpl(bundleContext, r);
+            rr = new RegisteredResourceImpl(this, r);
         } catch(IOException ioe) {
             if(getLogService() != null) {
                 getLogService().log(

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java Wed Feb  3 16:20:52 2010
@@ -181,7 +181,7 @@
         for(InstallableResource r : data) {
             RegisteredResource rr =  null;
             try {
-                rr = new RegisteredResourceImpl(bundleContext, r);
+                rr = new RegisteredResourceImpl(ctx, r);
             } catch(IOException ioe) {
                 if(ctx.getLogService() != null) {
                     ctx.getLogService().log(
@@ -271,7 +271,7 @@
                 			if(ctx.getLogService()!= null) {
                 				ctx.getLogService().log(LogService.LOG_DEBUG, "Cleanup obsolete " + rr);
                 			}
-                			rr.cleanup(ctx.getBundleContext());
+                			rr.cleanup(ctx);
                 		}
                 	}
                     t.remove(r);
@@ -379,7 +379,7 @@
             }
             for(RegisteredResource r : toDelete) {
                 group.remove(r);
-                r.cleanup(ctx.getBundleContext());
+                r.cleanup(ctx);
                 if(ctx.getLogService() != null) {
                     ctx.getLogService().log(LogService.LOG_DEBUG,
                             "Removing RegisteredResource from list, not installable and has been processed: " + r);

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResource.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResource.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResource.java Wed Feb  3 16:20:52 2010
@@ -42,7 +42,7 @@
 	public static final String ENTITY_BUNDLE_PREFIX = "bundle:";
 	public static final String ENTITY_CONFIG_PREFIX = "config:";
 	
-	void cleanup(BundleContext bc);
+	void cleanup(OsgiInstallerContext ctx);
 	String getURL();
 	InputStream getInputStream(BundleContext bc) throws IOException;
 	Dictionary<String, Object> getDictionary();

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceImpl.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceImpl.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceImpl.java Wed Feb  3 16:20:52 2010
@@ -44,6 +44,7 @@
 import org.apache.sling.osgi.installer.impl.propertyconverter.PropertyValue;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
+import org.osgi.service.log.LogService;
 
 /** A resource that's been registered in the OSGi controller.
  * 	Data can be either an InputStream or a Dictionary, and we store
@@ -79,8 +80,9 @@
 	 *  maps to a configuration and the data provides an input stream, it is
 	 *  converted to a Dictionary
 	 */
-	public RegisteredResourceImpl(BundleContext ctx, InstallableResource input) throws IOException {
+	public RegisteredResourceImpl(OsgiInstallerContext osgiCtx, InstallableResource input) throws IOException {
 
+	    final BundleContext ctx = osgiCtx.getBundleContext();
 	    try {
     		url = input.getUrl();
     		urlScheme = getUrlScheme(url);
@@ -97,7 +99,12 @@
                     throw new IllegalArgumentException("InputStream is required for BUNDLE resource type: " + input);
                 }
                 dictionary = null;
-                copyToLocalStorage(input.getInputStream(), getDataFile(ctx));
+                final File f = getDataFile(ctx);
+                if(osgiCtx.getLogService() != null) {
+                    osgiCtx.getLogService().log(LogService.LOG_DEBUG, 
+                            "Copying data to local storage " + f.getAbsolutePath());
+                }
+                copyToLocalStorage(input.getInputStream(), f);
                 hasDataFile = true;
                 digest = input.getDigest();
                 setAttributesFromManifest(ctx);
@@ -144,9 +151,13 @@
 		return ctx.getDataFile(filename);
 	}
 
-	public void cleanup(BundleContext bc) {
-	    final File dataFile = getDataFile(bc);
+	public void cleanup(OsgiInstallerContext ctx) {
+	    final File dataFile = getDataFile(ctx.getBundleContext());
 		if(dataFile.exists()) {
+		    if(ctx.getLogService() != null) {
+		        ctx.getLogService().log(LogService.LOG_DEBUG, "Deleting local storage file " 
+		                + dataFile.getAbsolutePath());
+		    } 
 			dataFile.delete();
 		}
 	}

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java Wed Feb  3 16:20:52 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.osgi.installer.impl.tasks;
 
+import java.io.InputStream;
+
 import org.apache.sling.osgi.installer.OsgiInstaller;
 import org.apache.sling.osgi.installer.impl.OsgiInstallerContext;
 import org.apache.sling.osgi.installer.impl.OsgiInstallerTask;
@@ -92,7 +94,13 @@
             ctx.addTaskToCurrentCycle(new BundleStartTask(b.getBundleId()));
         }
         b.stop();
-        b.update(resource.getInputStream(ctx.getBundleContext()));
+        final InputStream is = resource.getInputStream(ctx.getBundleContext());
+        if(is == null) {
+            throw new IllegalStateException(
+                    "RegisteredResource provides null InputStream, cannot update bundle: "
+                    + resource);
+        }
+        b.update(is);
         ctx.saveInstalledBundleInfo(b, resource.getDigest(), newVersion.toString());
         ctx.addTaskToCurrentCycle(new SynchronousRefreshPackagesTask());
         if(ctx.getLogService() != null) {

Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/LocalFileRegisteredResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/LocalFileRegisteredResource.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/LocalFileRegisteredResource.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/LocalFileRegisteredResource.java Wed Feb  3 16:20:52 2010
@@ -29,7 +29,7 @@
 	private File storage;
 	
 	LocalFileRegisteredResource(InstallableResource r) throws IOException {
-		super(null, r);
+		super(new MockOsgiInstallerContext(), r);
 	}
 	
 	@Override

Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockBundleResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockBundleResource.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockBundleResource.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockBundleResource.java Wed Feb  3 16:20:52 2010
@@ -76,7 +76,7 @@
         ;
 	}
 	
-	public void cleanup(BundleContext ctx) {
+	public void cleanup(OsgiInstallerContext ctx) {
 	}
 
 	public Map<String, Object> getAttributes() {

Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java Wed Feb  3 16:20:52 2010
@@ -50,7 +50,7 @@
         }
         final InstallableResource r = new InstallableResource("test:" + url, data);
         r.setPriority(priority);
-        return new RegisteredResourceImpl(null, r);
+        return new RegisteredResourceImpl(new MockOsgiInstallerContext(), r);
     }
     
     private void assertOrder(RegisteredResource[] inOrder) {

Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceTest.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceTest.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceTest.java Wed Feb  3 16:20:52 2010
@@ -175,7 +175,7 @@
         };
         for(String url : badOnes) {
             try {
-                new RegisteredResourceImpl(null, new InstallableResource(url, s, null));
+                new RegisteredResourceImpl(new MockOsgiInstallerContext(), new InstallableResource(url, s, null));
                 fail("Expected bad URL '" + url + "' to throw IllegalArgumentException");
             } catch(IllegalArgumentException asExpected) {
             }
@@ -189,7 +189,8 @@
         };
         
         for(String url : goodOnes) {
-            final RegisteredResource r = new RegisteredResourceImpl(null, new InstallableResource(url, s, "digest1"));
+            final RegisteredResource r = new RegisteredResourceImpl(new MockOsgiInstallerContext(), 
+                    new InstallableResource(url, s, "digest1"));
             assertEquals("Expected scheme 'foo' for URL " + url, "foo", r.getUrlScheme());
         }
     }

Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/TaskOrderingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/TaskOrderingTest.java?rev=906108&r1=906107&r2=906108&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/TaskOrderingTest.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/TaskOrderingTest.java Wed Feb  3 16:20:52 2010
@@ -49,7 +49,7 @@
 	}
 	
 	private static RegisteredResource getRegisteredResource(String url) throws IOException {
-		return new RegisteredResourceImpl(null, new InstallableResource(url, new Hashtable<String, Object>()));
+		return new RegisteredResourceImpl(new MockOsgiInstallerContext(), new InstallableResource(url, new Hashtable<String, Object>()));
 	}
 	
 	private void assertOrder(int testId, Collection<OsgiInstallerTask> actual, OsgiInstallerTask [] expected) {