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]