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 2007/08/11 12:43:29 UTC

svn commit: r564890 - in /labs/pinpoint/trunk: ./ pinpoint-cli/src/main/java/org/apache/logging/pinpoint/ pinpoint-core/ pinpoint-core/src/main/java/org/apache/logging/pinpoint/ pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/ pinpoin...

Author: psmith
Date: Sat Aug 11 03:43:26 2007
New Revision: 564890

URL: http://svn.apache.org/viewvc?view=rev&rev=564890
Log:
Moved EventStore and impl's into seperate package.

Added HQSLDBStore implementation and test cases.

Tidied up some license headers (not perfect still).


Added:
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/EventStore.java
      - copied, changed from r564042, labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventStore.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/HSQLDBEventStore.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/SimpleEventStore.java
      - copied, changed from r564042, labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/SimpleEventStore.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/PinpointTestUtils.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/AbstractStoreTest.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBEventStoreTest.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBTest.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/SimpleEventStoreTest.java
Removed:
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventStore.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/SimpleEventStore.java
Modified:
    labs/pinpoint/trunk/   (props changed)
    labs/pinpoint/trunk/TODO.txt
    labs/pinpoint/trunk/pinpoint-cli/src/main/java/org/apache/logging/pinpoint/Shell.java
    labs/pinpoint/trunk/pinpoint-core/pom.xml
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/PinpointContextUtils.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventWriter.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/PinpointAppender.java
    labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/resolver/OffsetAndLength.java
    labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/converter/EventWriterTest.java
    labs/pinpoint/trunk/pinpoint-importer/src/main/java/org/apache/logging/pinpoint/importer/Importer.java
    labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointSearcher.java
    labs/pinpoint/trunk/pom.xml

Propchange: labs/pinpoint/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat Aug 11 03:43:26 2007
@@ -1 +1,2 @@
 target
+.settings

Modified: labs/pinpoint/trunk/TODO.txt
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/TODO.txt?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/TODO.txt (original)
+++ labs/pinpoint/trunk/TODO.txt Sat Aug 11 03:43:26 2007
@@ -6,6 +6,30 @@
 * Document how to use it in Daemon or non-daemon mode
 * Document how to configure it for JMX-enabling
 
+pinpoint-search
+* (not sure if this is CLI or searcher) Initial display of events appear SLOOOOOW.
+
+pinpoint-core
+	bugs
+		* Getting a weird exception with some events that are being sent from the Aconex app:
+		pinpoint>search sqlexception
+				message:sqlexception
+				java.lang.RuntimeException: Failed to navigate to next hit
+				        at org.apache.logging.pinpoint.search.PinpointSearcher$HitIterator.next(PinpointSearcher.java:115)
+				        at org.apache.logging.pinpoint.search.PinpointSearcher$HitIterator.next(PinpointSearcher.java:90)
+				        at org.apache.logging.pinpoint.Shell.displayEvents(Shell.java:189)
+				        at org.apache.logging.pinpoint.Shell.searchContext(Shell.java:153)
+				        at org.apache.logging.pinpoint.Shell.main(Shell.java:73)
+				Caused by: java.lang.RuntimeException: Failed to deserialize an event at position 204460 for file '/Users/paulsmith/.pinpoint/ctx.2007-08-09/EVENTS.ser'
+				        at org.apache.logging.pinpoint.converter.SimpleEventStore.restore(SimpleEventStore.java:72)
+				        at org.apache.logging.pinpoint.search.PinpointSearcher$HitIterator.next(PinpointSearcher.java:113)
+				        ... 4 more
+				Caused by: java.io.StreamCorruptedException: invalid stream header
+				        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764)
+				        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
+				        at org.apache.logging.pinpoint.converter.SimpleEventStore.restore(SimpleEventStore.java:63)
+				        ... 5 more
+        
 pinpoint-cli
 
 * try to work out the jline stuff a bit better

Modified: labs/pinpoint/trunk/pinpoint-cli/src/main/java/org/apache/logging/pinpoint/Shell.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-cli/src/main/java/org/apache/logging/pinpoint/Shell.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-cli/src/main/java/org/apache/logging/pinpoint/Shell.java (original)
+++ labs/pinpoint/trunk/pinpoint-cli/src/main/java/org/apache/logging/pinpoint/Shell.java Sat Aug 11 03:43:26 2007
@@ -13,6 +13,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Map;
 
 import jline.ArgumentCompletor;
 import jline.CandidateListCompletionHandler;
@@ -34,8 +35,8 @@
 import org.apache.log4j.LogManager;
 import org.apache.log4j.PatternLayout;
 import org.apache.log4j.spi.LoggingEvent;
-import org.apache.logging.pinpoint.converter.SimpleEventStore;
 import org.apache.logging.pinpoint.search.PinpointSearcher;
+import org.apache.logging.pinpoint.store.SimpleEventStore;
 import org.apache.logging.pinpoint.utils.PinpointUtils;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -93,14 +94,13 @@
     }
 
     private static void showContextInfo(PinpointContext ctx) {
-        Collection<String> contextPoints = PinpointContextUtils
-                .listContextPoints(ctx);
+        Map<String, Collection<String>> values = PinpointContextUtils
+                .listContextPointValues(ctx);
         System.out.format("Context: %s\n", ctx.getContextRoot()
                 .getAbsoluteFile());
-        for (String contextPoint : contextPoints) {
-            System.out.format("%s: ", contextPoint);
-            System.out.format("%s", PinpointContextUtils.listContexPointValues(
-                    ctx, contextPoint));
+        for (Map.Entry<String, Collection<String>> entry : values.entrySet()) {
+            System.out.format("%s: ", entry.getKey());
+            System.out.format("%s", entry.getValue());
             System.out.println("");
         }
     }
@@ -159,7 +159,7 @@
                 } catch (Exception e) {
                     /*
                      * This is deliberately not logged using log4j, designed to
-                     * go staight to the console unhindered.
+                     * go straight to the console unhindered.
                      */
                     e.printStackTrace();
                 }
@@ -169,15 +169,6 @@
         }
 
     }
-
-    //
-    // private static void browseContext(PinpointContext ctx) throws IOException
-    // {
-    // PinpointContextIterator iterator = new PinpointContextIterator(ctx);
-    //
-    // displayEvents(iterator);
-    //
-    // }
 
     private static void displayEvents(Iterable<LoggingEvent> iterable) {
         if (!iterable.iterator().hasNext()) {

Modified: labs/pinpoint/trunk/pinpoint-core/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/pom.xml?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/pom.xml (original)
+++ labs/pinpoint/trunk/pinpoint-core/pom.xml Sat Aug 11 03:43:26 2007
@@ -62,6 +62,16 @@
       <artifactId>commons-collections</artifactId>
       <version>3.2</version>
     </dependency>
+	<dependency>
+	    <groupId>hsqldb</groupId>
+	    <artifactId>hsqldb</artifactId>
+	    <version>1.8.0.7</version>
+	</dependency>
+	<dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring</artifactId>
+      <version>2.0.5</version>
+    </dependency>    
   </dependencies>
   <properties>
     <commonscli.version>1.0</commonscli.version>

Modified: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/PinpointContextUtils.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/PinpointContextUtils.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/PinpointContextUtils.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/PinpointContextUtils.java Sat Aug 11 03:43:26 2007
@@ -15,8 +15,10 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -31,15 +33,18 @@
 
 public class PinpointContextUtils {
 
-    private static final Logger LOG = PinpointUtils.getLogger(PinpointContextUtils.class);
+    private static final Logger LOG = PinpointUtils
+            .getLogger(PinpointContextUtils.class);
 
     /**
-     * A Predicate that returns true for field names that are NOT Context Points.
+     * A Predicate that returns true for field names that are NOT Context
+     * Points.
      */
     public static final Predicate NON_CONTEXT_POINT_FIELDS = new Predicate() {
 
-        private final Set<String> nonCtxPointFieldNames = new HashSet<String>(Arrays
-                .asList(new String[] { "eventdate", "eventtime", "level", "logger", "message" }));
+        private final Set<String> nonCtxPointFieldNames = new HashSet<String>(
+                Arrays.asList(new String[] { "eventdate", "eventtime", "level",
+                        "logger", "message" }));
 
         public boolean evaluate(Object o) {
             String fieldName = o.toString();
@@ -50,14 +55,15 @@
     };
 
     /**
-     * A Predicate that returns true if a field name is a context point, or more (in)formally, is
-     * NOT a non-context point field.
+     * A Predicate that returns true if a field name is a context point, or more
+     * (in)formally, is NOT a non-context point field.
      */
     public static final Predicate CONTEXT_POINT_FIELDS = PredicateUtils
             .notPredicate(NON_CONTEXT_POINT_FIELDS);
 
     /**
-     * Inspects the PinpointContext index and retrieves the Set of fields available for searching
+     * Inspects the PinpointContext index and retrieves the Set of fields
+     * available for searching
      * 
      * @param ctx
      * @return
@@ -71,10 +77,12 @@
                     .getFieldNames(FieldOption.INDEXED));
             CollectionUtils.filter(fieldNames, CONTEXT_POINT_FIELDS);
             Collections.sort(fieldNames);
-            LOG.info("Located the following context fields for searching: " + fieldNames);
+            LOG.info("Located the following context fields for searching: " +
+                    fieldNames);
             return fieldNames;
         } catch (Exception e) {
-            throw new RuntimeException("Failed to inspect the indexed fields", e);
+            throw new RuntimeException("Failed to inspect the indexed fields",
+                    e);
         } finally {
             if (reader != null) {
                 try {
@@ -86,35 +94,78 @@
         }
     }
 
+    public static Map<String, Collection<String>> listContextPointValues(
+            PinpointContext ctx) {
+        Map<String, Collection<String>> map = new HashMap<String, Collection<String>>();
+        IndexReader reader = null;
+        TermEnum termEnum = null;
+        try {
+            reader = IndexReader.open(ctx.getIndexDirectory());
+            termEnum = reader.terms(new Term("", ""));
+            List<String> terms = new ArrayList<String>();
+            while (termEnum.next()) {
+                Term term = termEnum.term();
+                if (CONTEXT_POINT_FIELDS.evaluate(term.field())) {
+                    Collection<String> collection = null;
+                    if (!map.containsKey(term.field())) {
+                        collection = new ArrayList<String>();
+                        map.put(term.field(), collection);
+                    } else {
+                        collection = map.get(term.field());
+                    }
+                    collection.add(term.text());
+                }
+            }
+            return map;
+        } catch (Exception e) {
+            throw new RuntimeException(
+                    "Failed to inspect the context point values for PinpointContexn '" +
+                            ctx.getContextRoot().getAbsolutePath() + "'", e);
+        } finally {
+            if (termEnum != null) {
+                try {
+                    termEnum.close();
+                } catch (IOException e) {
+                    LOG.error("Failed to close termEnum cleanly", e);
+                }
+            }
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    LOG.error("Failed to close reader cleanly", e);
+                }
+            }
+        }
+    }
+
     /**
-     * Returns the set of unique values observed for a given context point (field) for a context.
+     * Returns the set of unique values observed for a given context point
+     * (field) for a context.
      * 
      * @param ctx
      * @param contexPoint
      * @return
      */
-    public static Collection<String> listContexPointValues(PinpointContext ctx, String contexPoint) {
+    public static Collection<String> listContexPointValues(PinpointContext ctx,
+            String contexPoint) {
         IndexReader reader = null;
         TermEnum termEnum = null;
         try {
             reader = IndexReader.open(ctx.getIndexDirectory());
-            termEnum = reader.terms(new Term(contexPoint, ""));
+            termEnum = reader.terms(new Term("", ""));
             List<String> terms = new ArrayList<String>();
             while (termEnum.next()) {
                 Term term = termEnum.term();
-                if (!term.field().equals(contexPoint)) {
-                    break;
+                if (term.field().equals(contexPoint)) {
+                    terms.add(term.text());
                 }
-                terms.add(term.text());
             }
             return terms;
-            // Collections.sort(fieldNames);
-            // LOG.info("Located the following context fields for searching: " + fieldNames);
-            // return fieldNames;
         } catch (Exception e) {
             throw new RuntimeException(
-                    "Failed to inspect the context point values for contextPoint '" + contexPoint
-                            + "'", e);
+                    "Failed to inspect the context point values for contextPoint '" +
+                            contexPoint + "'", e);
         } finally {
             if (termEnum != null) {
                 try {

Modified: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventWriter.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventWriter.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventWriter.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventWriter.java Sat Aug 11 03:43:26 2007
@@ -26,6 +26,7 @@
 import org.apache.log4j.spi.LoggingEvent;
 import org.apache.logging.pinpoint.analyser.AnalyzerFactory;
 import org.apache.logging.pinpoint.resolver.OffsetAndLength;
+import org.apache.logging.pinpoint.store.EventStore;
 import org.apache.logging.pinpoint.utils.PinpointUtils;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;

Modified: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/PinpointAppender.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/PinpointAppender.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/PinpointAppender.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/PinpointAppender.java Sat Aug 11 03:43:26 2007
@@ -18,6 +18,8 @@
 import org.apache.logging.pinpoint.PinpointContext;
 import org.apache.logging.pinpoint.analyser.AnalyzerFactory;
 import org.apache.logging.pinpoint.selector.PinpointContextSelector;
+import org.apache.logging.pinpoint.store.EventStore;
+import org.apache.logging.pinpoint.store.SimpleEventStore;
 
 public class PinpointAppender extends AppenderSkeleton {
 

Modified: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/resolver/OffsetAndLength.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/resolver/OffsetAndLength.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/resolver/OffsetAndLength.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/resolver/OffsetAndLength.java Sat Aug 11 03:43:26 2007
@@ -27,12 +27,13 @@
 
     private static final String FIELD_NAME = "pinpoint.location";
 
-    private static final String SEPERATOR = ".";
+    private static final String SEPARATOR = ".";
+
     public long offset;
     public long length;
 
     public static OffsetAndLength decodeFromString(String eventLocation) {
-        String[] split = StringUtils.split(eventLocation, SEPERATOR);
+        String[] split = StringUtils.split(eventLocation, SEPARATOR);
         OffsetAndLength oal = new OffsetAndLength();
         oal.offset = Long.valueOf(split[0]);
         oal.length = Long.valueOf(split[1]);
@@ -40,7 +41,7 @@
     }
 
     public String encodeAsString() {
-        return offset + SEPERATOR + length;
+        return offset + SEPARATOR + length;
     }
 
     public String toString() {

Copied: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/EventStore.java (from r564042, labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventStore.java)
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/EventStore.java?view=diff&rev=564890&p1=labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventStore.java&r1=564042&p2=labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/EventStore.java&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/EventStore.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/EventStore.java Sat Aug 11 03:43:26 2007
@@ -1,4 +1,19 @@
-package org.apache.logging.pinpoint.converter;
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ * 
+ * Licensed 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.logging.pinpoint.store;
 
 import java.io.IOException;
 
@@ -10,25 +25,25 @@
  * instance that can be provided later on to deserialize the event back again
  * 
  * @author psmith
- *
+ * 
  */
 public interface EventStore {
 
     /**
      * Encodes the Event in some external stream, returing a String-encoded
-     * reference item that can be returned to an instance of this
-     * implementation to deserialize back again.
+     * reference item that can be returned to an instance of this implementation
+     * to deserialize back again.
      * 
-     * This return string forms a string-encoded Event Location within this 
+     * This return string forms a string-encoded Event Location within this
      * instances serialization mechanism.
      * 
      * @param e
      * @return
      */
-    public String store(LoggingEvent e) ;
-    
+    public String store(LoggingEvent e);
+
     public LoggingEvent restore(String eventLocationKey);
-    
+
     public void close() throws IOException;
-   
+
 }

Added: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/HSQLDBEventStore.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/HSQLDBEventStore.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/HSQLDBEventStore.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/HSQLDBEventStore.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,127 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ * 
+ * Licensed 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.logging.pinpoint.store;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.apache.log4j.spi.LoggingEvent;
+import org.hsqldb.jdbc.jdbcDataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+public class HSQLDBEventStore implements EventStore {
+
+    static {
+        try {
+            Class.forName("org.hsqldb.jdbcDriver");
+        } catch (Exception e) {
+            System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
+            e.printStackTrace();
+        }
+    }
+
+    private final Connection connection;
+    private PreparedStatement insertStatement;
+    private jdbcDataSource dataSource;
+
+    private JdbcTemplate jdbcTemplate;
+    private Statement statement;
+    private String jdbcURL;
+
+    public HSQLDBEventStore(File storeLocation) {
+        jdbcURL = "jdbc:hsqldb:hsql:file:" +
+                storeLocation.getAbsolutePath().replace('\\', '/');
+        try {
+            this.dataSource = new jdbcDataSource();
+            dataSource.setDatabase(jdbcURL);
+            dataSource.setUser("sa");
+            dataSource.setPassword("");
+            this.connection = dataSource.getConnection();
+            createTableIfNecessary();
+            this.jdbcTemplate = new JdbcTemplate(dataSource);
+        } catch (SQLException e) {
+            throw new RuntimeException("Failed to create HSQLDB at location '" +
+                    storeLocation.getAbsolutePath() + "' using URL '" +
+                    jdbcURL + "'", e);
+        }
+    }
+
+    private void createTableIfNecessary() throws SQLException {
+        this.connection
+                .createStatement()
+                .execute(
+                        "create cached table events(eventid INTEGER GENERATED BY DEFAULT AS IDENTITY(start with 1, increment by 1) PRIMARY KEY, eventObject OTHER)");
+        this.insertStatement = connection
+                .prepareStatement("insert into events(eventObject) values (?)");
+        this.statement = this.connection.createStatement();
+    }
+
+    public void close() throws IOException {
+        try {
+            // TODO cleanup statements
+            // TODO 'SHUTDOWN'?
+            this.connection.close();
+        } catch (SQLException e) {
+            throw new RuntimeException("Failed to close JDBC connection", e);
+        }
+    }
+
+    public LoggingEvent restore(String eventLocationKey) {
+
+        return (LoggingEvent) jdbcTemplate.queryForObject(
+                "select eventobject from events where eventId=" +
+                        eventLocationKey, LoggingEvent.class);
+    }
+
+    private int getIdentity() throws SQLException {
+        /*
+         * We CANNOT use the jdbcTemplate because it will use a different
+         * Connection object than the query used to insert the row, and thus,
+         * never return a result.
+         */
+        int key = 0;
+
+        ResultSet rs = this.statement.executeQuery("Call IDENTITY();");
+        if (rs.next()) {
+            key = rs.getInt(1);
+        }
+        if (key < 1) {
+            throw new RuntimeException(
+                    "Did not successfully determine the last IDENTITY value");
+        }
+        return key;
+    }
+
+    public String store(LoggingEvent e) {
+        // jdbcTemplate.
+        try {
+            insertStatement.clearParameters();
+            int index = 1;
+            insertStatement.setObject(index++, e);
+            insertStatement.executeUpdate();
+            String key = String.valueOf(getIdentity());
+            return key;
+
+        } catch (SQLException ex) {
+            throw new RuntimeException("Failed to store event in HSQLDB", ex);
+        }
+
+    }
+}

Copied: labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/SimpleEventStore.java (from r564042, labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/SimpleEventStore.java)
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/SimpleEventStore.java?view=diff&rev=564890&p1=labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/SimpleEventStore.java&r1=564042&p2=labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/SimpleEventStore.java&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/converter/SimpleEventStore.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/main/java/org/apache/logging/pinpoint/store/SimpleEventStore.java Sat Aug 11 03:43:26 2007
@@ -1,4 +1,12 @@
-package org.apache.logging.pinpoint.converter;
+/*
+ * Copyright 1999-2005 The Apache Software Foundation. Licensed 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.logging.pinpoint.store;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -26,7 +34,8 @@
  */
 public class SimpleEventStore implements EventStore {
 
-    private static final Logger LOG = PinpointUtils.getLogger(SimpleEventStore.class);
+    private static final Logger LOG = PinpointUtils
+            .getLogger(SimpleEventStore.class);
 
     private final File serializationFie;
     private FileChannel channel;
@@ -38,11 +47,13 @@
     public SimpleEventStore(File serializationFile) {
         this.serializationFie = serializationFile;
         try {
+            // TODO confirm file open mode
             RandomAccessFile raf = new RandomAccessFile(serializationFile, "rw");
             channel = raf.getChannel();
         } catch (FileNotFoundException e) {
-            throw new RuntimeException("Failed to create Output channel for file '"
-                    + serializationFile.getAbsolutePath() + "'", e);
+            throw new RuntimeException(
+                    "Failed to create Output channel for file '" +
+                            serializationFile.getAbsolutePath() + "'", e);
         }
 
     }
@@ -52,25 +63,29 @@
     }
 
     public LoggingEvent restore(String eventLocationKey) {
-        OffsetAndLength oal = OffsetAndLength.decodeFromString(eventLocationKey);
+        OffsetAndLength oal = OffsetAndLength
+                .decodeFromString(eventLocationKey);
 
         // TODO totally inefficient...
         try {
 
-            MappedByteBuffer byteBuffer = channel.map(MapMode.READ_ONLY, oal.offset, oal.length);
+            MappedByteBuffer byteBuffer = channel.map(MapMode.READ_ONLY,
+                    oal.offset, oal.length);
             byte[] byteArray = new byte[(int) oal.length];
             byteBuffer.get(byteArray);
-            LoggingEvent event = (LoggingEvent) new ObjectInputStream(new ByteArrayInputStream(
-                    byteArray)).readObject();
+            LoggingEvent event = (LoggingEvent) new ObjectInputStream(
+                    new ByteArrayInputStream(byteArray)).readObject();
 
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Deserialized event at (offset:" + oal.offset + ", length:" + oal.length
-                        + "), event=" + event);
+                LOG.debug("Deserialized event at (offset:" + oal.offset +
+                        ", length:" + oal.length + "), event=" + event);
             }
             return event;
         } catch (Exception e) {
-            throw new RuntimeException("Failed to deserialize an event at position " + oal.offset
-                    + " for file '" + serializationFie.getAbsoluteFile() + "'", e);
+            throw new RuntimeException(
+                    "Failed to deserialize an event at position " + oal.offset +
+                            " with length " + oal.length + " for file '" +
+                            serializationFie.getAbsoluteFile() + "'", e);
         }
     }
 

Added: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/PinpointTestUtils.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/PinpointTestUtils.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/PinpointTestUtils.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/PinpointTestUtils.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,38 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ * 
+ * Licensed 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.logging.pinpoint;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+
+public class PinpointTestUtils {
+
+    private PinpointTestUtils() {
+
+    }
+
+    public static LoggingEvent createEvent(Level level, Logger logger,
+            String msg, Throwable t) {
+        LoggingEvent e = new LoggingEvent(logger.getClass().getName(), logger,
+                level, msg, t);
+        e.setProperty("prop1", "foo");
+        e.setProperty("prop2", "eek");
+
+        e.getLocationInformation();
+
+        return e;
+    }
+}

Modified: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/converter/EventWriterTest.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/converter/EventWriterTest.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/converter/EventWriterTest.java (original)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/converter/EventWriterTest.java Sat Aug 11 03:43:26 2007
@@ -27,8 +27,9 @@
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.pinpoint.PinpointTestUtils;
 import org.apache.logging.pinpoint.analyser.DefaultAnalyzerFactory;
-import org.apache.lucene.analysis.WhitespaceAnalyzer;
+import org.apache.logging.pinpoint.store.SimpleEventStore;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;
 
@@ -43,8 +44,10 @@
     }
 
     public void testWriteEvent() throws Exception {
-        File sFile = File.createTempFile(this.getClass().getCanonicalName(), ".ser");
-        File directory = new File(SystemUtils.getJavaIoTmpDir(), "EventWriterTest");
+        File sFile = File.createTempFile(this.getClass().getCanonicalName(),
+                ".ser");
+        File directory = new File(SystemUtils.getJavaIoTmpDir(),
+                "EventWriterTest");
 
         FileUtils.deleteDirectory(directory);
         directory.mkdirs();
@@ -60,10 +63,12 @@
         String baseString_ = "some_base_string";
         List<LoggingEvent> events = new ArrayList<LoggingEvent>();
 
-        events.add(createEvent(Level.TRACE, Logger.getLogger("foo"), "tracemsg" + i++,
-                new Exception("someexception-" + baseString_)));
+        events.add(PinpointTestUtils.createEvent(Level.TRACE, Logger
+                .getLogger("foo"), "tracemsg" + i++, new Exception(
+                "someexception-" + baseString_)));
 
-        events.add(createEvent(Level.INFO, Logger.getLogger("bar"), "infomsg" + i++, new Exception(
+        events.add(PinpointTestUtils.createEvent(Level.INFO, Logger
+                .getLogger("bar"), "infomsg" + i++, new Exception(
                 "someexception-" + baseString_)));
 
         for (LoggingEvent event : events) {
@@ -71,8 +76,8 @@
         }
 
         writer.close();
-        
-        //the eventWriter closes the store, so we have to reopen it 
+
+        // the eventWriter closes the store, so we have to reopen it
         eventStore = new SimpleEventStore(sFile);
 
         IndexReader reader = IndexReader.open(directory);
@@ -88,19 +93,13 @@
             // assertEquals(0, offset);
             LoggingEvent deSerializedEvent = eventStore.restore(eventLocation);
 
-            assertEquals(events.get(index).getLevel(), deSerializedEvent.getLevel());
-            assertEquals(events.get(index).getTimeStamp(), deSerializedEvent.getTimeStamp());
+            assertEquals(events.get(index).getLevel(), deSerializedEvent
+                    .getLevel());
+            assertEquals(events.get(index).getTimeStamp(), deSerializedEvent
+                    .getTimeStamp());
         }
 
         eventStore.close();
-    }
-
-    private LoggingEvent createEvent(Level level, Logger logger, String msg, Throwable t) {
-        LoggingEvent e = new LoggingEvent(logger.getClass().getName(), logger, level, msg, t);
-        e.setProperty("prop1", "foo");
-        e.setProperty("prop2", "eek");
-
-        return e;
     }
 
 }

Added: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/AbstractStoreTest.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/AbstractStoreTest.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/AbstractStoreTest.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/AbstractStoreTest.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,78 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ * 
+ * Licensed 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.logging.pinpoint.store;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.pinpoint.PinpointTestUtils;
+
+public abstract class AbstractStoreTest extends TestCase {
+
+    public void testMulitpleEventStores() throws Exception {
+
+        EventStore readStore = createStoreForTest();
+
+        EventStore writeStore = createStoreForTest();
+
+        try {
+            List<String> refs = new ArrayList<String>();
+
+            refs.add(writeStore.store(PinpointTestUtils.createEvent(Level.INFO,
+                    Logger.getLogger(this.getClass()), "Hello World",
+                    new Exception())));
+            refs.add(writeStore.store(PinpointTestUtils.createEvent(Level.INFO,
+                    Logger.getLogger(this.getClass()), "Hello World2",
+                    new Exception())));
+
+            // after doing some writes, read and verify
+            checkRestoredEvents(readStore, refs);
+
+            // now do some more writes...
+            refs.add(writeStore.store(PinpointTestUtils.createEvent(Level.INFO,
+                    Logger.getLogger(this.getClass()), "Hello World",
+                    new Exception())));
+            refs.add(writeStore.store(PinpointTestUtils.createEvent(Level.INFO,
+                    Logger.getLogger(this.getClass()), "Hello World2",
+                    new Exception())));
+
+            // ... and check again, to make sure the writes haven't stuffed
+            // something.
+            checkRestoredEvents(readStore, refs);
+
+        } finally {
+            readStore.close();
+            writeStore.close();
+        }
+
+    }
+
+    protected abstract EventStore createStoreForTest();
+
+    private void checkRestoredEvents(EventStore readStore, List<String> refs) {
+        for (String string : refs) {
+            LoggingEvent event = readStore.restore(string);
+            assertTrue(
+                    "Should have found an event with 'Hello' in the message",
+                    event.getMessage().toString().startsWith("Hello"));
+        }
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBEventStoreTest.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBEventStoreTest.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBEventStoreTest.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBEventStoreTest.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,27 @@
+package org.apache.logging.pinpoint.store;
+
+import java.io.File;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+
+public class HSQLDBEventStoreTest extends AbstractStoreTest {
+
+    private HSQLDBEventStore eventStore;
+
+    public void setUp() throws Exception {
+        BasicConfigurator.resetConfiguration();
+        BasicConfigurator.configure();
+        LogManager.getRootLogger().setLevel(Level.DEBUG);
+        File file = File.createTempFile(this.getClass().getName(), ".hsqldb");
+        file.deleteOnExit();
+        eventStore = new HSQLDBEventStore(file);
+    }
+
+    @Override
+    protected EventStore createStoreForTest() {
+        return eventStore;
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBTest.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBTest.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBTest.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/HSQLDBTest.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,132 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation. Licensed 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.logging.pinpoint.store;
+
+import java.io.File;
+import java.io.Serializable;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+import junit.framework.TestCase;
+
+import org.hsqldb.jdbc.jdbcDataSource;
+import org.junit.After;
+import org.junit.Before;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+public class HSQLDBTest extends TestCase {
+
+    private Connection connection;
+    private jdbcDataSource dataSource;
+
+    private JdbcTemplate jdbcTemplate;
+
+    @Before
+    public void setUp() throws Exception {
+        Class.forName("org.hsqldb.jdbcDriver");
+        String jdbcURL = "jdbc:hsqldb:hsql:file:" +
+                File.createTempFile(HSQLDBTest.class.getName(), ".hsqldb")
+                        .getAbsolutePath().replace('\\', '/');
+        this.dataSource = new jdbcDataSource();
+        dataSource.setDatabase(jdbcURL);
+        dataSource.setUser("sa");
+        dataSource.setPassword("");
+        this.connection = dataSource.getConnection();
+
+        this.jdbcTemplate = new JdbcTemplate(dataSource);
+
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        connection.close();
+    }
+
+    public void testThatPaulIsNotGoingCompletelyMadBasic() throws Exception {
+
+        connection
+                .createStatement()
+                .execute(
+                        "create cached table events(eventid INTEGER GENERATED BY DEFAULT AS IDENTITY(start with 1, increment by 2) PRIMARY KEY, foo int)");
+
+        int update = 0;
+        ResultSet rs = null;
+
+        update = connection.createStatement().executeUpdate(
+                "insert into events(foo) values(" + 42 + ")");
+        assertEquals(1, update);
+        rs = connection.createStatement().executeQuery("Call IDENTITY();");
+        assertTrue(rs.next());
+        assertEquals(1, rs.getInt(1));
+        update = connection.createStatement().executeUpdate(
+                "insert into events(foo) values(" + 69 + ")");
+
+        rs = connection.createStatement().executeQuery("Call IDENTITY();");
+        assertTrue(rs.next());
+        assertEquals(3, rs.getInt(1));
+
+        rs = connection.createStatement().executeQuery(
+                "select foo from events where eventid=1");
+        assertTrue(rs.next());
+        assertEquals(42, rs.getInt(1));
+
+        rs = connection.createStatement().executeQuery(
+                "select foo from events where eventid=3");
+        assertTrue(rs.next());
+        assertEquals(69, rs.getInt(1));
+
+    }
+
+    public void testThatPaulIsNotGoingCompletelyMadObjectSerialization()
+            throws Exception {
+
+        connection
+                .createStatement()
+                .execute(
+                        "create cached table events(eventid INTEGER GENERATED BY DEFAULT AS IDENTITY(start with 1, increment by 2) PRIMARY KEY, event OTHER)");
+
+        ResultSet rs = null;
+        int update = 0;
+
+        PreparedStatement ps = connection
+                .prepareStatement("insert into events(event) values(?)");
+        ps.clearParameters();
+        ps.setObject(1, new Foo());
+        update = ps.executeUpdate();
+        assertEquals(1, update);
+
+        rs = connection.createStatement().executeQuery("Call IDENTITY();");
+        assertTrue(rs.next());
+        assertEquals(1, rs.getInt(1));
+
+        ps.clearParameters();
+        ps.setObject(1, new Foo());
+        update = ps.executeUpdate();
+        assertEquals(1, update);
+
+        rs = connection.createStatement().executeQuery("Call IDENTITY();");
+        assertTrue(rs.next());
+        assertEquals(3, rs.getInt(1));
+
+        rs = connection.createStatement().executeQuery(
+                "select event from events where eventid=1");
+        assertTrue(rs.next());
+        Object obj = null;
+        obj = rs.getObject(1);
+        assertNotNull(obj);
+        assertEquals(Foo.class, obj.getClass());
+
+    }
+
+    private static class Foo implements Serializable {
+
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/SimpleEventStoreTest.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/SimpleEventStoreTest.java?view=auto&rev=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/SimpleEventStoreTest.java (added)
+++ labs/pinpoint/trunk/pinpoint-core/src/test/java/org/apache/logging/pinpoint/store/SimpleEventStoreTest.java Sat Aug 11 03:43:26 2007
@@ -0,0 +1,24 @@
+package org.apache.logging.pinpoint.store;
+
+import java.io.File;
+
+import org.apache.commons.lang.SystemUtils;
+
+public class SimpleEventStoreTest extends AbstractStoreTest {
+
+    private File testStoreFile = new File(SystemUtils.getJavaIoTmpDir(),
+            SimpleEventStoreTest.class.getName() + ".ser");
+
+    public void setUp() throws Exception {
+    }
+
+    public void tearDown() throws Exception {
+        testStoreFile.delete();
+    }
+
+    @Override
+    protected EventStore createStoreForTest() {
+        return new SimpleEventStore(testStoreFile);
+    }
+
+}

Modified: labs/pinpoint/trunk/pinpoint-importer/src/main/java/org/apache/logging/pinpoint/importer/Importer.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-importer/src/main/java/org/apache/logging/pinpoint/importer/Importer.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-importer/src/main/java/org/apache/logging/pinpoint/importer/Importer.java (original)
+++ labs/pinpoint/trunk/pinpoint-importer/src/main/java/org/apache/logging/pinpoint/importer/Importer.java Sat Aug 11 03:43:26 2007
@@ -45,7 +45,7 @@
 import org.apache.logging.pinpoint.analyser.DefaultAnalyzerFactory;
 import org.apache.logging.pinpoint.converter.BatchIndexWriterFactory;
 import org.apache.logging.pinpoint.converter.EventWriter;
-import org.apache.logging.pinpoint.converter.SimpleEventStore;
+import org.apache.logging.pinpoint.store.SimpleEventStore;
 import org.apache.logging.pinpoint.utils.PinpointUtils;
 
 public class Importer implements Runnable {

Modified: labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointSearcher.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointSearcher.java?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointSearcher.java (original)
+++ labs/pinpoint/trunk/pinpoint-search/src/main/java/org/apache/logging/pinpoint/search/PinpointSearcher.java Sat Aug 11 03:43:26 2007
@@ -20,8 +20,8 @@
 
 import org.apache.log4j.spi.LoggingEvent;
 import org.apache.logging.pinpoint.PinpointContext;
-import org.apache.logging.pinpoint.converter.EventStore;
 import org.apache.logging.pinpoint.resolver.OffsetAndLength;
+import org.apache.logging.pinpoint.store.EventStore;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.search.Filter;
 import org.apache.lucene.search.Hit;
@@ -112,7 +112,8 @@
                         .resolveLocationFromDocument(document);
                 return eventStore.restore(eventLocationKey);
             } catch (Exception e) {
-                throw new RuntimeException("Failed to navigate to next hit", e);
+                throw new RuntimeException("Failed to navigate to next hit: " +
+                        debugHit(hit), e);
             }
         }
 
@@ -121,6 +122,16 @@
             throw new UnsupportedOperationException("remove() is not supported");
         }
 
+    }
+
+    private String debugHit(Hit hit) {
+        try {
+            StringBuilder buf = new StringBuilder();
+            buf.append("docId:").append(hit.getId());
+            return buf.toString();
+        } catch (Exception e) {
+            return "<failed to create debug String" + e.getMessage();
+        }
     }
 
     public void close() {

Modified: labs/pinpoint/trunk/pom.xml
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pom.xml?view=diff&rev=564890&r1=564889&r2=564890
==============================================================================
--- labs/pinpoint/trunk/pom.xml (original)
+++ labs/pinpoint/trunk/pom.xml Sat Aug 11 03:43:26 2007
@@ -48,15 +48,6 @@
           <target>1.5</target>
         </configuration>
       </plugin>
-<!--      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-doap-plugin</artifactId>
-        <configuration>
-          <category>logging</category>
-          <language>Java</language>
-        </configuration>
-      </plugin>
--->
     </plugins>
   </build>
   <reporting>
@@ -78,4 +69,15 @@
       </plugin>
     </plugins>
   </reporting>
+  <distributionManagement>
+      <repository>
+      <id>logging.repo</id>
+      <url>scp://people.apache.org/home/psmith/public_html/logging.apache.org/repo/</url>
+    </repository>
+    <site>
+      <id>pinpoint.site</id>
+      <url>scp://people.apache.org/home/psmith/public_html/${project.artifactId}/</url>
+    </site>
+ </distributionManagement>
+  
 </project>



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