You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/11/27 05:16:11 UTC
svn commit: r479508 - in /incubator/tuscany/java/sca:
kernel/core/src/main/java/org/apache/tuscany/core/component/scope/
kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/
kernel/core/src/main/java/org/apache/tuscany/core/services/s...
Author: jmarino
Date: Sun Nov 26 20:16:10 2006
New Revision: 479508
URL: http://svn.apache.org/viewvc?view=rev&rev=479508
Log:
support expiration propagation from conversation invocation to store
Added:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java (with props)
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java (with props)
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/store/memory/MemoryStore.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerPersistenceTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderMetadataTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java
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.journal/src/main/java/org/apache/tuscany/persistence/store/journal/JournalStore.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java Sun Nov 26 20:16:10 2006
@@ -34,9 +34,6 @@
import org.apache.tuscany.spi.services.store.StoreReadException;
import org.apache.tuscany.spi.services.store.StoreWriteException;
-import org.apache.tuscany.core.component.event.ConversationEnd;
-import org.apache.tuscany.core.component.event.ConversationStart;
-
/**
* A scope context which manages atomic component instances keyed on a conversation id
*
@@ -58,13 +55,6 @@
public void onEvent(Event event) {
checkInit();
- if (event instanceof ConversationStart) {
- Object key = ((ConversationStart) event).getId();
- workContext.setIdentifier(Scope.CONVERSATION, key);
- } else if (event instanceof ConversationEnd) {
- Object key = ((ConversationEnd) event).getId();
- workContext.clearIdentifier(key);
- }
}
public synchronized void start() {
@@ -90,11 +80,16 @@
workContext.setCurrentAtomicComponent(component);
Object instance = nonDurableStore.readRecord(component, conversationId);
if (instance != null) {
+ if (component.getMaxIdleTime() > 0) {
+ // update expiration
+ long expire = System.currentTimeMillis() + component.getMaxIdleTime();
+ nonDurableStore.updateRecord(component, conversationId, instance, expire);
+ }
return instance;
} else {
Object o = component.createInstance();
- // FIXME support expirations
- nonDurableStore.insertRecord(component, conversationId, o, Store.NEVER);
+ long expire = calculateExpiration(component);
+ nonDurableStore.insertRecord(component, conversationId, o, expire);
return o;
}
} catch (StoreReadException e) {
@@ -116,12 +111,19 @@
workContext.setCurrentAtomicComponent(component);
Object instance = nonDurableStore.readRecord(component, conversationId);
if (instance != null) {
+ if (component.getMaxIdleTime() > 0) {
+ // update expiration
+ long expire = System.currentTimeMillis() + component.getMaxIdleTime();
+ nonDurableStore.updateRecord(component, conversationId, instance, expire);
+ }
return instance;
} else {
throw new TargetNotFoundException(component.getName());
}
} catch (StoreReadException e) {
throw new TargetException(e);
+ } catch (StoreWriteException e) {
+ throw new TargetException(e);
} finally {
workContext.setCurrentAtomicComponent(null);
}
@@ -169,5 +171,17 @@
throw e;
}
return conversationId;
+ }
+
+ private long calculateExpiration(AtomicComponent component) {
+ if (component.getMaxAge() > 0) {
+ long now = System.currentTimeMillis();
+ return now + component.getMaxAge();
+ } else if (component.getMaxIdleTime() > 0) {
+ long now = System.currentTimeMillis();
+ return now + component.getMaxIdleTime();
+ } else {
+ return Store.DEFAULT_EXPIRATION_OFFSET;
+ }
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java Sun Nov 26 20:16:10 2006
@@ -80,9 +80,9 @@
} else {
configuration.setInitLevel(componentType.getInitLevel());
}
- if (componentType.getMaxAge() >= 0) {
+ if (componentType.getMaxAge() > 0) {
configuration.setMaxAge(componentType.getMaxAge());
- } else if (componentType.getMaxIdleTime() >= 0) {
+ } else if (componentType.getMaxIdleTime() > 0) {
configuration.setMaxIdleTime(componentType.getMaxIdleTime());
}
Method initMethod = componentType.getInitMethod();
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/store/memory/MemoryStore.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/store/memory/MemoryStore.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/store/memory/MemoryStore.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/store/memory/MemoryStore.java Sun Nov 26 20:16:10 2006
@@ -50,11 +50,28 @@
private ScheduledExecutorService scheduler;
private long reaperInterval = 300000;
private StoreMonitor monitor;
+ private long defaultExpirationOffset = 600000; // 10 minutes
public MemoryStore(@Monitor StoreMonitor monitor) {
this.monitor = monitor;
this.store = new ConcurrentHashMap<SCAObject, Map<String, Record>>();
this.scheduler = Executors.newSingleThreadScheduledExecutor();
+ }
+
+ /**
+ * Returns the maximum default expiration offset for records in the store
+ * @return the maximum default expiration offset for records in the store
+ */
+ @Property
+ public long getExpirationOffset() {
+ return defaultExpirationOffset;
+ }
+
+ /**
+ * Sets the maximum default expiration offset for records in the store
+ */
+ public void setDefaultExpirationOffset(long defaultExpirationOffset) {
+ this.defaultExpirationOffset = defaultExpirationOffset;
}
/**
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java?view=auto&rev=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java Sun Nov 26 20:16:10 2006
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.tuscany.core.component.scope;
+
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.services.store.Store;
+import org.apache.tuscany.spi.model.Scope;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+import org.apache.tuscany.core.component.WorkContextImpl;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationalScopeContainerMaxAgeTestCase extends TestCase {
+
+ private ScopeContainer container;
+ private WorkContext context;
+ private Store store;
+ private AtomicComponent component;
+
+ public void testMaxAgeUpdate() {
+ context.setIdentifier(Scope.CONVERSATION, "12345");
+ container.getInstance(component);
+ EasyMock.verify(store);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ ConversationalScopeContainerMaxAgeTestCase.Foo foo = new ConversationalScopeContainerMaxAgeTestCase.Foo();
+ context = new WorkContextImpl();
+ component = EasyMock.createMock(AtomicComponent.class);
+ EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
+ EasyMock.expect(component.getMaxAge()).andReturn(600000L).atLeastOnce();
+ EasyMock.replay(component);
+ store = EasyMock.createMock(Store.class);
+ EasyMock.expect(store.readRecord(EasyMock.isA(SCAObject.class), EasyMock.isA(String.class))).andReturn(foo);
+ EasyMock.replay(store);
+ container = new ConversationalScopeContainerImpl(store, context);
+ container.start();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ context.clearIdentifier(Scope.CONVERSATION);
+ container.stop();
+ }
+
+ private class Foo {
+
+ }
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxAgeTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java?view=auto&rev=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java Sun Nov 26 20:16:10 2006
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.tuscany.core.component.scope;
+
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.services.store.Store;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.component.WorkContextImpl;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationalScopeContainerMaxIdleTimeTestCase extends TestCase {
+
+ private ScopeContainer container;
+ private WorkContext context;
+ private Store store;
+ private AtomicComponent component;
+
+ public void testMaxIdleTimeUpdate() {
+ context.setIdentifier(Scope.CONVERSATION, "12345");
+ container.getInstance(component);
+ EasyMock.verify(store);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ Foo foo = new Foo();
+ context = new WorkContextImpl();
+ component = EasyMock.createMock(AtomicComponent.class);
+ EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(600000L).atLeastOnce();
+ EasyMock.replay(component);
+ store = EasyMock.createMock(Store.class);
+ EasyMock.expect(store.readRecord(EasyMock.isA(SCAObject.class), EasyMock.isA(String.class))).andReturn(foo);
+ store.updateRecord(EasyMock.isA(SCAObject.class),
+ EasyMock.isA(String.class),
+ EasyMock.eq(foo),
+ EasyMock.anyLong());
+ EasyMock.replay(store);
+ container = new ConversationalScopeContainerImpl(store, context);
+ container.start();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ context.clearIdentifier(Scope.CONVERSATION);
+ container.stop();
+ }
+
+ private class Foo {
+
+ }
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerMaxIdleTimeTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerPersistenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerPersistenceTestCase.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerPersistenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerPersistenceTestCase.java Sun Nov 26 20:16:10 2006
@@ -49,6 +49,7 @@
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.eq(container));
EasyMock.expect(component.createInstance()).andReturn(new Foo());
+ EasyMock.expect(component.getMaxAge()).andReturn(600000L).atLeastOnce();
EasyMock.replay(component);
container.register(component);
assertTrue(container.getInstance(component) instanceof Foo);
@@ -61,6 +62,7 @@
context.setIdentifier(Scope.CONVERSATION, id);
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.eq(container));
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
EasyMock.replay(component);
container.register(component);
Foo foo = new Foo();
@@ -78,6 +80,7 @@
context.setIdentifier(Scope.CONVERSATION, id);
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.eq(container));
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
EasyMock.replay(component);
container.register(component);
Foo foo = new Foo();
@@ -93,6 +96,7 @@
context.setIdentifier(Scope.CONVERSATION, id);
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.eq(container));
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
EasyMock.replay(component);
container.register(component);
@@ -114,6 +118,8 @@
context.setIdentifier(Scope.CONVERSATION, id);
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.eq(container));
+ EasyMock.expect(component.getMaxAge()).andReturn(600000L).atLeastOnce();
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
EasyMock.expect(component.createInstance()).andReturn(new Foo());
EasyMock.replay(component);
container.register(component);
@@ -133,6 +139,7 @@
context.setIdentifier(Scope.CONVERSATION, id);
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+ EasyMock.expect(component.getMaxIdleTime()).andReturn(-1L).atLeastOnce();
component.addListener(EasyMock.eq(container));
EasyMock.replay(component);
container.register(component);
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderMetadataTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderMetadataTestCase.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderMetadataTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderMetadataTestCase.java Sun Nov 26 20:16:10 2006
@@ -56,6 +56,13 @@
assertEquals(100, component.getMaxIdleTime());
}
+ public void testNoMaxAgeNoMaxIdleTime() throws Exception {
+ JavaComponentBuilder builder = new JavaComponentBuilder();
+ JavaAtomicComponent component = (JavaAtomicComponent) builder.build(parent, definition, deploymentContext);
+ assertEquals(-1, component.getMaxAge());
+ assertEquals(-1, component.getMaxIdleTime());
+ }
+
public void testScope() throws Exception {
JavaComponentBuilder builder = new JavaComponentBuilder();
JavaAtomicComponent component = (JavaAtomicComponent) builder.build(parent, definition, deploymentContext);
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java Sun Nov 26 20:16:10 2006
@@ -79,7 +79,7 @@
long maxIdleTime,
long maxAge) {
super(name, parent);
- assert !(maxIdleTime >= 0 && maxAge >= 0);
+ assert !(maxIdleTime > 0 && maxAge > 0);
this.scopeContainer = scopeContainer;
this.wireService = wireService;
this.workContext = workContext;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java Sun Nov 26 20:16:10 2006
@@ -29,8 +29,11 @@
*/
public interface Store {
+ /* Used to indicate an the default expiration offset for records for the store */
+ long DEFAULT_EXPIRATION_OFFSET = -1;
+
/* Used to indicate an entry should not expire */
- long NEVER = -1;
+ long NEVER = -2;
/**
* Adds the given record to the store. Implementations may choose different strategies for writing data such as
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=479508&r1=479507&r2=479508
==============================================================================
--- 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 Sun Nov 26 20:16:10 2006
@@ -58,6 +58,7 @@
@SuppressWarnings({"FieldCanBeLocal"})
private ScheduledExecutorService scheduler;
private long reaperInterval = 300000;
+ private long defaultExpirationOffset = 600000; // 10 minutes
//private
public JDBCStore(@Resource(mappedName = "StoreDS") DataSource dataSource,
@@ -66,6 +67,22 @@
this.dataSource = dataSource;
this.converter = converter;
this.monitor = monitor;
+ }
+
+ /**
+ * Returns the maximum default expiration offset for records in the store
+ * @return the maximum default expiration offset for records in the store
+ */
+ @Property
+ public long getExpirationOffset() {
+ return defaultExpirationOffset;
+ }
+
+ /**
+ * Sets the maximum default expiration offset for records in the store
+ */
+ public void setDefaultExpirationOffset(long defaultExpirationOffset) {
+ this.defaultExpirationOffset = defaultExpirationOffset;
}
/**
Modified: incubator/tuscany/java/sca/services/persistence/store.journal/src/main/java/org/apache/tuscany/persistence/store/journal/JournalStore.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/store.journal/src/main/java/org/apache/tuscany/persistence/store/journal/JournalStore.java?view=diff&rev=479508&r1=479507&r2=479508
==============================================================================
--- incubator/tuscany/java/sca/services/persistence/store.journal/src/main/java/org/apache/tuscany/persistence/store/journal/JournalStore.java (original)
+++ incubator/tuscany/java/sca/services/persistence/store.journal/src/main/java/org/apache/tuscany/persistence/store/journal/JournalStore.java Sun Nov 26 20:16:10 2006
@@ -93,7 +93,7 @@
private ScheduledExecutorService scheduler;
private StoreMonitor monitor;
private Journal journal;
-
+ private long defaultExpirationOffset = 600000; // 10 minutes
private long reaperInterval = 1000;
private int blockSize = 4096; // 4k standard for HOWL
@@ -140,6 +140,22 @@
public int getBlockSize() {
return blockSize;
+ }
+
+ /**
+ * Returns the maximum default expiration offset for records in the store
+ * @return the maximum default expiration offset for records in the store
+ */
+ @Property
+ public long getExpirationOffset() {
+ return defaultExpirationOffset;
+ }
+
+ /**
+ * Sets the maximum default expiration offset for records in the store
+ */
+ public void setDefaultExpirationOffset(long defaultExpirationOffset) {
+ this.defaultExpirationOffset = defaultExpirationOffset;
}
@Property
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org