Author: cziegeler
Date: Thu Jan 13 09:25:14 2011
New Revision: 1058472

URL: http://svn.apache.org/viewvc?rev=1058472&view=rev
Log:
SLING-755 : Web Console Plugin for the OSGi Installer

Modified:
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Activator.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Activator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Activator.java?rev=1058472&r1=1058471&r2=1058472&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Activator.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Activator.java
 Thu Jan 13 09:25:14 2011
@@ -40,7 +40,7 @@ import org.osgi.framework.ServiceRegistr
 public class Activator implements BundleActivator {
 
     /** Vendor of all registered services. */
-    private static final String VENDOR = "The Apache Software Foundation";
+    public static final String VENDOR = "The Apache Software Foundation";
 
     private List<InternalService> services = new ArrayList<InternalService>();
     private List<ServiceRegistration> registrations = new 
ArrayList<ServiceRegistration>();

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java?rev=1058472&r1=1058471&r2=1058472&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java
 Thu Jan 13 09:25:14 2011
@@ -20,6 +20,7 @@ package org.apache.sling.installer.core.
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Hashtable;
 import java.util.List;
@@ -30,6 +31,7 @@ import javax.servlet.ServletResponse;
 
 import org.apache.sling.installer.api.tasks.RegisteredResource;
 import org.apache.sling.installer.api.tasks.TaskResource;
+import org.apache.sling.installer.core.impl.Activator;
 import org.apache.sling.installer.core.impl.EntityResourceList;
 import org.apache.sling.installer.core.impl.OsgiInstallerImpl;
 import org.osgi.framework.BundleContext;
@@ -49,7 +51,7 @@ public class OsgiInstallerWebConsolePlug
         props.put("felix.webconsole.label", "osgi-installer");
         props.put("felix.webconsole.title", "OSGi Installer");
         props.put("felix.webconsole.configprinter.modes", new String[] {"zip", 
"txt"});
-        props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
+        props.put(Constants.SERVICE_VENDOR, Activator.VENDOR);
         props.put(Constants.SERVICE_DESCRIPTION,
             "OSGi Installer Web Console Plugin");
         return bundleContext.registerService("javax.servlet.Servlet", plugin,
@@ -61,27 +63,60 @@ public class OsgiInstallerWebConsolePlug
         this.installer = installer;
     }
 
+    /**
+     * Internal class to collect the current state.
+     */
+    private static final class State {
+        public final List<EntityResourceList> activeResources = new 
ArrayList<EntityResourceList>();
+        public final List<EntityResourceList> installedResources = new 
ArrayList<EntityResourceList>();
+        public final List<RegisteredResource> untransformedResources = new 
ArrayList<RegisteredResource>();
+    }
+
+    /**
+     * Get the current installer state.
+     * This method should be called from within a synchronized block for the 
resources!
+     */
+    private State getCurrentState() {
+        final State state = new State();
+
+        for(final String entityId : 
this.installer.getPersistentResourceList().getEntityIds()) {
+            final EntityResourceList group = 
this.installer.getPersistentResourceList().getEntityResourceList(entityId);
+            if ( group.getActiveResource() != null ) {
+                state.activeResources.add(group);
+            } else {
+                state.installedResources.add(group);
+            }
+        }
+        
state.untransformedResources.addAll(this.installer.getPersistentResourceList().getUntransformedResources());
+
+        return state;
+    }
+
     @Override
     public void service(ServletRequest req, ServletResponse res)
     throws IOException {
 
         final PrintWriter pw = res.getWriter();
 
-        pw.println("<h1>Entities</h1>");
-        pw.println("<ul>");
         synchronized ( this.installer.getResourcesLock() ) {
-            Collection<String> entities = 
this.installer.getPersistentResourceList().getEntityIds();
-            for (String entityId : entities) {
-                EntityResourceList erl = 
this.installer.getPersistentResourceList().getEntityResourceList(entityId);
-                TaskResource registeredResource = erl.getActiveResource();
-                if (registeredResource != null) {
-                    pw.printf("<li>%s: %s, %s, %s%n",
-                        registeredResource.getEntityId(),
-                        registeredResource.getDigest(),
-                        registeredResource.getScheme(),
-                        registeredResource.getState());
-                }
-                Collection<TaskResource> resources = erl.getResources();
+            final State state = this.getCurrentState();
+
+            pw.println("<h1>Active Resources</h1>");
+            pw.println("<ul>");
+            for(final EntityResourceList group : state.activeResources) {
+                final TaskResource toActivate = group.getActiveResource();
+                pw.printf("<li>%s: %s, %s, %s</li>%n",
+                        toActivate.getEntityId(),
+                        toActivate.getDigest(),
+                        toActivate.getScheme(),
+                        toActivate.getState());
+            }
+            pw.println("</ul>");
+
+            pw.println("<h1>Installed Resources</h1>");
+            pw.println("<ul>");
+            for(final EntityResourceList group : state.installedResources) {
+                final Collection<TaskResource> resources = 
group.getResources();
                 if (resources.size() > 0) {
                     pw.println("<ul>");
                     for (TaskResource resource : resources) {
@@ -91,11 +126,17 @@ public class OsgiInstallerWebConsolePlug
                     }
                     pw.println("</ul>");
                 }
-                pw.println("</li>");
             }
             pw.println("</ul>");
 
-            printUnknownResources(pw, 
this.installer.getPersistentResourceList().getUntransformedResources());
+            pw.println("<h1>Untransformed Resources</h1>");
+            pw.println("<ul>");
+            for(final RegisteredResource registeredResource : 
state.untransformedResources) {
+                pw.printf("<li>%s: %s, %s</li>%n",
+                    registeredResource.getEntityId(),
+                    registeredResource.getDigest(), 
registeredResource.getScheme());
+            }
+            pw.println("</ul>");
         }
     }
 
@@ -108,48 +149,40 @@ public class OsgiInstallerWebConsolePlug
         }
         pw.println("Apache Sling OSGi Installer");
         pw.println("===========================");
-        pw.println("Entities:");
         synchronized ( this.installer.getResourcesLock() ) {
-            Collection<String> entities = 
this.installer.getPersistentResourceList().getEntityIds();
-            for (String entityId : entities) {
-                EntityResourceList erl = 
this.installer.getPersistentResourceList().getEntityResourceList(entityId);
-                TaskResource registeredResource = erl.getActiveResource();
-                if (registeredResource != null) {
-                    pw.printf("- %s: %s, %s, %s%n",
-                        registeredResource.getEntityId(),
-                        registeredResource.getDigest(),
-                        registeredResource.getScheme(),
-                        registeredResource.getState());
-                }
-                Collection<TaskResource> resources = erl.getResources();
+            final State state = this.getCurrentState();
+            pw.println("Active Resources:");
+            for(final EntityResourceList group : state.activeResources) {
+                final TaskResource toActivate = group.getActiveResource();
+                pw.printf("- %s: %s, %s, %s%n",
+                        toActivate.getEntityId(),
+                        toActivate.getDigest(),
+                        toActivate.getScheme(),
+                        toActivate.getState());
+            }
+            pw.println();
+
+            pw.println("Installed Resources:");
+            for(final EntityResourceList group : state.installedResources) {
+                final Collection<TaskResource> resources = 
group.getResources();
                 if (resources.size() > 0) {
+                    pw.print("* ");
                     for (TaskResource resource : resources) {
                         pw.printf("- %s: %s, %s, %s%n",
                             resource.getEntityId(), resource.getDigest(),
                             resource.getScheme(), resource.getState());
                     }
+                    pw.println("</ul>");
                 }
             }
-
             pw.println();
+
             pw.println("Untransformed Resources:");
-            for (RegisteredResource registeredResource : 
this.installer.getPersistentResourceList().getUntransformedResources()) {
+            for(final RegisteredResource registeredResource : 
state.untransformedResources) {
                 pw.printf("- %s: %s, %s%n",
                     registeredResource.getEntityId(),
                     registeredResource.getDigest(), 
registeredResource.getScheme());
             }
         }
     }
-
-    private void printUnknownResources(final PrintWriter pw,
-            final List<RegisteredResource> unknown) {
-        pw.println("<h1>Untransformed Resources</h1>");
-        pw.println("<ul>");
-        for (RegisteredResource registeredResource : unknown) {
-            pw.printf("<li>%s: %s, %s</li>%n",
-                registeredResource.getEntityId(),
-                registeredResource.getDigest(), 
registeredResource.getScheme());
-        }
-        pw.println("</ul>");
-    }
 }


Reply via email to