You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ps...@apache.org on 2008/02/19 06:32:26 UTC

svn commit: r628993 - in /labs/pinpoint/trunk: ./ pinpoint-cli/ pinpoint-core/ pinpoint-core/src/main/java/org/apache/logging/pinpoint/concurrent/ pinpoint-importer/ pinpoint-loadgenerator/ pinpoint-metric/ pinpoint-reports/src/main/java/org/apache/log...

Author: psmith
Date: Mon Feb 18 21:32:01 2008
New Revision: 628993

URL: http://svn.apache.org/viewvc?rev=628993&view=rev
Log:
Tidied up poms to have top-level version properties for major dependencies (allows easier upgrades).
Not everything done, just major apache projects and spring.

Added LocalConnectionFactory and caching implementations.  Local Swing GUI is now reasonably useful.

Some refactoring to move common code.

Updated README file for new people to point out that the log4j sub-projects do not need to be downloaded and built,
they are now available from a people.apache.org Maven repository while they're in SNAPSHOT status.  Still that flamin'
JMX though that can't be worked around (*shakes fist at Suni licensing*).


Added:
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/concurrent/
      - copied from r613063, labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/concurrent/
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/concurrent/BaseNameDaemonThreadFatory.java
      - copied unchanged from r628992, labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/concurrent/BaseNameDaemonThreadFatory.java
    labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/CommonTimePatterns.java
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingConnectionFactory.java
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingPinpointConnection.java
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnectionFactory.java
    labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointSearchStatusBar.java
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/org/
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/org/apache/
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/org/apache/logging/
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/org/apache/logging/pinpoint/
    labs/pinpoint/trunk/pinpoint-swing/src/main/resources/org/apache/logging/pinpoint/swing/
Removed:
    labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/concurrent/
Modified:
    labs/pinpoint/trunk/   (props changed)
    labs/pinpoint/trunk/.classpath
    labs/pinpoint/trunk/README.txt
    labs/pinpoint/trunk/pinpoint-cli/pom.xml
    labs/pinpoint/trunk/pinpoint-core/pom.xml
    labs/pinpoint/trunk/pinpoint-importer/pom.xml
    labs/pinpoint/trunk/pinpoint-loadgenerator/pom.xml
    labs/pinpoint/trunk/pinpoint-metric/pom.xml
    labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/InputStreamTimeSeriesDataSetParser.java
    labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/PinpointStreamingGraphServer.java
    labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/TimeSeriesCollectionSeriesProvider.java
    labs/pinpoint/trunk/pinpoint-search/pom.xml
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/LocalConnectionFactory.java
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnection.java
    labs/pinpoint/trunk/pinpoint-service/pom.xml
    labs/pinpoint/trunk/pinpoint-swing/   (props changed)
    labs/pinpoint/trunk/pinpoint-swing/pom.xml
    labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/LoggingEventTableModel.java
    labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointConnectionSearchPanel.java
    labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/Startup.java
    labs/pinpoint/trunk/pinpoint-web/pom.xml
    labs/pinpoint/trunk/pom.xml

Propchange: labs/pinpoint/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Feb 18 21:32:01 2008
@@ -2,3 +2,4 @@
 .settings
 activemq-data
 derbydb
+derby.log

Modified: labs/pinpoint/trunk/.classpath
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/.classpath?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/.classpath (original)
+++ labs/pinpoint/trunk/.classpath Mon Feb 18 21:32:01 2008
@@ -30,6 +30,7 @@
 	<classpathentry kind="src" path="pinpoint-reports/src/test/java"/>
 	<classpathentry kind="src" path="pinpoint-swing/src/main/java"/>
 	<classpathentry kind="src" path="pinpoint-swing/src/test/java"/>
+	<classpathentry kind="src" path="pinpoint-swing/src/main/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.devzuz.q.maven.jdt.core.mavenClasspathContainer"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER/modules"/>

Modified: labs/pinpoint/trunk/README.txt
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/README.txt?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/README.txt (original)
+++ labs/pinpoint/trunk/README.txt Mon Feb 18 21:32:01 2008
@@ -39,15 +39,16 @@
 
 
 
-Step 2 - Install log4j companions
+Step 2 - Note use of log4j SNAPSHOTS
 =========================
-Additionally, while some log4j componentry is not officially released and available in the Maven repositories, you will also need:
+This project makes use of 2 log4j sub-projects that are not officially released.  Maven Snapshot artifacts for them
+have been made available via:
 
-	log4j-component - http://svn.apache.org/repos/asf/logging/log4j/companions/component/trunk/
-	log4j-receivers - http://svn.apache.org/repos/asf/logging/log4j/companions/receivers/trunk/
+http://people.apache.org/www/people.apache.org/builds/logging/repo/
 
-You need to 'mvn install' the above projects into your local repository before continuing on.  Once these projects are officially released, 
-there will be no need to perform these steps manually.
+using log4j-component and log4j-receivers sub-projects.  
+
+Nothing for you to do here except take note.
 
 Step 3 - Build Pinpoint (finally, thanks for your patience! :) )
 ================================================================

Modified: labs/pinpoint/trunk/pinpoint-cli/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-cli/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-cli/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-cli/pom.xml Mon Feb 18 21:32:01 2008
@@ -62,7 +62,7 @@
 		<dependency>
 			<groupId>commons-cli</groupId>
 			<artifactId>commons-cli</artifactId>
-			<version>${commonscli.version}</version>
+			<version>${commons.cli.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>jline</groupId>
@@ -72,7 +72,7 @@
 		<dependency>
 			<groupId>commons-lang</groupId>
 			<artifactId>commons-lang</artifactId>
-			<version>2.2</version>
+			<version>${commons.lang.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.logging</groupId>
@@ -97,7 +97,7 @@
 		<dependency>
 			<groupId>commons-collections</groupId>
 			<artifactId>commons-collections</artifactId>
-			<version>3.2</version>
+			<version>${commons.collections.version}</version>
 		</dependency>
 	</dependencies>
 </project>

Modified: labs/pinpoint/trunk/pinpoint-core/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-core/pom.xml Mon Feb 18 21:32:01 2008
@@ -45,32 +45,27 @@
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
-      <version>2.2</version>
+      <version>${commons.lang.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
-      <version>1.2</version>
+      <version>${commons.io.version}</version>
     </dependency>
     <dependency>
       <groupId>joda-time</groupId>
       <artifactId>joda-time</artifactId>
-      <version>1.4</version>
+      <version>${joda.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
-      <version>${commonscli.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>joda-time</groupId>
-      <artifactId>joda-time</artifactId>
-      <version>1.4</version>
+      <version>${commons.cli.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections</artifactId>
-      <version>3.2</version>
+      <version>${commons.collections.version}</version>
     </dependency>
 	<dependency>
 	    <groupId>hsqldb</groupId>
@@ -80,7 +75,7 @@
 	<dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring</artifactId>
-      <version>2.0.5</version>
+      <version>${spring.version}</version>
       <exclusions>
         <exclusion>
           <groupId>log4j</groupId>

Modified: labs/pinpoint/trunk/pinpoint-importer/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-importer/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-importer/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-importer/pom.xml Mon Feb 18 21:32:01 2008
@@ -56,7 +56,7 @@
 		<dependency>
 			<groupId>commons-cli</groupId>
 			<artifactId>commons-cli</artifactId>
-			<version>1.1</version>
+			<version>${commons.cli.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>log4j</groupId>
@@ -76,7 +76,7 @@
 		<dependency>
 			<groupId>jline</groupId>
 			<artifactId>jline</artifactId>
-			<version>0.9.91</version>
+			<version>${jline.version}</version>
 		</dependency>
 	</dependencies>
 </project>

Modified: labs/pinpoint/trunk/pinpoint-loadgenerator/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-loadgenerator/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-loadgenerator/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-loadgenerator/pom.xml Mon Feb 18 21:32:01 2008
@@ -51,12 +51,12 @@
     <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
-      <version>1.1</version>
+      <version>${commons.cli.version}</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
-      <version>1.2.15-SNAPSHOT</version>
+      <version>${log4j.version}</version>
     </dependency>
   </dependencies>
 </project>

Modified: labs/pinpoint/trunk/pinpoint-metric/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-metric/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-metric/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-metric/pom.xml Mon Feb 18 21:32:01 2008
@@ -21,7 +21,7 @@
     <dependency>
       <groupId>commons-math</groupId>
       <artifactId>commons-math</artifactId>
-      <version>1.1</version>
+      <version>${commons.math.version}</version>
     </dependency>
     <dependency>
       <groupId>org.springframework</groupId>
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
-      <version>2.3</version>
+      <version>${commons.lang.version}</version>
     </dependency>
     <dependency>
       <groupId>jfree</groupId>

Added: labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/CommonTimePatterns.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/CommonTimePatterns.java?rev=628993&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/CommonTimePatterns.java (added)
+++ labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/CommonTimePatterns.java Mon Feb 18 21:32:01 2008
@@ -0,0 +1,15 @@
+package org.apache.logging.pinpoint.report;
+
+public class CommonTimePatterns {
+
+    public static final String msPatternFragment = "[ :=](\\d+)[ ]*ms";
+    public static final String secondsPatternFragment = "[ :=](\\d+)[ ]*seconds";
+    public static final String doublePatternFragment = "(\\d+\\.\\d+)";
+    public static final String numericPatternFragmont = "[a-zA-Z][ :=]([-]*\\d+)";
+
+    public static final String[] COMMON_PATTERNS = new String[] {
+            msPatternFragment, secondsPatternFragment, doublePatternFragment,
+            numericPatternFragmont,
+
+    };
+}

Modified: labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/InputStreamTimeSeriesDataSetParser.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/InputStreamTimeSeriesDataSetParser.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/InputStreamTimeSeriesDataSetParser.java (original)
+++ labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/InputStreamTimeSeriesDataSetParser.java Mon Feb 18 21:32:01 2008
@@ -45,10 +45,6 @@
 
 public class InputStreamTimeSeriesDataSetParser implements
         Callable<List<JFreeChart>> {
-    private static final String msPatternFragment = "[ :=](\\d+)[ ]*ms";
-    private static final String secondsPatternFragment = "[ :=](\\d+)[ ]*seconds";
-    private static final String doublePatternFragment = "(\\d+\\.\\d+)";
-    private static final String numericPatternFragmont = "[a-zA-Z][ :=]([-]*\\d+)";
 
     private final String[] valueFragments;
     private final InputStream stream;
@@ -56,7 +52,7 @@
             .name();
 
     public InputStreamTimeSeriesDataSetParser(InputStream stream) {
-        this(stream, numericPatternFragmont);
+        this(stream, CommonTimePatterns.numericPatternFragmont);
     }
 
     public InputStreamTimeSeriesDataSetParser(InputStream stream,
@@ -125,6 +121,8 @@
     //    public JFreeChart createStackedBar(XYDataset dataset) {
     //        return ChartFactory.create
     //    }
+    
+//    TODO refactor this into a shared class
     public JFreeChart createHistogramChart(XYDataset dataset, int binSize) {
 
         HistogramDataset histogramDataset = new HistogramDataset();
@@ -148,7 +146,7 @@
                 PlotOrientation.VERTICAL, legend, tooltips, urls);
     }
 
-    public JFreeChart createTimeSeriesScatterPlat(XYDataset dataset) {
+    public static JFreeChart createTimeSeriesScatterPlat(XYDataset dataset) {
         String xAxisLabel = "";
         String yAxisLabel = "";
         String title = "";

Modified: labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/PinpointStreamingGraphServer.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/PinpointStreamingGraphServer.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/PinpointStreamingGraphServer.java (original)
+++ labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/PinpointStreamingGraphServer.java Mon Feb 18 21:32:01 2008
@@ -6,8 +6,6 @@
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicLong;
 
 import javax.swing.JFrame;
 import javax.swing.JTabbedPane;
@@ -17,6 +15,7 @@
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
+import org.apache.logging.pinpoint.concurrent.BaseNameDaemonThreadFatory;
 import org.jfree.chart.ChartPanel;
 import org.jfree.chart.JFreeChart;
 import org.jfree.data.general.Dataset;
@@ -64,16 +63,7 @@
             ServerSocket serverSocket = new ServerSocket(port);
 
             ExecutorService threadPool = Executors.newFixedThreadPool(4,
-                    new ThreadFactory() {
-                        private AtomicLong sequence = new AtomicLong();
-
-                        public Thread newThread(Runnable r) {
-                            Thread thread = new Thread(r, "ChartProcessor-" +
-                                    sequence.getAndIncrement());
-                            thread.setDaemon(true);
-                            return thread;
-                        }
-                    });
+                    new BaseNameDaemonThreadFatory("ChartProcessor"));
 
             System.out.printf("Listening on %d, using timeFormat: %s\n", port,
                     timeFormat);
@@ -131,6 +121,7 @@
                 .create('p'));
         options.addOption(OptionBuilder.withArgName("timeFormat").isRequired(
                 false).withDescription("Time format name(UNIX|ISO8601)")
+                .hasArg()
                 .create('t'));
 
         return options;

Modified: labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/TimeSeriesCollectionSeriesProvider.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/TimeSeriesCollectionSeriesProvider.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/TimeSeriesCollectionSeriesProvider.java (original)
+++ labs/pinpoint/trunk/pinpoint-reports/src/main/java/org/apache/logging/pinpoint/report/TimeSeriesCollectionSeriesProvider.java Mon Feb 18 21:32:01 2008
@@ -24,7 +24,7 @@
 import org.jfree.data.time.TimeSeries;
 import org.jfree.data.time.TimeSeriesCollection;
 
-final class TimeSeriesCollectionSeriesProvider implements SeriesProvider {
+public final class TimeSeriesCollectionSeriesProvider implements SeriesProvider {
     private final TimeSeriesCollection dataSet = new TimeSeriesCollection();
     private final List<TimeSeries> seriesList = new ArrayList<TimeSeries>();
 

Modified: labs/pinpoint/trunk/pinpoint-search/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-search/pom.xml Mon Feb 18 21:32:01 2008
@@ -27,7 +27,7 @@
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
-      <version>2.2</version>
+      <version>${commons.lang.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.logging</groupId>
@@ -48,12 +48,12 @@
     <dependency>
     	<groupId>joda-time</groupId>
     	<artifactId>joda-time</artifactId>
-    	<version>1.4</version>
+    	<version>${joda.version}</version>
 	</dependency>
 	<dependency>
 	    <groupId>net.sf.ehcache</groupId>
 	    <artifactId>ehcache</artifactId>
-	    <version>1.4.0-beta</version>
+	    <version>${ehcache.version}</version>
 	</dependency>
   </dependencies>
 </project>

Added: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingConnectionFactory.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingConnectionFactory.java?rev=628993&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingConnectionFactory.java (added)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingConnectionFactory.java Mon Feb 18 21:32:01 2008
@@ -0,0 +1,27 @@
+package org.apache.logging.pinpoint.search;
+
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Ehcache;
+
+public class CachingConnectionFactory implements PinpointConnectionFactory {
+
+    private final PinpointConnectionFactory delegate;
+    private final CacheManager cacheManager;
+
+    public CachingConnectionFactory(PinpointConnectionFactory delegate,
+            CacheManager cacheManager) {
+        this.delegate = delegate;
+        this.cacheManager = cacheManager;
+    }
+
+    public CachingPinpointConnection connect(String contextName) {
+        PinpointConnection pinpointConnection = delegate.connect(contextName);
+        Ehcache cache = null;
+        if (!cacheManager.cacheExists(contextName)) {
+            cacheManager.addCache(contextName);
+        }
+        cache = cacheManager.getEhcache(contextName);
+        return new CachingPinpointConnection(pinpointConnection, cache);
+
+    }
+}

Added: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingPinpointConnection.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingPinpointConnection.java?rev=628993&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingPinpointConnection.java (added)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/CachingPinpointConnection.java Mon Feb 18 21:32:01 2008
@@ -0,0 +1,59 @@
+package org.apache.logging.pinpoint.search;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.Element;
+
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.lucene.search.Query;
+
+
+public class CachingPinpointConnection implements PinpointConnection{
+
+    private final PinpointConnection delegate;
+
+    private final Ehcache cache;
+
+    public CachingPinpointConnection(PinpointConnection delegate, Ehcache cache) {
+        this.delegate = delegate;
+        this.cache = cache;
+    }
+
+    public void close() throws IOException {
+        delegate.close();
+    }
+
+    public List<String> search(Query query) throws IOException {
+        return delegate.search(query);
+    }
+
+    public LoggingEvent detail(String eventLocation) {
+          Element element = cache.get(eventLocation);
+        LoggingEvent e = null;
+        if (element == null) {
+            e = delegate.detail(eventLocation);
+            cache.put(new Element(eventLocation, e));
+        } else {
+            e = (LoggingEvent) element.getObjectValue();
+        }
+        return e;
+        
+    }
+
+    public final Ehcache getCache() {
+        return cache;
+    }
+
+    public List<LoggingEvent> details(List<String> eventKeys) {
+        List<LoggingEvent> events = new ArrayList<LoggingEvent>(eventKeys
+                .size());
+        for (String eventKey : eventKeys) {
+            events.add(detail(eventKey));
+        }
+        return events;
+    }
+
+}

Modified: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/LocalConnectionFactory.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/LocalConnectionFactory.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/LocalConnectionFactory.java (original)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/LocalConnectionFactory.java Mon Feb 18 21:32:01 2008
@@ -12,10 +12,11 @@
 import org.apache.logging.pinpoint.store.SimpleEventStoreFactory;
 import org.apache.lucene.search.Query;
 
-public class LocalConnectionFactory {
+public class LocalConnectionFactory implements PinpointConnectionFactory {
 
     private final PinpointHome pinpointHome;
     private final EventStoreFactory eventStoreFactory = new SimpleEventStoreFactory();
+    
 
     public LocalConnectionFactory(PinpointHome home) {
         this.pinpointHome = home;
@@ -30,8 +31,9 @@
     public PinpointConnection connect(PinpointContext context) {
         try {
             EventStore eventStore = eventStoreFactory.createEventStore(context);
-            return new LocalPinpointConnection(context, eventStore);
-
+            LocalPinpointConnection localPinpointConnection = new LocalPinpointConnection(
+                    context, eventStore);
+            return localPinpointConnection;
         } catch (Exception e) {
             throw new RuntimeException(
                     "Failed to connect to local PinpointContext", e);

Modified: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnection.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnection.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnection.java (original)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnection.java Mon Feb 18 21:32:01 2008
@@ -15,6 +15,7 @@
      * @param query
      * @return
      */
+    //    TODO this interface is almost certain to change, simply passing a Query object is not the only operation the connection may be required to do
     public List<String> search(Query query) throws IOException;
 
     public List<LoggingEvent> details(List<String> eventKeys);

Added: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnectionFactory.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnectionFactory.java?rev=628993&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnectionFactory.java (added)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointConnectionFactory.java Mon Feb 18 21:32:01 2008
@@ -0,0 +1,6 @@
+package org.apache.logging.pinpoint.search;
+
+public interface PinpointConnectionFactory {
+
+    public PinpointConnection connect(String contextName);
+}

Modified: labs/pinpoint/trunk/pinpoint-service/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-service/pom.xml Mon Feb 18 21:32:01 2008
@@ -10,13 +10,6 @@
   <artifactId>pinpoint-service</artifactId>
   <name>Pinpoint Service Layer</name>
   <version>1.0-SNAPSHOT</version>
-  <properties>
-    <lucene.version>2.2.0</lucene.version>
-    <log4j.version>1.2.15</log4j.version>
-    <log4j.companion.version>1.0-SNAPSHOT</log4j.companion.version>
-    <commonscli.version>1.1</commonscli.version>
-    <jline.version>0.9.91</jline.version>
-  </properties>
   <build>
     <plugins>
       <plugin>
@@ -92,7 +85,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-core</artifactId>
-      <version>4.1.1</version>
+      <version>${activemq.version}</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
@@ -102,7 +95,7 @@
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring</artifactId>
-      <version>2.0.5</version>
+      <version>${spring.version}</version>
       <exclusions>
         <exclusion>
           <groupId>log4j</groupId>
@@ -134,7 +127,7 @@
     <dependency>
       <groupId>commons-daemon</groupId>
       <artifactId>commons-daemon</artifactId>
-      <version>1.0.1</version>
+      <version>${commons.daemon.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.derby</groupId>

Propchange: labs/pinpoint/trunk/pinpoint-swing/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Feb 18 21:32:01 2008
@@ -0,0 +1 @@
+target

Modified: labs/pinpoint/trunk/pinpoint-swing/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-swing/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-swing/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-swing/pom.xml Mon Feb 18 21:32:01 2008
@@ -17,6 +17,12 @@
       <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.logging</groupId>
+      <artifactId>pinpoint-reports</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>3.8.1</version>
@@ -25,7 +31,7 @@
     <dependency>
       <groupId>joda-time</groupId>
       <artifactId>joda-time</artifactId>
-      <version>1.4</version>
+      <version>${joda.version}</version>
     </dependency>
   </dependencies>
 </project>

Modified: labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/LoggingEventTableModel.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/LoggingEventTableModel.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/LoggingEventTableModel.java (original)
+++ labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/LoggingEventTableModel.java Mon Feb 18 21:32:01 2008
@@ -6,17 +6,29 @@
 
 import javax.swing.table.AbstractTableModel;
 
+import org.apache.commons.collections.set.ListOrderedSet;
 import org.apache.log4j.spi.LoggingEvent;
 import org.apache.logging.pinpoint.search.PinpointConnection;
 
 public class LoggingEventTableModel extends AbstractTableModel {
 
-    private static final long serialVersionUID = 1L;
+    public static final long serialVersionUID = 1L;
+
+    public static final int COLUMN_TIMESTAMP = 0;
+
+    public static final int COLUMN_LEVEL = 1;
+
+    public static final int COLUMN_THREAD = 2;
+
+    public static final int COLUMN_LOGGER = 3;
+
+    public static final int COLUMN_MESSAGE = 4;
 
     private final List<String> eventKeys;
     private final PinpointConnection connection;
     private final LoggingEvent[] events;
-
+    private final ListOrderedSet observedProperties = new ListOrderedSet();
+    
     public LoggingEventTableModel(List<String> eventKeys,
             PinpointConnection connection) {
         this.eventKeys = eventKeys;
@@ -27,7 +39,7 @@
     public int getColumnCount() {
 
         //        TODO  depends on how many Property values there are in a set of events.
-        return 5;
+        return 5 + observedProperties.size();
     }
 
     public int getRowCount() {
@@ -41,14 +53,35 @@
             //            TODO should we now 'observe' this event and potentially adjust the # columns this model now knows about?
         }
         LoggingEvent e = events[rowIndex];
+        analyseEvent(e);
         return e;
 
     }
 
+    /**
+     * Analyses the LoggingEvent to see if it contains properties we have not seen before triggering a table change event
+     * in the process
+     * @param e
+     */
+    private void analyseEvent(LoggingEvent e) {
+           boolean changeNoticed = false;
+        for (Object propertyName : e.getPropertyKeySet()) {
+            if (!observedProperties.contains(propertyName.toString())) {
+                observedProperties.add(propertyName.toString());
+                changeNoticed = true;
+            }
+        }
+        if (changeNoticed) {
+            fireTableStructureChanged();
+        }
+
+    }
+
     public String lookupEventKeyAtRow(int rowIndex) {
 
         return eventKeys.get(rowIndex);
     }
+    
 
     @Override
     public Class<?> getColumnClass(int columnIndex) {
@@ -76,26 +109,38 @@
             return e.getMessage();
 
         default:
-            return "<Unknown: " + columnIndex + ">";
+            if(columnIndex>4) {
+                String propertyName = observedProperties.get(
+                        columnIndex - 4 - 1)
+                        .toString();
+                return e.getProperty(propertyName);
+            }else {
+                return "<Unknown: " + columnIndex + ">";
+            }
         }
     }
 
     @Override
     public String getColumnName(int column) {
         switch (column) {
-        case 0:
+        case COLUMN_TIMESTAMP:
             return "Timestamp";
-        case 1:
+        case COLUMN_LEVEL:
             return "Level";
-        case 2:
+        case COLUMN_THREAD:
             return "Thread";
-        case 3:
+        case COLUMN_LOGGER:
             return "Logger";
-        case 4:
+        case COLUMN_MESSAGE:
             return "Message";
 
         default:
-            throw new RuntimeException("Unexpeted column index: " + column);
+            if (column > 4) {
+                return observedProperties.get(column - 4 - 1)
+                        .toString();
+            } else {
+                throw new RuntimeException("Unexpeted column index: " + column);
+            }
 
         }
     }

Modified: labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointConnectionSearchPanel.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointConnectionSearchPanel.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointConnectionSearchPanel.java (original)
+++ labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointConnectionSearchPanel.java Mon Feb 18 21:32:01 2008
@@ -1,7 +1,9 @@
 package org.apache.logging.pinpoint.swing;
 
 import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.Component;
+import java.awt.Cursor;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
@@ -13,22 +15,32 @@
 import java.util.concurrent.Executors;
 
 import javax.swing.AbstractAction;
-import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JMenuBar;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
+import javax.swing.JTabbedPane;
 import javax.swing.JTable;
 import javax.swing.JTextField;
 import javax.swing.JToolBar;
 import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
+import javax.swing.event.TableColumnModelEvent;
+import javax.swing.event.TableColumnModelListener;
 import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
 
 import org.apache.log4j.spi.LoggingEvent;
 import org.apache.logging.pinpoint.concurrent.BaseNameDaemonThreadFatory;
-import org.apache.logging.pinpoint.search.PinpointConnection;
+import org.apache.logging.pinpoint.search.CachingPinpointConnection;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.queryParser.QueryParser;
 import org.joda.time.format.DateTimeFormat;
@@ -41,33 +53,53 @@
     private JTextField searchField = new JTextField();
     private JTable resultTable = new JTable();
     private JTable contextTable = new JTable();
+    
+    private JPanel searchQueryPanel = new JPanel(new BorderLayout());
+    
+    private JTabbedPane resultTabbedPane = new JTabbedPane();
+    
     private QueryParser parser = new QueryParser("message",
             new StandardAnalyzer());
+    
+
+    //    private JToolBar toolbar = new JToolBar();
+
+    private final JMenuBar menuBar = new JMenuBar();
+    
+    private JDialog progressDialog = new JDialog();
 
     private EventContextViewModel eventContextViewModel;
 
     private Executor executor = Executors.newFixedThreadPool(6,
             new BaseNameDaemonThreadFatory(this.getClass()));
 
-    private final PinpointConnection connection;
+    private final CachingPinpointConnection connection;
+    private PinpointSearchStatusBar statusBar;
 
-    public PinpointConnectionSearchPanel(PinpointConnection connection) {
+    public PinpointConnectionSearchPanel(
+            CachingPinpointConnection connection) {
         this.connection = connection;
         eventContextViewModel = new EventContextViewModel(connection);
+        this.statusBar = new PinpointSearchStatusBar(connection.getCache());
         initComponents();
 
     }
 
     private void initComponents() {
+        progressDialog.setAlwaysOnTop(true);
+        
+        
         setLayout(new BorderLayout());
 
         JScrollPane resultScrollPane = new JScrollPane(resultTable);
+        resultTabbedPane.add("Results", splitPane);
+
         splitPane.setTopComponent(resultScrollPane);
 
         JPanel contextPanel = new JPanel(new BorderLayout());
         JScrollPane contextPanelScrollPane = new JScrollPane(contextTable);
         contextPanel.add(contextPanelScrollPane, BorderLayout.CENTER);
-        JToolBar toolbar = new JToolBar();
+        JToolBar contextViewtoolbar = new JToolBar();
 
         AbstractAction action = new AbstractAction("Show All Threads") {
 
@@ -89,23 +121,21 @@
                     }
                 });
 
-        toolbar.add(checkBox);
-        toolbar.setFloatable(false);
+        contextViewtoolbar.add(checkBox);
+        contextViewtoolbar.setFloatable(false);
 
-        contextPanel.add(toolbar, BorderLayout.NORTH);
+        contextPanel.add(contextViewtoolbar, BorderLayout.NORTH);
 
         splitPane.setBottomComponent(contextPanel);
 
-        add(splitPane, BorderLayout.CENTER);
+        add(this.resultTabbedPane, BorderLayout.CENTER);
 
         // -------------------------
         // BEGIN -- Search Query Panel
         // -------------------------
-        JPanel searchQueryPanel = new JPanel(new BorderLayout());
+        
         searchQueryPanel.add(searchField, BorderLayout.CENTER);
 
-        searchQueryPanel.setBorder(BorderFactory.createTitledBorder(
-                BorderFactory.createEtchedBorder(), "Search Query"));
 
         add(searchQueryPanel, BorderLayout.NORTH);
 
@@ -156,28 +186,166 @@
         //
         //        contextPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
         //                .createEtchedBorder(), "Event Context"));
+        
+        add(statusBar, BorderLayout.SOUTH);
 
+        //        initToolbar();
     }
+    
+
+    //    private void clearGraphs() {
+    //        for (int i = 0; i < this.resultTabbedPane.getTabCount(); i++) {
+    //            int lastTab = resultTabbedPane.getTabCount() - 1;
+    //            if (resultTabbedPane.getTabComponentAt(lastTab) instanceof ChartPanel) {
+    //                resultTabbedPane.removeTabAt(lastTab);
+    //            }
+    //        }
+    //    }
+
+    //    private void initToolbar() {
+    //        AbstractAction graphAction = new AbstractAction("Graphalicious") {
+    //
+    //            public void actionPerformed(ActionEvent e) {
+    //                SeriesProvider seriesProvider = new TimeSeriesCollectionSeriesProvider();
+    //
+    //                //                TODO iterate over the common patters to produce more graphs
+    //                DataSetParser<LoggingEvent> dataSetParser = new DataSetParser<LoggingEvent>(
+    //                        new LoggingEventDataProvider(
+    //                                CommonTimePatterns.msPatternFragment),
+    //                        new SeriesNameProvider<LoggingEvent>() {
+    //
+    //                            public List<String> getSeriesNames() {
+    //                                return Collections.emptyList();
+    //                            }
+    //
+    //                            public boolean sniffForSeriesNames(
+    //                                    LoggingEvent object) {
+    //                                return false;
+    //                            }
+    //                        }, seriesProvider);
+    //
+    //                LoggingEventTableModel model = (LoggingEventTableModel) resultTable
+    //                        .getModel();
+    //                for (int i = 0; i < model.getRowCount(); i++) {
+    //                    LoggingEvent event = model.lookupEventAtRow(i);
+    //                    dataSetParser.analyse(event);
+    //                }
+    //                List<JFreeChart> charts = new ArrayList<JFreeChart>();
+    //
+    //                XYDataset dataSet = (XYDataset) dataSetParser.getDataSet();
+    //                charts.add(InputStreamTimeSeriesDataSetParser
+    //                        .createTimeSeriesScatterPlat(dataSet));
+    //                
+    //                int chartIndex = 1;
+    //                for (JFreeChart freeChart : charts) {
+    //                    resultTabbedPane.add("Chart-" + chartIndex++,
+    //                            new ChartPanel(freeChart));
+    //                }
+    //
+    //
+    //            }
+    //        };
+    //
+    //        JMenu graphMenu = new JMenu("Graphs");
+    //
+    //        graphMenu.add(graphAction);
+    //        
+    //        menuBar.add(graphMenu);
+    //        
+    //
+    //        //        searchQueryPanel.add(toolbar, BorderLayout.PAGE_START);
+    //        
+    //        
+    //       
+    //    }
+
+    private void configureTableLaF(final JTable table) {
+
+        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        final TableColumnModel columnModel = table.getColumnModel();
+        columnModel.addColumnModelListener(new TableColumnModelListener() {
+
+            //            TODO configure standard columns widths for key columns (message, Thread, Level(smaller)
+            public void columnAdded(TableColumnModelEvent e) {
+                if (columnModel.getColumnCount() > LoggingEventTableModel.COLUMN_MESSAGE) {
+
+                    TableColumn messageColumn = columnModel
+                            .getColumn(LoggingEventTableModel.COLUMN_MESSAGE);
+                    messageColumn.setPreferredWidth(500);
+                }
+
+            }
+
+            public void columnMarginChanged(ChangeEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            public void columnMoved(TableColumnModelEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+
+            public void columnRemoved(TableColumnModelEvent e) {
+                // TODO Auto-generated method stub
+
+            }
 
-    private void configureTableLaF(JTable table) {
+            public void columnSelectionChanged(ListSelectionEvent e) {
+                // TODO Auto-generated method stub
 
-        table.setShowVerticalLines(true);
-        table.setShowHorizontalLines(true);
-        table.setShowGrid(true);
-        table.setDefaultRenderer(Date.class, new DefaultTableCellRenderer() {
+            }
+        });
+        
+        TableCellRenderer cellRenderer = new RowStripingTableCellRenderer(
+                new DefaultTableCellRenderer());
+        table.setDefaultRenderer(Object.class, cellRenderer);
+        table.setDefaultRenderer(Date.class, new RowStripingTableCellRenderer(
+                new DefaultTableCellRenderer() {
             DateTimeFormatter formatter = DateTimeFormat
                     .forPattern("hh:MM:sss");
 
+            
             public Component getTableCellRendererComponent(JTable table,
                     Object value, boolean isSelected, boolean hasFocus,
                     int row, int column) {
 
                 value = formatter.print(((Date) value).getTime());
 
-                return super.getTableCellRendererComponent(table, value,
+                JLabel rendererComponent = (JLabel) super
+                        .getTableCellRendererComponent(table, value,
                         isSelected, hasFocus, row, column);
+                return rendererComponent;
             }
-        });
+        }));
+    }
+    
+    private static class RowStripingTableCellRenderer implements
+            TableCellRenderer {
+        private final TableCellRenderer delegate;
+
+        Color defaultBackgroundColor = null;
+        //        TODO this conflicts with the foreground color
+        Color stripey = new Color(232, 232, 232);
+
+        public RowStripingTableCellRenderer(TableCellRenderer delegate) {
+            this.delegate = delegate;
+        }
+
+        public Component getTableCellRendererComponent(JTable table,
+                Object value, boolean isSelected, boolean hasFocus, int row,
+                int column) {
+            Component rendererComponent = delegate
+                    .getTableCellRendererComponent(table, value, isSelected,
+                            hasFocus, row, column);
+            if (defaultBackgroundColor == null) {
+                defaultBackgroundColor = rendererComponent.getBackground();
+            }
+            rendererComponent
+                    .setBackground(row % 2 == 0 ? defaultBackgroundColor
+                            : stripey);
+            return rendererComponent;
+        }
     }
 
     private void search(final String searchText) {
@@ -186,18 +354,39 @@
             public void run() {
                 //                TODO update a status bar?  Cursor change?
                 try {
-                    List<String> results = connection.search(parser
+                    activateSearchProgressBar();
+                    final List<String> results = connection.search(parser
                             .parse(searchText));
-                    resultTable.setModel(new LoggingEventTableModel(results,
-                            connection));
+                    SwingUtilities.invokeLater(new Runnable() {
+
+                        public void run() {
+                            //                            clearGraphs();
+                            resultTable.setModel(new LoggingEventTableModel(
+                                    results, connection));
+                        }
+                    });
+                    statusBar.setSearchResultCount(results.size());
+                    statusBar.updateCacheStats();
                 } catch (Exception e) {
                     throw new RuntimeException("Failed to search:'" +
                             searchText + "'", e);
+                } finally {
+                    deactivateSearchProgressBar();
                 }
             }
+
         });
 
     }
+    private void deactivateSearchProgressBar() {
+        getParent().setCursor(Cursor.getDefaultCursor());
+
+    }
+
+    private void activateSearchProgressBar() {
+        getParent().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+
+    }
 
     private LoggingEvent lookupEventAtRow(JTable table, int rowIndex) {
         return ((LoggingEventTableModel) table.getModel())
@@ -207,5 +396,9 @@
     private String lookupEventKeyAtRow(JTable table, int rowIndex) {
         return ((LoggingEventTableModel) table.getModel())
                 .lookupEventKeyAtRow(rowIndex);
+    }
+
+    public final JMenuBar getMenuBar() {
+        return menuBar;
     }
 }

Added: labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointSearchStatusBar.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointSearchStatusBar.java?rev=628993&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointSearchStatusBar.java (added)
+++ labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/PinpointSearchStatusBar.java Mon Feb 18 21:32:01 2008
@@ -0,0 +1,77 @@
+package org.apache.logging.pinpoint.swing;
+
+import java.text.NumberFormat;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.border.BevelBorder;
+
+import net.sf.ehcache.Ehcache;
+
+public class PinpointSearchStatusBar extends JPanel {
+
+    private JLabel messageLabel = new JLabel("");
+    private JLabel cacheStatistics = new JLabel("0%");
+    private final Ehcache cache;
+    private final JLabel resultCountLabel = new JLabel("0");
+
+    public PinpointSearchStatusBar(Ehcache cache) {
+        this.cache = cache;
+        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
+
+        initComponents();
+    }
+
+    private void initComponents() {
+        add(messageLabel);
+        add(Box.createGlue());
+        add(resultCountLabel);
+        add(Box.createHorizontalStrut(15));
+        add(cacheStatistics);
+        add(Box.createHorizontalStrut(10)); // this gets around the resize handle intruding on the status bar.
+
+        cacheStatistics.setBorder(BorderFactory
+                .createBevelBorder(BevelBorder.LOWERED));
+        resultCountLabel.setBorder(BorderFactory.createLoweredBevelBorder());
+
+    }
+
+    public void updateCacheStats() {
+
+        SwingUtilities.invokeLater(new Runnable() {
+
+            public void run() {
+                double hits = cache.getStatistics().getCacheHits();
+                double misses = cache.getStatistics().getCacheMisses();
+                double total = hits + misses;
+                cacheStatistics.setText(NumberFormat.getPercentInstance()
+                        .format(hits / total));
+                cacheStatistics
+                        .setToolTipText(cache.getStatistics().toString());
+
+            }
+        });
+    }
+
+    public void setMessage(final String message) {
+        SwingUtilities.invokeLater(new Runnable() {
+
+            public void run() {
+                messageLabel.setText(message);
+            }
+        });
+    }
+
+    public void setSearchResultCount(final int size) {
+        SwingUtilities.invokeLater(new Runnable() {
+
+            public void run() {
+                resultCountLabel.setText(String.valueOf(size));
+            }
+        });
+    }
+}

Modified: labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/Startup.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/Startup.java?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/Startup.java (original)
+++ labs/pinpoint/trunk/pinpoint-swing/src/main/java/org/apache/logging/pinpoint/swing/Startup.java Mon Feb 18 21:32:01 2008
@@ -1,29 +1,68 @@
 package org.apache.logging.pinpoint.swing;
 
-import java.io.IOException;
-
 import javax.swing.JFrame;
 
+import net.sf.ehcache.CacheManager;
+
+import org.apache.log4j.BasicConfigurator;
 import org.apache.logging.pinpoint.PinpointHome;
-import org.apache.logging.pinpoint.search.LocalConnectionFactory;
-import org.apache.logging.pinpoint.search.PinpointConnection;
-import org.apache.lucene.queryParser.ParseException;
+import org.apache.logging.pinpoint.search.CachingConnectionFactory;
+import org.apache.logging.pinpoint.search.CachingPinpointConnection;
+import org.apache.logging.pinpoint.search.PinpointConnectionFactory;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class Startup {
 
-    public static void main(String[] args) throws IOException, ParseException {
+    public static void main(String[] args) throws Exception {
 
-        LocalConnectionFactory connectionFactory = new LocalConnectionFactory(
-                new PinpointHome());
-        PinpointConnection connection = connectionFactory.connect("2007-10-19");
+        BasicConfigurator.configure();
+        
+        PinpointHome home = new PinpointHome();
+        //
+        //        QueueConnectionFactory jmsConnectionFactory = new ActiveMQConnectionFactory(
+        //                "tcp://localhost:61616");
+        //        Queue queue = new ActiveMQQueue(
+        //                "pinpointRemoteSearchRequestDestination");
+        //
+        //        JmsInvokerProxyFactoryBean jmsInvokerProxyFactoryBean = new JmsInvokerProxyFactoryBean();
+        //        jmsInvokerProxyFactoryBean
+        //                .setServiceInterface(PinpointConnectionFactory.class);
+        //        jmsInvokerProxyFactoryBean.setConnectionFactory(jmsConnectionFactory);
+        //        jmsInvokerProxyFactoryBean.setQueue(queue);
+        //        
+        //        jmsInvokerProxyFactoryBean.afterPropertiesSet();
+        
+        
+        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+                new String[] { "org/apache/logging/pinpoint/swing/remote/pinpoint-remoteclient.xml" });
+        context.start();
+        
+        
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
+                (PinpointConnectionFactory) context
+                        .getBean("pinpointConnectionFactory"), CacheManager
+                        .create());
+        //        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
+        //              new RemotePinpontConnectionFactory("localhost", 8283),
+        //                CacheManager
+        //                        .create());
+
+        //                CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
+        //                new LocalConnectionFactory(home), CacheManager.create());
+        
+        
+        CachingPinpointConnection connection = connectionFactory
+                .connect("2007-10-19");
 
         JFrame frame = new JFrame();
 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
+        PinpointConnectionSearchPanel searchPanel = new PinpointConnectionSearchPanel(connection);
         frame.getContentPane().add(
-                new PinpointConnectionSearchPanel(connection));
+                searchPanel);
 
+        frame.setJMenuBar(searchPanel.getMenuBar());
         frame.pack();
 
         frame.setVisible(true);

Modified: labs/pinpoint/trunk/pinpoint-web/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-web/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pinpoint-web/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-web/pom.xml Mon Feb 18 21:32:01 2008
@@ -33,7 +33,7 @@
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring</artifactId>
-      <version>2.0.5</version>
+      <version>${spring.version}</version>
       <exclusions>
         <exclusion>
           <artifactId>log4j</artifactId>
@@ -59,22 +59,22 @@
     <dependency>
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections</artifactId>
-      <version>3.2</version>
+      <version>${commons.collections.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
-      <version>2.2</version>
+      <version>${commons.lang.version}</version>
     </dependency>
     <dependency>
       <groupId>net.sf.ehcache</groupId>
       <artifactId>ehcache</artifactId>
-      <version>1.4.0-beta</version>
+      <version>${ehcache.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-beanutils</groupId>
       <artifactId>commons-beanutils</artifactId>
-      <version>1.7.0</version>
+      <version>${commons.beanutils.version}</version>
     </dependency>
   </dependencies>
 </project>

Modified: labs/pinpoint/trunk/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pom.xml?rev=628993&r1=628992&r2=628993&view=diff
==============================================================================
--- labs/pinpoint/trunk/pom.xml (original)
+++ labs/pinpoint/trunk/pom.xml Mon Feb 18 21:32:01 2008
@@ -24,15 +24,36 @@
   <description>Index and search infrastructure for log4j</description>
   <packaging>pom</packaging>
   <properties>
-    <lucene.version>2.2.0</lucene.version>
+    <activemq.version>4.1.1</activemq.version>
+    <lucene.version>2.3.0</lucene.version>
     <log4j.version>1.2.15</log4j.version>
     <log4j.receivers.version>1.0-SNAPSHOT</log4j.receivers.version>
     <log4j.companion.version>1.0-SNAPSHOT</log4j.companion.version>
-    <commonscli.version>1.1</commonscli.version>
+    <commons.beanutils.version>1.7.0</commons.beanutils.version>
+    <commons.cli.version>1.1</commons.cli.version>
+    <commons.daemon.version>1.0.1</commons.daemon.version>
+    <commons.lang.version>2.2</commons.lang.version>
+    <commons.collections.version>3.2</commons.collections.version>
+    <commons.io.version>1.3.2</commons.io.version>
+    <commons.math.version>1.1</commons.math.version>
     <jline.version>0.9.91</jline.version>
-	<spring.version>2.0.6</spring.version>
-	<jfreechart.version>1.0.5</jfreechart.version>
+    <spring.version>2.0.7</spring.version>
+    <jfreechart.version>1.0.5</jfreechart.version>
+    <joda.version>1.4</joda.version>
+    <ehcache.version>1.4.0-beta</ehcache.version>
   </properties>
+	<repositories>
+		<repository>
+			<id>Apache snapshot builds</id>
+			<url>http://people.apache.org/www/people.apache.org/builds/logging/repo/</url>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+			<releases>
+				<enabled>false</enabled>
+			</releases>
+		</repository>
+	</repositories>
   <modules>
     <module>pinpoint-cli</module>
     <module>pinpoint-search</module>
@@ -86,4 +107,4 @@
     </site>
  </distributionManagement>
   
-</project>
\ No newline at end of file
+</project>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org