Author: cziegeler
Date: Wed Nov 16 07:05:33 2011
New Revision: 1202555

URL: http://svn.apache.org/viewvc?rev=1202555&view=rev
Log:
SLING-2288 : Bundle jar is silently ignored by the installer if MANIFEST.MF is 
not the first file in the archive

Modified:
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/SynchronousRefreshPackagesTask.java

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java?rev=1202555&r1=1202554&r2=1202555&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
 Wed Nov 16 07:05:33 2011
@@ -156,7 +156,7 @@ public class BundleTaskCreator implement
 
            // check if symbolic name and version is provided in the attributes
         if ( toActivate.getAttribute(Constants.BUNDLE_SYMBOLICNAME) == null ) {
-            final Util.BundleHeaders headers = 
Util.readBundleHeaders(toActivate);
+            final Util.BundleHeaders headers = 
Util.readBundleHeaders(toActivate, logger);
             if ( headers == null ) {
                 logger.info("Resource of type bundle {} is not really a bundle 
- manifest entries are missing.", toActivate);
                 return new ChangeStateTask(resourceList, 
ResourceState.IGNORED);

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/SynchronousRefreshPackagesTask.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/SynchronousRefreshPackagesTask.java?rev=1202555&r1=1202554&r2=1202555&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/SynchronousRefreshPackagesTask.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/SynchronousRefreshPackagesTask.java
 Wed Nov 16 07:05:33 2011
@@ -24,9 +24,11 @@ import org.apache.sling.installer.core.i
 import org.osgi.framework.Bundle;
 import org.osgi.framework.FrameworkEvent;
 import org.osgi.framework.FrameworkListener;
-import org.osgi.service.packageadmin.PackageAdmin;
 
-/** Execute an OSGi "refresh packages" operation, synchronously */
+/**
+ * Execute an OSGi "refresh packages" operation, synchronously
+ * by waiting until a package refresh event occurs.
+ */
 public class SynchronousRefreshPackagesTask extends AbstractInstallTask 
implements FrameworkListener {
 
     /** Tracker for the package admin. */
@@ -34,10 +36,14 @@ public class SynchronousRefreshPackagesT
 
     private static final String REFRESH_PACKAGES_ORDER = "60-";
 
-    /** Max time allowed to refresh packages (TODO configurable??) */
-    public static final int MAX_REFRESH_PACKAGES_WAIT_SECONDS = 30;
+    /** Max time allowed to refresh packages */
+    private static final int MAX_REFRESH_PACKAGES_WAIT_SECONDS = 30;
 
-       private volatile int packageRefreshEventsCount;
+    /** Max time between the checks if the event has occured */
+    private static final long MAX_SLEEP = 250L;
+
+    /** Counter for package refresh events. */
+    private volatile int packageRefreshEventsCount;
 
        public SynchronousRefreshPackagesTask(final BundleTaskCreator btc) {
            super(null);
@@ -68,10 +74,6 @@ public class SynchronousRefreshPackagesT
                return getClass().getSimpleName();
        }
 
-    private PackageAdmin getPackageAdmin() {
-        return this.bundleTaskCreator.getPackageAdmin();
-    }
-
     /**
      * @see 
org.apache.sling.installer.api.tasks.InstallTask#execute(org.apache.sling.installer.api.tasks.InstallationContext)
      */
@@ -96,22 +98,23 @@ public class SynchronousRefreshPackagesT
         // if one happened very recently and there's nothing to refresh
         this.bundleTaskCreator.getBundleContext().addFrameworkListener(this);
         try {
-            this.getPackageAdmin().refreshPackages(null);
-            while(true) {
-                if(System.currentTimeMillis() > timeout) {
+            this.bundleTaskCreator.getPackageAdmin().refreshPackages(null);
+            while (true) {
+                if (System.currentTimeMillis() > timeout) {
                     this.getLogger().warn("No 
FrameworkEvent.PACKAGES_REFRESHED event received within {}"
                                                + " seconds after refresh", 
MAX_REFRESH_PACKAGES_WAIT_SECONDS);
                     break;
                 }
-                if(packageRefreshEventsCount >= targetEventCount) {
+                if (packageRefreshEventsCount >= targetEventCount) {
                     final long delta = System.currentTimeMillis() - start;
                     this.getLogger().debug("FrameworkEvent.PACKAGES_REFRESHED 
received {}"
                                                + " msec after refreshPackages 
call", delta);
                     break;
                 }
                 try {
-                    Thread.sleep(250L);
-                } catch(InterruptedException ignore) {
+                    Thread.sleep(MAX_SLEEP);
+                } catch (final InterruptedException ignore) {
+                    // ignore
                 }
             }
         } finally {


Reply via email to