You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/02/13 18:17:21 UTC

svn commit: r1782825 - in /felix/trunk/webconsole-plugins/event: changelog.txt pom.xml src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java

Author: cziegeler
Date: Mon Feb 13 18:17:21 2017
New Revision: 1782825

URL: http://svn.apache.org/viewvc?rev=1782825&view=rev
Log:
FELIX-5510 : Remove usage of org.json form web console plugins

Modified:
    felix/trunk/webconsole-plugins/event/changelog.txt
    felix/trunk/webconsole-plugins/event/pom.xml
    felix/trunk/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java

Modified: felix/trunk/webconsole-plugins/event/changelog.txt
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/event/changelog.txt?rev=1782825&r1=1782824&r2=1782825&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/event/changelog.txt (original)
+++ felix/trunk/webconsole-plugins/event/changelog.txt Mon Feb 13 18:17:21 2017
@@ -1,3 +1,9 @@
+Changes from 1.1.4 to 1.1.6
+---------------------------
+** Improvement
+    * [FELIX-5510] - Remove usage of org.json form web console plugins
+
+
 Changes from 1.1.2 to 1.1.4
 ---------------------------
 

Modified: felix/trunk/webconsole-plugins/event/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/event/pom.xml?rev=1782825&r1=1782824&r2=1782825&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/event/pom.xml (original)
+++ felix/trunk/webconsole-plugins/event/pom.xml Mon Feb 13 18:17:21 2017
@@ -89,6 +89,9 @@
                             javax.servlet,javax.servlet.http
                         </DynamicImport-Package>
                         <Include-Resource>{maven-resources},OSGI-INF=target/classes/OSGI-INF</Include-Resource>
+                        <Embed-Dependency>
+                             org.apache.felix.utils;inline=org/apache/felix/utils/json/JSONWriter**
+                        </Embed-Dependency>
                     </instructions>
                 </configuration>
             </plugin>
@@ -128,5 +131,11 @@
             <version>4.0.0</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.utils</artifactId>
+            <version>1.9.0</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 </project>

Modified: felix/trunk/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java?rev=1782825&r1=1782824&r2=1782825&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java (original)
+++ felix/trunk/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java Mon Feb 13 18:17:21 2017
@@ -21,7 +21,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
-import java.lang.reflect.Array;
 import java.net.URL;
 import java.util.Date;
 import java.util.Dictionary;
@@ -35,6 +34,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.felix.utils.json.JSONWriter;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 
@@ -43,7 +43,7 @@ import org.osgi.service.event.EventAdmin
  */
 public class PluginServlet extends HttpServlet
 {
-    
+
     private static final String ACTION_POST = "post"; //$NON-NLS-1$
     private static final String ACTION_SEND = "send"; //$NON-NLS-1$
     private static final String ACTION_CLEAR = "clear"; //$NON-NLS-1$
@@ -55,7 +55,7 @@ public class PluginServlet extends HttpS
 
     /** Is the config admin available? */
     private volatile boolean configAdminAvailable = false;
-    
+
     private EventAdmin eventAdmin;
 
     private final String TEMPLATE;
@@ -65,7 +65,7 @@ public class PluginServlet extends HttpS
         this.collector = new EventCollector(null);
         TEMPLATE = readTemplateFile(getClass(), "/res/events.html"); //$NON-NLS-1$
     }
-    
+
     private final String readTemplateFile(final Class clazz, final String templateFile)
     {
         InputStream templateStream = getClass().getResourceAsStream(templateFile);
@@ -107,15 +107,15 @@ public class PluginServlet extends HttpS
             + clazz);
         return ""; //$NON-NLS-1$
     }
-    
+
     private static final Event newEvent(HttpServletRequest request)
     {
         String topic = request.getParameter("topic"); //$NON-NLS-1$
 
-        return new Event(topic, (Dictionary)PropertiesEditorSupport.convertProperties(request));
+        return new Event(topic, PropertiesEditorSupport.convertProperties(request));
     }
-    
-   
+
+
     /**
      * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      */
@@ -175,28 +175,23 @@ public class PluginServlet extends HttpS
         final long endTime = (events.size() == 0 ? startTime : ((EventInfo)events.get(events.size() - 1)).received);
         final float scale = (endTime == startTime ? 100.0f : 100.0f / (endTime - startTime));
 
-        pw.write("{");
+        final JSONWriter writer = new JSONWriter(pw);
+        writer.object();
+        writer.key( "status" );
+        writer.value( statusLine.toString() );
 
-        jsonKey( pw, "status" );
-        jsonValue( pw, statusLine.toString() );
-        pw.write(',');
-        jsonKey( pw, "data" );
-
-        pw.write('[');
+        writer.key( "data" );
+        writer.array();
 
         // display list in reverse order
         for ( int index = events.size() - 1; index >= 0; index-- )
         {
-            eventJson( pw, ( EventInfo ) events.get( index ), index, startTime, scale );
-            if ( index > 0 )
-            {
-                pw.write(',');
-            }
+            eventJson( writer, ( EventInfo ) events.get( index ), index, startTime, scale );
         }
 
-        pw.write(']');
+        writer.endArray();
 
-        pw.write("}"); //$NON-NLS-1$
+        writer.endObject();
     }
 
 
@@ -239,157 +234,55 @@ public class PluginServlet extends HttpS
         return null;
     }
 
-    private void jsonValue( final PrintWriter pw, final String v)
+
+    private void eventJson( JSONWriter jw, EventInfo info, int index, final long start, final float scale )
     throws IOException
     {
-        if (v == null || v.length() == 0)
-        {
-            pw.write("\"\"");
-            return;
-        }
+        final long msec = info.received - start;
 
-        pw.write('"');
-        char previousChar = 0;
-        char c;
+        // Compute color bar size and make sure the bar is visible
+        final int percent = Math.max((int)(msec * scale), 2);
 
-        for (int i = 0; i < v.length(); i += 1)
-        {
-            c = v.charAt(i);
-            switch (c)
-            {
-                case '\\':
-                case '"':
-                    pw.write('\\');
-                    pw.write(c);
-                    break;
-                case '/':
-                    if (previousChar == '<')
-                    {
-                        pw.write('\\');
-                    }
-                    pw.write(c);
-                    break;
-                case '\b':
-                    pw.write("\\b");
-                    break;
-                case '\t':
-                    pw.write("\\t");
-                    break;
-                case '\n':
-                    pw.write("\\n");
-                    break;
-                case '\f':
-                    pw.write("\\f");
-                    break;
-                case '\r':
-                    pw.write("\\r");
-                    break;
-                default:
-                    if (c < ' ')
-                    {
-                        final String hexValue = "000" + Integer.toHexString(c);
-                        pw.write("\\u");
-                        pw.write(hexValue.substring(hexValue.length() - 4));
-                    }
-                    else
-                    {
-                        pw.write(c);
-                    }
-            }
-            previousChar = c;
-        }
-        pw.write('"');
-    }
+        jw.object();
+        jw.key( "id" );
+        jw.value( String.valueOf( index ) );
 
-    private void jsonValue( final PrintWriter pw, final long l)
-    {
-        pw.write(Long.toString(l));
-    }
+        jw.key( "offset" );
+        jw.value( msec );
 
-    private void jsonKey( final PrintWriter pw, String key)
-    throws IOException
-    {
-        jsonValue( pw, key);
-        pw.write(':');
-    }
+        jw.key( "width" );
+        jw.value( percent );
 
-    private void eventJson( PrintWriter jw, EventInfo info, int index, final long start, final float scale )
-    throws IOException
-    {
-        final long msec = info.received - start;
+        jw.key( "category" );
+        jw.value( info.category );
 
-        // Compute color bar size and make sure the bar is visible
-        final int percent = Math.max((int)(msec * scale), 2);
+        jw.key( "received" );
+        jw.value( info.received );
+
+        jw.key( "topic" );
+        jw.value( info.topic );
 
-        jw.write("{");
-        jsonKey(jw, "id" );
-        jsonValue(jw, String.valueOf( index ) );
-        jw.write(',');
-        jsonKey(jw, "offset" );
-        jsonValue(jw, msec );
-        jw.write(',');
-        jsonKey(jw, "width" );
-        jsonValue(jw, percent );
-        jw.write(',');
-        jsonKey(jw, "category" );
-        jsonValue(jw, info.category );
-        jw.write(',');
-        jsonKey(jw, "received" );
-        jsonValue(jw, info.received );
-        jw.write(',');
-        jsonKey(jw, "topic" );
-        jsonValue(jw, info.topic );
         if ( info.info != null )
         {
-            jw.write(',');
-            jsonKey(jw, "info" );
-            jsonValue(jw, info.info );
-        }
-        jw.write(',');
-        jsonKey(jw, "properties" );
-        jw.write("{");
+            jw.key( "info" );
+            jw.value( info.info );
+        }
+
+        jw.key( "properties" );
+        jw.object();
         if ( info.properties != null && info.properties.size() > 0 )
         {
             final Iterator i = info.properties.entrySet().iterator();
-            boolean first = true;
             while ( i.hasNext() )
             {
                 final Map.Entry current = (Entry) i.next();
-                if ( !first)
-                {
-                    jw.write(',');
-                }
-                first = false;
-                jsonKey(jw, current.getKey().toString() );
-                final Object value = current.getValue();
-                if ( null == value )
-                {
-                  jw.write( "null" ); //$NON-NLS-1$
-                }
-                else if ( value.getClass().isArray() )
-                {
-                    // as we can't use 1.5 functionality we have to print the array ourselves
-                    final StringBuffer b = new StringBuffer("[");
-                    final int arrayLength = Array.getLength(value);
-                    for(int m=0; m<arrayLength; m++) {
-                        if ( m > 0 )
-                        {
-                            b.append(", ");
-                        }
-                        b.append( String.valueOf( Array.get(value, m) ) );
-                    }
-                    b.append(']');
-                    jsonValue(jw, b.toString());
-                }
-                else
-                {
-                    jsonValue(jw, value.toString());
-                }
+                jw.key( current.getKey().toString() );
+                jw.value(current.getValue());
             }
         }
-        jw.write("}");
+        jw.endObject();
 
-        jw.write("}");
+        jw.endObject();
     }
 
     public void updateConfiguration( Dictionary dict)