Author: bdelacretaz
Date: Wed Apr  6 15:16:11 2011
New Revision: 1089486

URL: http://svn.apache.org/viewvc?rev=1089486&view=rev
Log:
STANBOL-146 - WebConsolePlugin added

Added:
    
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
   (with props)
Modified:
    incubator/stanbol/trunk/commons/stanboltools/datafileprovider/pom.xml
    
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/DataFileProviderEvent.java
    
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
    
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/resources/OSGI-INF/metatype/metatype.properties

Modified: incubator/stanbol/trunk/commons/stanboltools/datafileprovider/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/stanboltools/datafileprovider/pom.xml?rev=1089486&r1=1089485&r2=1089486&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/stanboltools/datafileprovider/pom.xml 
(original)
+++ incubator/stanbol/trunk/commons/stanboltools/datafileprovider/pom.xml Wed 
Apr  6 15:16:11 2011
@@ -75,5 +75,9 @@
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.scr.annotations</artifactId>
     </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
   </dependencies>
 </project>

Modified: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/DataFileProviderEvent.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/DataFileProviderEvent.java?rev=1089486&r1=1089485&r2=1089486&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/DataFileProviderEvent.java
 (original)
+++ 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/DataFileProviderEvent.java
 Wed Apr  6 15:16:11 2011
@@ -25,16 +25,14 @@ public class DataFileProviderEvent {
     private final String bundleSymbolicName;
     private final String filename;
     private final String downloadExplanation;
-    private final String loadingClass;
     private final String actualFileLocation;
     
     public DataFileProviderEvent(String bundleSymbolicName, String filename, 
String downloadExplanation, 
-            String loadingClass, String actualFileLocation) {
+            String actualFileLocation) {
         this.timestamp = new Date();
         this.bundleSymbolicName = bundleSymbolicName;
         this.filename = filename;
         this.downloadExplanation = downloadExplanation;
-        this.loadingClass = loadingClass;
         this.actualFileLocation = actualFileLocation;
     }
     
@@ -50,9 +48,6 @@ public class DataFileProviderEvent {
         sb.append(", filename=");
         sb.append(filename);
 
-        sb.append(", loadingClass=");
-        sb.append(loadingClass);
-        
         sb.append(", actualFileLocation=");
         sb.append(actualFileLocation);
         
@@ -79,12 +74,8 @@ public class DataFileProviderEvent {
         return downloadExplanation;
     }
 
-    /** @return the name of the class which provided the file */ 
-    public String getLoadingClass() {
-        return loadingClass;
-    }
-    
-    /** @return the actual location of the file that was loaded, empty if file 
was not found */ 
+    /** @return the actual location of the file that was loaded, 
+     *      null if file was not found */ 
     public String getActualFileLocation() {
         return actualFileLocation;
     }

Modified: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java?rev=1089486&r1=1089485&r2=1089486&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
 (original)
+++ 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
 Wed Apr  6 15:16:11 2011
@@ -132,7 +132,6 @@ public class MainDataFileProvider implem
             String filename, String downloadExplanation) throws IOException {
         InputStream result = null;
         String fileUrl = null;
-        String loadingClass = null;
         
         // First look for the file in our data folder,
         // with and without bundle symbolic name prefix
@@ -147,7 +146,6 @@ public class MainDataFileProvider implem
                 log.debug("File found in data files folder: {}", filename);
                 result = new FileInputStream(f);
                 fileUrl = "file://" + f.getAbsolutePath();
-                loadingClass = this.getClass().getName();
                 break;
             }
         }
@@ -169,7 +167,6 @@ public class MainDataFileProvider implem
                     log.debug("{} does not provide file {}", dfp, filename);
                 } else {
                     fileUrl = dfp.getClass().getName() + "://" + filename;
-                    loadingClass = dfp.getClass().getName();
                 }
             }
         }
@@ -177,7 +174,7 @@ public class MainDataFileProvider implem
         // Add event
         final DataFileProviderEvent event = new DataFileProviderEvent(
                 bundleSymbolicName, filename, 
-                downloadExplanation, loadingClass, fileUrl);
+                downloadExplanation, fileUrl);
         
         synchronized (events) {
             if(events.size() >= maxEvents) {

Added: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java?rev=1089486&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
 (added)
+++ 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
 Wed Apr  6 15:16:11 2011
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations 
under
+ * the License.
+ */
+package org.apache.stanbol.commons.stanboltools.datafileprovider.impl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import 
org.apache.stanbol.commons.stanboltools.datafileprovider.DataFileProviderEvent;
+import 
org.apache.stanbol.commons.stanboltools.datafileprovider.DataFileProviderLog;
+
+/** (Felix) OSGi console plugin that displays DataFileProvider events */ 
+@SuppressWarnings("serial")
+@Component
+@Service(value=javax.servlet.Servlet.class)
+@Properties({
+    @Property(name="felix.webconsole.label", value="stanbol_datafileprovider", 
propertyPrivate=true),
+    @Property(name="felix.webconsole.title", value="Stanbol Data File 
Provider", propertyPrivate=true)
+})
+public class WebConsolePlugin extends HttpServlet {
+
+    @Reference
+    private DataFileProviderLog dataFileProviderLog;
+    
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
+    throws ServletException, IOException {
+        final PrintWriter pw = response.getWriter();
+        
+        pw.println("<p class='statline ui-state-highlight'>");
+        pw.println("Last " + dataFileProviderLog.size() + " DataFileProvider 
events");
+        pw.println("</p>");
+        
+        pw.println("<table class='nicetable'>");
+        
+        final String [] labels = {
+                "timestamp",
+                "bundle/filename",
+                "actual location/download info"
+        };
+        
+        pw.println("<thead><tr>");
+        for(String label : labels) {
+            cell("th", pw, null, label);
+        }
+        pw.println("</tr></thead><tbody>");
+        
+        final SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd 
HH:mm:ss"); 
+        
+        for(DataFileProviderEvent e : dataFileProviderLog) {
+            pw.println("<tr>");
+            cell(pw, null, fmt.format(e.getTimestamp()));
+            cell(pw, 
+                    null, e.getBundleSymbolicName(), 
+                    "b", e.getFilename());
+            cell(pw, 
+                    null, e.getActualFileLocation(), 
+                    "i" , "Download info: " + e.getDownloadExplanation());
+            pw.println("</tr>");
+        }
+        pw.println("</tbody></table>");
+    }
+    
+    private static void cell(PrintWriter pw, String...content) {
+        cell("td", pw, content);
+    }
+
+    /** content parameters: tags at even indexes, content at odd indexes */
+    private static void cell(String tag, PrintWriter pw, String...content) {
+        pw.print("<");
+        pw.print(tag);
+        pw.print(">");
+        
+        final StringBuilder sb = new StringBuilder();
+        for(int i=0; i < content.length; i+= 2) {
+            if(i > 0) {
+                sb.append("<br/>\n");
+            }
+            
+            final String lineTag = content[i]; 
+            if(lineTag != null) {
+                sb.append("<").append(lineTag).append(">");
+            }
+            sb.append(content[i+1]);
+            if(lineTag != null) {
+                sb.append("</").append(lineTag).append(">");
+            }
+        } 
+        
+        pw.print(sb.toString());
+        pw.print("<");
+        pw.print(tag);
+        pw.print(">");
+    }
+}
\ No newline at end of file

Propchange: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/WebConsolePlugin.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1089486&r1=1089485&r2=1089486&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/resources/OSGI-INF/metatype/metatype.properties
 (original)
+++ 
incubator/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/resources/OSGI-INF/metatype/metatype.properties
 Wed Apr  6 15:16:11 2011
@@ -1,4 +1,4 @@
-org.apache.stanbol.commons.stanboltools.datafileprovider.impl.MainDataFileProvider.name
 = MainDataFileProvider
+org.apache.stanbol.commons.stanboltools.datafileprovider.impl.MainDataFileProvider.name
 = Stanbol Main DataFileProvider
 
org.apache.stanbol.commons.stanboltools.datafileprovider.impl.MainDataFileProvider.description
 = Provider of \
        read-only data files for Stanbol components. Delegates to other 
DataFileProviders unless the requested \
        file is found in its data files directory   


Reply via email to