incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jus...@apache.org
Subject svn commit: r1302996 - /sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java
Date Tue, 20 Mar 2012 16:58:56 GMT
Author: justin
Date: Tue Mar 20 16:58:56 2012
New Revision: 1302996

URL: http://svn.apache.org/viewvc?rev=1302996&view=rev
Log:
SLING-2442 - adding JSP tag lib configuration printer

Modified:
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java?rev=1302996&r1=1302995&r2=1302996&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingTldLocationsCache.java
Tue Mar 20 16:58:56 2012
@@ -17,11 +17,15 @@
 package org.apache.sling.scripting.jsp;
 
 import java.io.InputStream;
+import java.io.PrintWriter;
 import java.net.URL;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
+import java.util.SortedMap;
+import java.util.TreeMap;
 
 import org.apache.sling.scripting.jsp.jasper.JasperException;
 import org.apache.sling.scripting.jsp.jasper.compiler.TldLocationsCache;
@@ -31,6 +35,7 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleListener;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * The <code>SlingTldLocationsCache</code> TODO
@@ -42,7 +47,12 @@ public class SlingTldLocationsCache
 
     private final Map<String, TldLocationEntry> tldLocations = new HashMap<String,
TldLocationEntry>();
 
+    private ServiceRegistration serviceRegistration;
+
+    private final BundleContext bundleContext;
+
     public SlingTldLocationsCache(final BundleContext context) {
+        this.bundleContext = context;
         context.addBundleListener(this);
         final Bundle[] bundles = context.getBundles();
         for (int i = 0; i < bundles.length; i++) {
@@ -50,9 +60,21 @@ public class SlingTldLocationsCache
                 addBundle(bundles[i]);
             }
         }
+        
+        Properties tldConfigPrinterProperties = new Properties();
+        tldConfigPrinterProperties.setProperty("felix.webconsole.label", "jsptaglibs");
+        tldConfigPrinterProperties.setProperty("felix.webconsole.title", "JSP Taglibs");
+        tldConfigPrinterProperties.setProperty("felix.webconsole.configprinter.modes", "always");
+        this.serviceRegistration = context.registerService(Object.class.getName(),
+            this, tldConfigPrinterProperties);
+
     }
 
     public void deactivate(final BundleContext context) {
+        if (this.serviceRegistration != null) {
+            this.serviceRegistration.unregister();
+            this.serviceRegistration = null;
+        }
         context.removeBundleListener(this);
     }
 
@@ -161,6 +183,27 @@ public class SlingTldLocationsCache
         return null;
     }
 
+    public void printConfiguration(final PrintWriter pw) {
+        pw.println("Currently available JSP Taglibs:");
+        final SortedMap<String, String> taglibs = new TreeMap<String, String>();
+        
+        for (final Map.Entry<String, TldLocationEntry> entry : tldLocations.entrySet())
{
+            final long bundleId = entry.getValue().getBundleId();
+            final Bundle bundle = bundleContext.getBundle(bundleId);
+            if (bundle != null) {
+                taglibs.put(entry.getKey(), String.format("%s (%s)", bundle.getSymbolicName(),
bundleId));
+            } else {
+                // really shouldn't happen
+                taglibs.put(entry.getKey(), String.format("INVALID BUNDLE ID: %s", bundleId));
+            }
+        }
+        
+        for (final Map.Entry<String, String> entry : taglibs.entrySet()) {
+            pw.printf("  %s - %s\n", entry.getKey(), entry.getValue());
+        }
+    }
+
+
     private static final class TldLocationEntry {
         private final long bundleId;
 



Mime
View raw message