You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2011/11/16 08:05:33 UTC
svn commit: r1202555 - in
/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks:
BundleTaskCreator.java SynchronousRefreshPackagesTask.java
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 {