Author: jmarino
Date: Thu Nov 16 22:52:06 2006
New Revision: 476062

URL: http://svn.apache.org/viewvc?view=rev&rev=476062
Log:
store api changes

Modified:
    
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/main/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStore.java
    
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/test/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStoreTestCase.java
    
incubator/tuscany/java/sca/services/persistence/store.memory/src/main/java/org/apache/tuscany/service/persistence/store/memory/MemoryStore.java
    
incubator/tuscany/java/sca/services/persistence/store.memory/src/test/java/org/apache/tuscany/service/persistence/store/memory/MemoryStoreTestCase.java
    incubator/tuscany/java/sca/services/persistence/store/pom.xml
    
incubator/tuscany/java/sca/services/persistence/store/src/main/java/org/apache/tuscany/service/persistence/store/Store.java

Modified: 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/main/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStore.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store.jdbc/src/main/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStore.java?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/main/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStore.java
 (original)
+++ 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/main/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStore.java
 Thu Nov 16 22:52:06 2006
@@ -37,6 +37,7 @@
 import org.osoa.sca.annotations.Resource;
 
 import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.component.SCAObject;
 
 import org.apache.tuscany.api.annotation.Monitor;
 import org.apache.tuscany.service.persistence.store.RecoveryListener;
@@ -133,7 +134,7 @@
 
     }
 
-    public void appendRecord(UUID id, Object object, long expiration) throws 
StoreWriteException {
+    public void appendRecord(SCAObject owner, UUID id, Object object, long 
expiration) throws StoreWriteException {
         if (!(object instanceof Serializable)) {
             StoreWriteException e = new StoreWriteException("Type must 
implement serializable");
             e.setIdentifier(object.getClass().getName());
@@ -211,7 +212,7 @@
         }
     }
 
-    public void updateRecord(UUID id, Object object) throws 
StoreWriteException {
+    public void updateRecord(SCAObject owner, UUID id, Object object) throws 
StoreWriteException {
         if (!(object instanceof Serializable)) {
             StoreWriteException e = new StoreWriteException("Type must 
implement serializable");
             e.setIdentifier(object.getClass().getName());
@@ -292,7 +293,7 @@
 
     }
 
-    public Object readRecord(UUID id) throws StoreReadException {
+    public Object readRecord(SCAObject owner, UUID id) throws 
StoreReadException {
         Record record;
         synchronized (cache) {
             record = cache.get(id);

Modified: 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/test/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStoreTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store.jdbc/src/test/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStoreTestCase.java?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/test/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStoreTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/services/persistence/store.jdbc/src/test/java/org/apache/tuscany/service/persistence/store/jdbc/JDBCStoreTestCase.java
 Thu Nov 16 22:52:06 2006
@@ -45,7 +45,7 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         Statement stmt = ds.getConnection().createStatement();
         ResultSet rs = stmt.executeQuery(SELECT_SQL);
         rs.next();
@@ -58,8 +58,8 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.appendRecord(null, id, foo, NEVER);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test", foo2.data);
     }
 
@@ -67,7 +67,7 @@
     public void testNotFound() throws Exception {
         store.init();
         UUID id = UUID.randomUUID();
-        assertNull(store.readRecord(id));
+        assertNull(store.readRecord(null, id));
     }
 
     public void testBatchAppend() throws Exception {
@@ -75,7 +75,7 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         Statement stmt = ds.getConnection().createStatement();
         ResultSet rs = stmt.executeQuery(SELECT_SQL);
         assertFalse(rs.next());
@@ -86,8 +86,8 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.appendRecord(null, id, foo, NEVER);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test", foo2.data);
     }
 
@@ -97,9 +97,9 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, System.currentTimeMillis() + 20);
+        store.appendRecord(null, id, foo, System.currentTimeMillis() + 20);
         Thread.sleep(100);
-        assertNull(store.readRecord(id));
+        assertNull(store.readRecord(null, id));
     }
 
     public void testExpirationFromStore() throws Exception {
@@ -107,19 +107,19 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, System.currentTimeMillis() + 20);
+        store.appendRecord(null, id, foo, System.currentTimeMillis() + 20);
         Thread.sleep(100);
-        assertNull(store.readRecord(id));
+        assertNull(store.readRecord(null, id));
     }
 
     public void testUpdateRead() throws Exception {
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         foo.data = "test2";
-        store.updateRecord(id, foo);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.updateRecord(null, id, foo);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test2", foo2.data);
     }
 
@@ -128,10 +128,10 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         foo.data = "test2";
-        store.updateRecord(id, foo);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.updateRecord(null, id, foo);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test2", foo2.data);
     }
 
@@ -140,12 +140,12 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         foo.data = "test2";
-        store.updateRecord(id, foo);
+        store.updateRecord(null, id, foo);
         // create a second record to force a batch write
-        store.appendRecord(UUID.randomUUID(), new Foo("test3"), NEVER);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.appendRecord(null, UUID.randomUUID(), new Foo("test3"), NEVER);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test2", foo2.data);
     }
 
@@ -154,15 +154,15 @@
         store.init();
         Foo foo = new Foo("test");
         UUID id = UUID.randomUUID();
-        store.appendRecord(id, foo, NEVER);
+        store.appendRecord(null, id, foo, NEVER);
         UUID id2 = UUID.randomUUID();
-        store.appendRecord(id2, foo, NEVER);
+        store.appendRecord(null, id2, foo, NEVER);
         foo.data = "test2";
-        store.updateRecord(id, foo);
-        store.updateRecord(id2, foo);
-        Foo foo2 = (Foo) store.readRecord(id);
+        store.updateRecord(null, id, foo);
+        store.updateRecord(null, id2, foo);
+        Foo foo2 = (Foo) store.readRecord(null, id);
         assertEquals("test2", foo2.data);
-        Foo foo3 = (Foo) store.readRecord(id2);
+        Foo foo3 = (Foo) store.readRecord(null, id2);
         assertEquals("test2", foo3.data);
     }
 

Modified: 
incubator/tuscany/java/sca/services/persistence/store.memory/src/main/java/org/apache/tuscany/service/persistence/store/memory/MemoryStore.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store.memory/src/main/java/org/apache/tuscany/service/persistence/store/memory/MemoryStore.java?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- 
incubator/tuscany/java/sca/services/persistence/store.memory/src/main/java/org/apache/tuscany/service/persistence/store/memory/MemoryStore.java
 (original)
+++ 
incubator/tuscany/java/sca/services/persistence/store.memory/src/main/java/org/apache/tuscany/service/persistence/store/memory/MemoryStore.java
 Thu Nov 16 22:52:06 2006
@@ -30,6 +30,8 @@
 import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Scope;
 
+import org.apache.tuscany.spi.component.SCAObject;
+
 import org.apache.tuscany.api.annotation.Monitor;
 import org.apache.tuscany.service.persistence.store.RecoveryListener;
 import org.apache.tuscany.service.persistence.store.Store;
@@ -43,8 +45,7 @@
  */
 @Scope("MODULE")
 public class MemoryStore implements Store {
-
-    private Map<UUID, Record> store;
+    private Map<SCAObject, Map<UUID, Record>> store;
     // TODO integrate with a core threading scheme
     private ScheduledExecutorService scheduler;
     private long reaperInterval = 300000;
@@ -52,7 +53,7 @@
 
     public MemoryStore(@Monitor StoreMonitor monitor) {
         this.monitor = monitor;
-        this.store = new ConcurrentHashMap<UUID, Record>();
+        this.store = new ConcurrentHashMap<SCAObject, Map<UUID, Record>>();
         this.scheduler = Executors.newSingleThreadScheduledExecutor();
     }
 
@@ -80,12 +81,23 @@
         monitor.stop("In-memory store stopped");
     }
 
-    public void appendRecord(UUID id, Object object, long expiration) throws 
StoreWriteException {
-        store.put(id, new Record(object, expiration));
+    public void appendRecord(SCAObject owner, UUID id, Object object, long 
expiration) throws StoreWriteException {
+        Map<UUID, Record> map = store.get(owner);
+        if (map == null) {
+            map = new ConcurrentHashMap<UUID, Record>();
+            store.put(owner, map);
+        }
+        map.put(id, new Record(object, expiration));
     }
 
-    public void updateRecord(UUID id, Object object) throws 
StoreWriteException {
-        Record record = store.get(id);
+    public void updateRecord(SCAObject owner, UUID id, Object object) throws 
StoreWriteException {
+        Map<UUID, Record> map = store.get(owner);
+        if (map == null) {
+            StoreWriteException e = new StoreWriteException("Record not 
found");
+            e.setIdentifier(id.toString());
+            throw e;
+        }
+        Record record = map.get(id);
         if (record == null) {
             StoreWriteException e = new StoreWriteException("Record not 
found");
             e.setIdentifier(id.toString());
@@ -94,8 +106,12 @@
         record.data = object;
     }
 
-    public Object readRecord(UUID id) {
-        Record record = store.get(id);
+    public Object readRecord(SCAObject owner, UUID id) {
+        Map<UUID, Record> map = store.get(owner);
+        if (map == null) {
+            return null;
+        }
+        Record record = map.get(id);
         if (record != null) {
             return record.data;
         }
@@ -107,14 +123,15 @@
     }
 
     public void recover(RecoveryListener listener) {
-        monitor.beginRecover();
-        listener.onBegin();
-        for (UUID id : store.keySet()) {
-            monitor.recover(id);
-            listener.onRecord(id);
-        }
-        listener.onEnd();
-        monitor.endRecover();
+        throw new UnsupportedOperationException();
+//        monitor.beginRecover();
+//        listener.onBegin();
+//        for (UUID id : store.keySet()) {
+//            monitor.recover(id);
+//            listener.onRecord(id);
+//        }
+//        listener.onEnd();
+//        monitor.endRecover();
     }
 
     private class Record {
@@ -139,10 +156,12 @@
 
         public void run() {
             long now = System.currentTimeMillis();
-            for (Map.Entry<UUID, Record> entry : store.entrySet()) {
-                final long expiration = entry.getValue().expiration;
-                if (expiration != NEVER && now >= expiration) {
-                    store.remove(entry.getKey());
+            for (Map<UUID, Record> map : store.values()) {
+                for (Map.Entry<UUID, Record> entry : map.entrySet()) {
+                    final long expiration = entry.getValue().expiration;
+                    if (expiration != NEVER && now >= expiration) {
+                        map.remove(entry.getKey());
+                    }
                 }
             }
         }

Modified: 
incubator/tuscany/java/sca/services/persistence/store.memory/src/test/java/org/apache/tuscany/service/persistence/store/memory/MemoryStoreTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store.memory/src/test/java/org/apache/tuscany/service/persistence/store/memory/MemoryStoreTestCase.java?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- 
incubator/tuscany/java/sca/services/persistence/store.memory/src/test/java/org/apache/tuscany/service/persistence/store/memory/MemoryStoreTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/services/persistence/store.memory/src/test/java/org/apache/tuscany/service/persistence/store/memory/MemoryStoreTestCase.java
 Thu Nov 16 22:52:06 2006
@@ -20,10 +20,11 @@
 
 import java.util.UUID;
 
-import org.apache.tuscany.service.persistence.store.StoreMonitor;
+import org.apache.tuscany.spi.component.AtomicComponent;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.service.persistence.store.Store;
+import org.apache.tuscany.service.persistence.store.StoreMonitor;
 import org.easymock.EasyMock;
 
 /**
@@ -35,11 +36,13 @@
         MemoryStore store = new 
MemoryStore(EasyMock.createNiceMock(StoreMonitor.class));
         store.setReaperInterval(10);
         store.init();
+        AtomicComponent component = 
EasyMock.createNiceMock(AtomicComponent.class);
+        EasyMock.replay(component);
         UUID id = UUID.randomUUID();
         Object value = new Object();
-        store.appendRecord(id, value, 1);
+        store.appendRecord(component, id, value, 1);
         Thread.sleep(100);
-        assertNull(store.readRecord(id));
+        assertNull(store.readRecord(component, id));
         store.destroy();
     }
 
@@ -47,11 +50,13 @@
         MemoryStore store = new 
MemoryStore(EasyMock.createNiceMock(StoreMonitor.class));
         store.setReaperInterval(10);
         store.init();
+        AtomicComponent component = 
EasyMock.createNiceMock(AtomicComponent.class);
+        EasyMock.replay(component);
         UUID id = UUID.randomUUID();
         Object value = new Object();
-        store.appendRecord(id, value, Store.NEVER);
+        store.appendRecord(component, id, value, Store.NEVER);
         Thread.sleep(100);
-        assertNotNull(store.readRecord(id));
+        assertNotNull(store.readRecord(component, id));
         store.destroy();
     }
 

Modified: incubator/tuscany/java/sca/services/persistence/store/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store/pom.xml?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- incubator/tuscany/java/sca/services/persistence/store/pom.xml (original)
+++ incubator/tuscany/java/sca/services/persistence/store/pom.xml Thu Nov 16 
22:52:06 2006
@@ -38,6 +38,12 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.tuscany.sca.kernel</groupId>
+            <artifactId>tuscany-spi</artifactId>
+            <version>${sca.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>

Modified: 
incubator/tuscany/java/sca/services/persistence/store/src/main/java/org/apache/tuscany/service/persistence/store/Store.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store/src/main/java/org/apache/tuscany/service/persistence/store/Store.java?view=diff&rev=476062&r1=476061&r2=476062
==============================================================================
--- 
incubator/tuscany/java/sca/services/persistence/store/src/main/java/org/apache/tuscany/service/persistence/store/Store.java
 (original)
+++ 
incubator/tuscany/java/sca/services/persistence/store/src/main/java/org/apache/tuscany/service/persistence/store/Store.java
 Thu Nov 16 22:52:06 2006
@@ -20,6 +20,8 @@
 
 import java.util.UUID;
 
+import org.apache.tuscany.spi.component.SCAObject;
+
 /**
  * Implementations provide a persistent store for runtime data such as 
conversational state. A persistent store could be
  * implemented in a durable fashion using JDBC or a journaling system, or 
using a non-durable mechanism such as an
@@ -30,27 +32,28 @@
 public interface Store {
 
     /* Used to indicate an entry should not expire */
-    final long NEVER = -1;
+    long NEVER = -1;
 
     /**
      * Adds the given record to the store. Implementations may choose 
different strategies for writing data such as
      * write-through or write-behind.
      *
+     * @param owner
      * @param id         the unique id of the record
      * @param object     the object representing the data to write
      * @param expiration the time in milliseconds when the entry expires
      * @throws StoreWriteException if an error occurs during the write 
operation
      */
-    void appendRecord(UUID id, Object object, long expiration) throws 
StoreWriteException;
+    void appendRecord(SCAObject owner, UUID id, Object object, long 
expiration) throws StoreWriteException;
 
-    void updateRecord(UUID id, Object object) throws StoreWriteException;
+    void updateRecord(SCAObject owner, UUID id, Object object) throws 
StoreWriteException;
 
     /**
      * Returns the deserialized object in the store corresponding to the given 
id
      *
      * @return the deserialized object or null if one is not found
      */
-    Object readRecord(UUID id) throws StoreReadException;
+    Object readRecord(SCAObject owner, UUID id) throws StoreReadException;
 
     /**
      * Removes all records from the store



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to