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 2012/01/13 16:49:11 UTC
svn commit: r1231138 - in /sling/trunk/contrib/extensions/bgservlets: ./
src/main/java/org/apache/sling/bgservlets/impl/
src/main/java/org/apache/sling/bgservlets/impl/webconsole/
src/main/resources/OSGI-INF/metatype/
Author: bdelacretaz
Date: Fri Jan 13 15:49:10 2012
New Revision: 1231138
URL: http://svn.apache.org/viewvc?rev=1231138&view=rev
Log:
SLING-2327 - job console plugin now has same lifecyle as JobConsoleImpl, and can be optionally disabled
Removed:
sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/Activator.java
Modified:
sling/trunk/contrib/extensions/bgservlets/pom.xml
sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/JobConsoleImpl.java
sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java
sling/trunk/contrib/extensions/bgservlets/src/main/resources/OSGI-INF/metatype/metatype.properties
Modified: sling/trunk/contrib/extensions/bgservlets/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/bgservlets/pom.xml?rev=1231138&r1=1231137&r2=1231138&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/bgservlets/pom.xml (original)
+++ sling/trunk/contrib/extensions/bgservlets/pom.xml Fri Jan 13 15:49:10 2012
@@ -56,7 +56,6 @@
<Export-Package>org.apache.sling.bgservlets</Export-Package>
<Private-Package>org.apache.sling.bgservlets.impl.*</Private-Package>
<DynamicImport-Package>org.apache.felix.webconsole</DynamicImport-Package>
- <Bundle-Activator>org.apache.sling.bgservlets.impl.Activator</Bundle-Activator>
<Sling-Nodetypes>SLING-INF/nodetypes/jobdata.cnd</Sling-Nodetypes>
</instructions>
</configuration>
Modified: sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/JobConsoleImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/JobConsoleImpl.java?rev=1231138&r1=1231137&r2=1231138&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/JobConsoleImpl.java (original)
+++ sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/JobConsoleImpl.java Fri Jan 13 15:49:10 2012
@@ -28,7 +28,10 @@ import javax.jcr.Session;
import javax.jcr.query.Query;
import javax.servlet.http.HttpServletRequest;
+import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.bgservlets.ExecutionEngine;
@@ -36,11 +39,16 @@ import org.apache.sling.bgservlets.JobCo
import org.apache.sling.bgservlets.JobStatus;
import org.apache.sling.bgservlets.impl.storage.JobStorageException;
import org.apache.sling.bgservlets.impl.storage.NodeJobStatusFactory;
+import org.apache.sling.bgservlets.impl.webconsole.JobConsolePlugin;
+import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** JobConsole implementation */
-@Component
+@Component(
+ metatype=true,
+ label="%JobConsoleImpl.label",
+ description="%JobConsoleImpl.description")
@Service
public class JobConsoleImpl implements JobConsole {
@@ -54,6 +62,9 @@ public class JobConsoleImpl implements J
@Reference
private NodeJobStatusFactory jobStatusFactory;
+ @Property(boolValue=true)
+ private final static String PROP_CONSOLE_PLUGIN_ACTIVE = "console.plugin.active";
+
public Iterator<JobStatus> getJobStatus(Session session, boolean activeOnly) {
if(activeOnly) {
log.debug("activeOnly is set, getting jobs from ExecutionEngine");
@@ -68,6 +79,22 @@ public class JobConsoleImpl implements J
}
}
+ @Activate
+ protected void activate(ComponentContext ctx) {
+ final Object obj = ctx.getProperties().get(PROP_CONSOLE_PLUGIN_ACTIVE);
+ final boolean pluginActive = (obj instanceof Boolean ? (Boolean)obj : true);
+ if(pluginActive) {
+ JobConsolePlugin.initPlugin(ctx.getBundleContext(), this);
+ } else {
+ log.info("{} is false, not activating JobConsolePlugin", PROP_CONSOLE_PLUGIN_ACTIVE);
+ }
+ }
+
+ @Deactivate
+ protected void deactivate(ComponentContext ctx) {
+ JobConsolePlugin.destroyPlugin();
+ }
+
public JobStatus getJobStatus(Session session, String path) {
// Try ExecutionEngine first, persistent storage if not found
JobStatus result = executionEngine.getJobStatus(path);
Modified: sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java?rev=1231138&r1=1231137&r2=1231138&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java (original)
+++ sling/trunk/contrib/extensions/bgservlets/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java Fri Jan 13 15:49:10 2012
@@ -51,9 +51,9 @@ public class JobConsolePlugin {
public static final String TITLE = "Background Servlets & Jobs";
public static final String STATUS_EXTENSION = "html";
- public static void initPlugin(BundleContext context) {
+ public static void initPlugin(BundleContext context, JobConsole jobConsole) {
if (plugin == null) {
- Plugin tmp = new Plugin();
+ Plugin tmp = new Plugin(jobConsole);
tmp.activate(context);
plugin = tmp;
log.info("{} activated", plugin);
@@ -74,14 +74,16 @@ public class JobConsolePlugin {
@SuppressWarnings("serial")
public static final class Plugin extends AbstractWebConsolePlugin {
private ServiceRegistration serviceRegistration;
- private ServiceTracker jobConsoleTracker;
+ private final JobConsole jobConsole;
private ServiceTracker repositoryTracker;
+ public Plugin(JobConsole console) {
+ jobConsole = console;
+ }
+
public void activate(BundleContext ctx) {
super.activate(ctx);
- jobConsoleTracker = new ServiceTracker(ctx, JobConsole.class.getName(), null);
- jobConsoleTracker.open();
repositoryTracker = new ServiceTracker(ctx, SlingRepository.class.getName(), null);
repositoryTracker.open();
@@ -101,10 +103,6 @@ public class JobConsolePlugin {
serviceRegistration.unregister();
serviceRegistration = null;
}
- if (jobConsoleTracker != null) {
- jobConsoleTracker.close();
- jobConsoleTracker = null;
- }
if (repositoryTracker != null) {
repositoryTracker.close();
repositoryTracker = null;
@@ -128,11 +126,6 @@ public class JobConsolePlugin {
final PrintWriter pw = res.getWriter();
// Access required services
- final JobConsole console = (JobConsole)jobConsoleTracker.getService();
- if (console == null) {
- pw.println("No JobConsole service found");
- return;
- }
final SlingRepository repository = (SlingRepository)repositoryTracker.getService();
if(repository == null) {
pw.println("No SlingRepository service found");
@@ -141,8 +134,8 @@ public class JobConsolePlugin {
Session s = null;
try {
s = repository.loginAdministrative(repository.getDefaultWorkspace());
- processCommands(req, pw, s, console);
- renderJobs(req, pw, s, console);
+ processCommands(req, pw, s, jobConsole);
+ renderJobs(req, pw, s, jobConsole);
} catch(RepositoryException re) {
throw new ServletException("RepositoryExceptio in renderContent()", re);
} finally {
Modified: sling/trunk/contrib/extensions/bgservlets/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/bgservlets/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1231138&r1=1231137&r2=1231138&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/bgservlets/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ sling/trunk/contrib/extensions/bgservlets/src/main/resources/OSGI-INF/metatype/metatype.properties Fri Jan 13 15:49:10 2012
@@ -27,6 +27,13 @@ BackgroundServletStarterFilter.label = A
BackgroundServletStarterFilter.description = ServletFilter that runs \
requests in the background if a specific request parameter is set \
to true.
+
+JobConsoleImpl.label = Apache Sling Background Jobs Console
+JobConsoleImpl.description = Provides a simple API to manage background jobs.
+
+console.plugin.active.name = Console plugin active?
+console.plugin.active.description = Turn the Felix Web Console JobConsole \
+ plugin on or off.
background.parameter.name.name = Background request parameter name
background.parameter.name.description = Requests run in the background \