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 2012/08/01 14:39:41 UTC
svn commit: r1367962 - in
/sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl:
LaunchpadListener.java ServicesListener.java
Author: cziegeler
Date: Wed Aug 1 12:39:41 2012
New Revision: 1367962
URL: http://svn.apache.org/viewvc?rev=1367962&view=rev
Log:
SLING-2552 : Correctly handle register/unregister of OSGi installer
Modified:
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadListener.java
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/ServicesListener.java
Modified: sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadListener.java?rev=1367962&r1=1367961&r2=1367962&view=diff
==============================================================================
--- sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadListener.java (original)
+++ sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadListener.java Wed Aug 1 12:39:41 2012
@@ -35,12 +35,29 @@ public class LaunchpadListener implement
*/
public void onEvent(final InstallationEvent event) {
if ( event.getType() == InstallationEvent.TYPE.STARTED ) {
+ this.start();
+ } else if ( event.getType() == InstallationEvent.TYPE.SUSPENDED ) {
+ this.stop();
+ }
+ }
+
+ /**
+ * Suspend the startup handler (if not already done so)
+ */
+ public void start() {
+ if ( !started ) {
this.startupHandler.waitWithStartup(true);
started = true;
- } else if ( event.getType() == InstallationEvent.TYPE.SUSPENDED ) {
- if ( started ) {
- this.startupHandler.waitWithStartup(false);
- }
+ }
+ }
+
+ /**
+ * Make sure the startup handler is not in suspended state
+ */
+ public void stop() {
+ if ( started ) {
+ this.startupHandler.waitWithStartup(false);
+ started = false;
}
}
Modified: sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/ServicesListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/ServicesListener.java?rev=1367962&r1=1367961&r2=1367962&view=diff
==============================================================================
--- sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/ServicesListener.java (original)
+++ sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/ServicesListener.java Wed Aug 1 12:39:41 2012
@@ -57,6 +57,8 @@ public class ServicesListener {
/** Boolean marker to not reprocess things. */
private volatile boolean installed = false;
+ private LaunchpadListener launchpadListener;
+
/**
* Start listeners
*/
@@ -84,7 +86,7 @@ public class ServicesListener {
if ( installer != null && lcp != null && handler != null ) {
if ( !this.installed ) {
this.installed = true;
- final LaunchpadListener launchpadListener = new LaunchpadListener(handler);
+ this.launchpadListener = new LaunchpadListener(handler);
final Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling Launchpad Startup Listener");
props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
@@ -102,9 +104,11 @@ public class ServicesListener {
this.providerListener.deactivate();
this.startupListener.deactivate();
if ( this.launchpadListenerReg != null ) {
+ this.launchpadListener.stop();
this.launchpadListenerReg.unregister();
this.launchpadListenerReg = null;
}
+ this.launchpadListener = null;
}
/**