FELIX-790 - Synchronize event list
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@707577 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/EventAdminServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/EventAdminServlet.java
index 110991c..fd2e0f8 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/EventAdminServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/EventAdminServlet.java
@@ -19,8 +19,7 @@
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -96,10 +95,13 @@
// we add everything which is not a log event
if ( !event.getTopic().startsWith("org/osgi/service/log") )
{
- this.events.add(event);
- if ( events.size() > this.maxSize )
+ synchronized ( this.events )
{
- events.remove(1);
+ this.events.add(event);
+ if ( events.size() > this.maxSize )
+ {
+ events.remove(1);
+ }
}
}
}
@@ -130,9 +132,17 @@
jw.array();
- for(int i=0; i<events.size(); i++)
+ List copiedEvents;
+ synchronized ( this.events )
{
- eventJson( jw, (Event)events.get(i), i );
+ copiedEvents = new ArrayList(this.events);
+ }
+ int index = 0;
+ final Iterator i = copiedEvents.iterator();
+ while ( i.hasNext() )
+ {
+ eventJson( jw, (Event)i.next(), index );
+ index++;
}
jw.endArray();
@@ -161,8 +171,10 @@
jw.key( "properties" );
jw.object();
final String[] names = e.getPropertyNames();
- if ( names != null && names.length > 0 ) {
- for(int i=0;i<names.length;i++) {
+ if ( names != null && names.length > 0 )
+ {
+ for(int i=0;i<names.length;i++)
+ {
jw.key(names[i]);
jw.value(e.getProperty(names[i]).toString());
}
diff --git a/webconsole/src/main/resources/res/ui/events.js b/webconsole/src/main/resources/res/ui/events.js
index 76c8655..6778244 100644
--- a/webconsole/src/main/resources/res/ui/events.js
+++ b/webconsole/src/main/resources/res/ui/events.js
@@ -24,7 +24,7 @@
document.write( "</tr>" );
document.write( "<tr class='content'>" );
- document.write( "<th class='content' width='20%'>Topic</th>" );
+ document.write( "<th class='content'>Topic</th>" );
document.write( "<th class='content'>Properties</th>" );
document.write( "</tr>" );