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