[jboss-cvs] JBossAS SVN: r84330 - in projects/ejb3/branches/cluster-dev/cache: src/main/java/org/jboss/ejb3/cache and 10 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 17 17:37:19 EST 2009
Author: bstansberry at jboss.com
Date: 2009-02-17 17:37:18 -0500 (Tue, 17 Feb 2009)
New Revision: 84330
Added:
projects/ejb3/branches/cluster-dev/cache/eclipse-target/
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Cache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/CacheItem.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Identifiable.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/PassivationManager.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulCacheFactory.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulObjectFactory.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/CacheFactoryNotRegisteredException.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/StatefulCacheFactoryRegistry.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchronizationRegistry.java
Removed:
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchroniztionRegistry.java
Modified:
projects/ejb3/branches/cluster-dev/cache/
projects/ejb3/branches/cluster-dev/cache/.classpath
projects/ejb3/branches/cluster-dev/cache/.project
projects/ejb3/branches/cluster-dev/cache/pom.xml
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/GroupAwareTransactionalCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/GroupAwareBackingCacheImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheEntry.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/PassivatingBackingCacheImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupContainer.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberContainer.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimpleBackingCacheEntryStore.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonClusteredBackingCacheEntryStoreSource.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonPassivatingCacheFactory.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/PassivationExpirationCoordinatorImpl.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntry.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStore.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStoreSource.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/GroupAwareBackingCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PassivatingBackingCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PersistentObjectStore.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroup.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroupMember.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCache.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntry.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntryStore.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/CacheableTimestamp.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/FilePersistentObjectStore.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/GroupCreationContext.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/ItemCachePair.java
projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/PassivationExpirationRunner.java
projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoordinatedPassivationExpiration.ucls
projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoreAbstractions.ucls
projects/ejb3/branches/cluster-dev/cache/src/main/uml/Factories.ucls
projects/ejb3/branches/cluster-dev/cache/src/main/uml/GroupAwareCache.ucls
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/GroupedPassivatingUnitTestCase.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockBackingCacheEntryStoreSource.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCBackingCacheEntryStore.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/SessionSynchronizationInterceptorUnitTestCase.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/GroupAwareTransactionalCacheUnitTestCase.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContext.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockEjb3System.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockIdentifiable.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockPassivationManager.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransaction.java
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionManager.java
Log:
Sync up with ejb3-core 1.0.0.GA
Property changes on: projects/ejb3/branches/cluster-dev/cache
___________________________________________________________________
Name: svn:ignore
- target
+ target
.umlproject
Modified: projects/ejb3/branches/cluster-dev/cache/.classpath
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/.classpath 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/.classpath 2009-02-17 22:37:18 UTC (rev 84330)
@@ -1,23 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/test/java" output="target/tests-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/tests-classes" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="src" path="src/test/java" output="eclipse-target/tests-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="eclipse-target/tests-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="eclipse-target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.7.1/xml-apis-2.7.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/apache-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/oswego-concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/apache-slide/webdavlib/2.0/webdavlib-2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jboss-serialization/1.0.3.GA/jboss-serialization-1.0.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.1.GA/jboss-common-core-2.2.1.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-ext-api/0.3-SNAPSHOT/jboss-ejb3-ext-api-0.3-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-ejb-api/3.0.0.Beta3Update1/jboss-ejb-api-3.0.0.Beta3Update1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-transaction-api/1.0.1.Beta3Update1/jboss-transaction-api-1.0.1.Beta3Update1.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jbossws/jboss-jaxrpc/1.0.4.GA/jboss-jaxrpc-1.0.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/trove/trove/1.0.2/trove-1.0.2.jar"/>
-</classpath>
\ No newline at end of file
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+</classpath>
Modified: projects/ejb3/branches/cluster-dev/cache/.project
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/.project 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/.project 2009-02-17 22:37:18 UTC (rev 84330)
@@ -1,13 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>jboss-ejb3-cache</name>
- <comment>The Java EJB 3.0 Cache classes</comment>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
+ <name>jboss-ejb3-cache</name>
+ <comment>The Java EJB 3.0 Cache classes at key 32303037303533312D31303030206A626F73732D656A62332D63616368652F626573 </comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>com.soyatec.additional.Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>com.soyatec.additional.Nature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
Modified: projects/ejb3/branches/cluster-dev/cache/pom.xml
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/pom.xml 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/pom.xml 2009-02-17 22:37:18 UTC (rev 84330)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-build</artifactId>
- <version>0.13.0-SNAPSHOT</version>
+ <version>1.0.1.CACHE-SNAPSHOT</version>
<relativePath>../build/pom.xml</relativePath>
</parent>
@@ -20,7 +20,7 @@
<!-- Artifact Information -->
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-cache</artifactId>
- <version>0.14.0-SNAPSHOT</version>
+ <version>1.0.1.CACHE-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JBoss EJB 3.0 Cache</name>
<url>http://labs.jboss.com/jbossejb3/</url>
@@ -56,6 +56,7 @@
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-ext-api</artifactId>
+ <version>1.0.0</version>
</dependency>
<!-- GNU Trove -->
@@ -73,15 +74,22 @@
<!-- JBoss Common Logging -->
<dependency>
- <groupId>jboss</groupId>
- <artifactId>jboss-common-logging-log4j</artifactId>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-log4j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- JBoss Serialization -->
<dependency>
- <groupId>jboss</groupId>
- <artifactId>jboss-serialization</artifactId>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-serialization</artifactId>
+ <version>1.0.3.GA</version>
+ <exclusions>
+ <exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-logging-log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- JUnit -->
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Cache.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Cache.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Cache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,121 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.cache;
+
+import javax.ejb.NoSuchEJBException;
+
+
+/**
+ * Cache a stateful object and make sure any life cycle callbacks are
+ * called at the appropriate time.
+ * <p>
+ * A cache is linked to a {@link StatefulObjectFactory} and a {@link PassivationManager}.
+ * How the link is established is left beyond scope.
+ * </p>
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Brian Stansberry
+ *
+ * @version $Revision: $
+ */
+public interface Cache<T extends CacheItem>
+{
+ /**
+ * Creates and caches a new instance of <code>T</code>.
+ *
+ * @param initTypes the types of any <code>initValues</code>.
+ * May be <code>null</code>.
+ * @param initValues any paramaters to pass to <code>T</code>'s constructor.
+ * May be null, in which case a default constructor will
+ * be used.
+ * @return the new <code>T</code>'s {@link Identifiable#getId() id}.
+ */
+ Object create(Class<?> initTypes[], Object initValues[]);
+
+ /**
+ * Get the specified object from cache. This will mark
+ * the object as being in use.
+ *
+ * @param key the identifier of the object
+ * @return the object
+ * @throws NoSuchEJBException if the object does not exist
+ * @throws IllegalStateException if the object is already in use by another
+ * transaction or if {@link #release(CacheItem)}
+ * has not been invoked since the last time
+ * the object was gotten.
+ */
+ T get(Object key) throws NoSuchEJBException;
+
+ /**
+ * Signal the finish of the current operation on the object.
+ * If the object was {@link #get(Object) gotten from the cache} in the
+ * course of an ongoing transaction, the object will still be regarded as in
+ * use, but <code>get()</code> can safely be invoked again by that same
+ * transaction. If there was no transaction in effect when the object was
+ * gotten from the cache, invoking this method marks the object as no
+ * longer being in use.
+ *
+ * @param obj object previously gotten via {@link #get(Object)}
+ */
+ void release(T obj);
+
+ /**
+ * Remove the specified object from cache.
+ *
+ * @param key the identifier of the object
+ */
+ void remove(Object key);
+
+ /**
+ * Start the cache.
+ */
+ void start();
+
+ /**
+ * Stop the cache.
+ */
+ void stop();
+
+ /**
+ * Whether the cache is in the started state.
+ *
+ * @return <code>true</code> if started, <code>false</code> otherwise
+ * @return
+ */
+ boolean isStarted();
+
+ int getAvailableCount();
+
+ int getCacheSize();
+
+ int getCreateCount();
+
+ int getCurrentSize();
+
+ int getMaxSize();
+
+ int getPassivatedCount();
+
+ int getRemoveCount();
+
+ int getTotalSize();
+
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Cache.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/CacheItem.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/CacheItem.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/CacheItem.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/CacheItem.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.ejb3.cache;
+
+import java.io.Serializable;
+
+/**
+ * An item that can be stored in a {@link Cache}.
+ *
+ * @author Brian Stansberry
+ * @version $Revision$
+ */
+public interface CacheItem extends Identifiable, Serializable
+{
+ /**
+ * Gets whether this object's internal state has been modified since
+ * the last request to this method.
+ * <p>
+ * Implementations must be aggressive about returning <code>true</code> if
+ * they are uncertain about whether they have been modified; <code>false</code>
+ * should only be returned if the implementing object is certain its
+ * internal state has not been modified.
+ * </p>
+ *
+ * @return <code>true</code> if the state has been modified or the
+ * implementing object does not know; <code>false</code> otherwise.
+ */
+ boolean isModified();
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/CacheItem.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Identifiable.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/Identifiable.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Identifiable.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Identifiable.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.cache;
+
+/**
+ * An object that has an identification. How the object obtains
+ * it's identification is left beyond scope. Could be via construction
+ * or via a setter.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public interface Identifiable
+{
+ /**
+ * The object identifier.
+ * @return the object identifier
+ */
+ Object getId();
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/Identifiable.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/PassivationManager.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/PassivationManager.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/PassivationManager.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/PassivationManager.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.cache;
+
+import java.io.Serializable;
+
+/**
+ * Manages passivation and replication lifecycle callbacks on an object.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision$
+ */
+public interface PassivationManager<T extends CacheItem & Serializable>
+{
+ /**
+ * This method is called after an object has been retrieved
+ * deserialized after passivation.
+ *
+ * @param obj the object
+ */
+ void postActivate(T obj);
+
+ /**
+ * This method is called before an object is serialized for passivation.
+ *
+ * @param obj the object
+ *
+ * @throws IllegalStateException if <code>obj</code>, or another object in the
+ * same serialization group as <code>obj</code>,
+ * is in use. Checking if an object is in use and
+ * throwing this exception is not required, so
+ * callers should not assume it will be thrown.
+ */
+ void prePassivate(T obj);
+
+ /**
+ * This method is called after a previously replicated object has been
+ * retrieved from a clustered cache.
+ *
+ * @param obj the object.
+ */
+ void postReplicate(T obj);
+
+ /**
+ * This method is called before an object is replicated by a clustered
+ * cache.
+ *
+ * @param obj the object
+ *
+ * @throws IllegalStateException if <code>obj</code>, or another object in the
+ * same serialization group as <code>obj</code>,
+ * is in use. Checking if an object is in use and
+ * throwing this exception is not required, so
+ * callers should not assume it will be thrown.
+ */
+ void preReplicate(T obj);
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/PassivationManager.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulCacheFactory.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulCacheFactory.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulCacheFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.cache;
+
+import org.jboss.ejb3.annotation.CacheConfig;
+
+/**
+ * Defines the contract for an EJB3 Stateful Cache Factory
+ *
+ * @author <a href="mailto:andrew.rubinger at redhat.com">ALR</a>
+ * @author Brian Stansberry
+ *
+ * @version $Revision: $
+ */
+public interface StatefulCacheFactory<T extends CacheItem>
+{
+ /**
+ * Creates a cache for a container.
+ *
+ * @param containerName fully qualified name of the container. Must be
+ * unique across all possibly co-existent containers
+ * in the system. Should be as concise as possible,
+ * as this name may be replicated around a cluster
+ * in numerous messages. Should not contain characters
+ * that are illegal to include in an element of a
+ * filesystem path. An example containerName
+ * for an EJBContainer might be
+ * "ear=foo.ear,jar=foo.jar,name=Bar".
+ * @param factory factory for creating objects managed by the cache
+ * @param passivationManager manager for invoking pre and post passivation
+ * and replication callbacks on the cached objects
+ * @param config configuration details for the cache
+ *
+ * @return the cache
+ */
+ Cache<T> createCache(String containerName,
+ StatefulObjectFactory<T> factory,
+ PassivationManager<T> passivationManager,
+ CacheConfig config);
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulCacheFactory.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulObjectFactory.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/StatefulObjectFactory.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulObjectFactory.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulObjectFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.cache;
+
+import java.util.Map;
+
+/**
+ * Creates and destroys stateful objects.
+ * <p>
+ * The object returned by create has dependencies injected. The PostConstruct
+ * callback, if defined, has been called and the Init callback, if defined,
+ * has been called.
+ * </p>
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public interface StatefulObjectFactory<T extends CacheItem>
+{
+ /**
+ * Creates a new stateful object by calling it's empty constructor,
+ * do injection, calling post-construct and finally calling the
+ * appropriate init method.
+ *
+ * @param initTypes the argument types for the init method
+ * @param initValues the arguments for the init method
+ * @param sharedState map into which any objects meant to be shared with
+ * other members of the new items group should be
+ * stored.
+ *
+ * @return the new item
+ */
+ T create(Class<?> initTypes[], Object initValues[], Map<Object, Object> sharedState);
+
+ /**
+ * Perform any cleanup actions on the object, such as
+ * calling the pre-destroy callback.
+ *
+ * @param obj the object
+ */
+ void destroy(T obj);
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/StatefulObjectFactory.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/GroupAwareTransactionalCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/GroupAwareTransactionalCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/GroupAwareTransactionalCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -28,7 +28,7 @@
import javax.transaction.TransactionManager;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.GroupAwareBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroup;
import org.jboss.ejb3.cache.spi.SerializationGroupMember;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -32,8 +32,8 @@
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCache;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.SynchronizationCoordinator;
@@ -82,6 +82,9 @@
*/
private boolean strictGroups;
+ /** Whether we are in the started state */
+ private boolean started;
+
private class Entry
{
C obj;
@@ -120,7 +123,7 @@
public void beforeCompletion()
{
- cache.release(cacheItem);
+ cache.releaseItem(cacheItem);
}
public void afterCompletion(int arg0)
@@ -258,7 +261,7 @@
}
}
- public void finished(C obj)
+ public void release(C obj)
{
Entry entry = inUseCache.get(obj.getId());
if (entry == null)
@@ -279,7 +282,7 @@
// If there is no tx associated with this object, we can release it
if (entry.getCount == 0 && synchronizations.get(obj.getId()) == null)
{
- release(obj);
+ releaseItem(obj);
}
}
finally
@@ -300,13 +303,74 @@
public void start()
{
backingCache.start();
+ started = true;
}
public void stop()
{
- backingCache.stop();
+ try
+ {
+ backingCache.stop();
+ }
+ finally
+ {
+ started = false;
+ }
}
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public int getAvailableCount()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getCacheSize()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getCreateCount()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getCurrentSize()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getMaxSize()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getPassivatedCount()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getRemoveCount()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getTotalSize()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
public BackingCache<C, T> getBackingCache()
{
return backingCache;
@@ -316,7 +380,7 @@
* Actually release the object from our backingCache
* @param obj
*/
- private void release(C obj)
+ private void releaseItem(C obj)
{
Object key = obj.getId();
Entry entry = inUseCache.get(key);
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/GroupAwareBackingCacheImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/GroupAwareBackingCacheImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/GroupAwareBackingCacheImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -21,7 +21,7 @@
*/
package org.jboss.ejb3.cache.impl.backing;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.GroupAwareBackingCache;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroup;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheEntry.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheEntry.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheEntry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -24,7 +24,7 @@
import java.io.Serializable;
import java.util.concurrent.locks.ReentrantLock;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.impl.AbstractBackingCacheEntry;
@@ -44,6 +44,8 @@
private T wrapped;
private ReentrantLock lock = new ReentrantLock();
+ // guarded by lock
+ private boolean valid = true;
/**
* Create a new SimpleBackingCacheEntry.
@@ -102,4 +104,16 @@
lock.unlock();
}
+
+ public void invalidate()
+ {
+ this.valid = false;
+ }
+
+ public boolean isValid()
+ {
+ return valid;
+ }
+
+
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/NonPassivatingBackingCacheImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -28,8 +28,8 @@
import javax.ejb.NoSuchEJBException;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.spi.BackingCache;
import org.jboss.ejb3.cache.spi.PassivationExpirationProcessor;
import org.jboss.ejb3.cache.spi.BackingCacheLifecycleListener.LifecycleState;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/PassivatingBackingCacheImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/PassivatingBackingCacheImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/PassivatingBackingCacheImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -25,9 +25,9 @@
import javax.ejb.NoSuchEJBException;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.GroupCompatibilityChecker;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
@@ -35,6 +35,7 @@
import org.jboss.ejb3.cache.spi.BackingCacheLifecycleListener.LifecycleState;
import org.jboss.ejb3.cache.spi.impl.AbstractBackingCache;
import org.jboss.logging.Logger;
+import org.jboss.util.UnreachableStatementException;
/**
* Non group-aware {@link PassivatingBackingCache} that uses a
@@ -84,30 +85,41 @@
if (log.isTraceEnabled())
log.trace("get(): " + key);
- T entry = store.get(key);
-
- if(entry == null)
- throw new NoSuchEJBException(String.valueOf(key));
-
- entry.lock();
- try
+ boolean valid = false;
+ while (!valid)
{
- if (isClustered())
+ T entry = store.get(key);
+
+ if(entry == null)
+ throw new NoSuchEJBException(String.valueOf(key));
+
+ entry.lock();
+ try
{
- passivationManager.postReplicate(entry);
+ valid = entry.isValid();
+ if (valid)
+ {
+ if (isClustered())
+ {
+ passivationManager.postReplicate(entry);
+ }
+
+ passivationManager.postActivate(entry);
+
+ entry.setPrePassivated(false);
+
+ entry.setInUse(true);
+ return entry;
+ }
+ // else discard and reacquire
}
-
- passivationManager.postActivate(entry);
-
- entry.setPrePassivated(false);
-
- entry.setInUse(true);
- return entry;
+ finally
+ {
+ entry.unlock();
+ }
}
- finally
- {
- entry.unlock();
- }
+
+ throw new UnreachableStatementException();
}
public void passivate(Object key)
@@ -134,6 +146,8 @@
entry.setPrePassivated(true);
+ entry.invalidate();
+
store.passivate(entry);
}
finally
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupContainer.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupContainer.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupContainer.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,9 +23,9 @@
import java.util.Map;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroup;
import org.jboss.logging.Logger;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -30,8 +30,8 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.Identifiable;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroup;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberContainer.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberContainer.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberContainer.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -24,9 +24,9 @@
import java.util.Map;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.spi.GroupAwareBackingCache;
import org.jboss.ejb3.cache.spi.GroupCompatibilityChecker;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SerializationGroupMemberImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -26,7 +26,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.GroupAwareBackingCache;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroup;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimpleBackingCacheEntryStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimpleBackingCacheEntryStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/backing/SimpleBackingCacheEntryStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -29,7 +29,7 @@
import java.util.concurrent.ConcurrentHashMap;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.GroupCompatibilityChecker;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStore;
@@ -233,4 +233,27 @@
Arrays.sort(all);
return all;
}
+
+ /** For unit testing only */
+ protected boolean containsInMemoryEntry(Object key)
+ {
+ return cache.containsKey(key);
+ }
+
+ /** For unit testing only */
+ protected void clear()
+ {
+ for (Object key : passivatedEntries.keySet())
+ {
+ get(key);
+ }
+ cache.clear();
+ passivatedEntries.clear();
+ }
+
+ /** For unit testing only */
+ protected T getBackingCacheEntry(Object key)
+ {
+ return cache.get(key);
+ }
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/GroupAwareCacheFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -26,11 +26,11 @@
import java.util.Map;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.impl.GroupAwareTransactionalCache;
import org.jboss.ejb3.cache.impl.backing.GroupAwareBackingCacheImpl;
import org.jboss.ejb3.cache.impl.backing.PassivatingBackingCacheImpl;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonClusteredBackingCacheEntryStoreSource.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonClusteredBackingCacheEntryStoreSource.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonClusteredBackingCacheEntryStoreSource.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -27,7 +27,7 @@
import javax.transaction.TransactionManager;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.impl.backing.SimpleBackingCacheEntryStore;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStoreSource;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStore;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonPassivatingCacheFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonPassivatingCacheFactory.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/NonPassivatingCacheFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,11 +23,11 @@
package org.jboss.ejb3.cache.impl.factory;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.impl.TransactionalCache;
import org.jboss.ejb3.cache.impl.backing.NonPassivatingBackingCacheEntry;
import org.jboss.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/PassivationExpirationCoordinatorImpl.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/PassivationExpirationCoordinatorImpl.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/impl/factory/PassivationExpirationCoordinatorImpl.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -29,6 +29,7 @@
import org.jboss.ejb3.cache.spi.PassivationExpirationCoordinator;
import org.jboss.ejb3.cache.spi.PassivationExpirationProcessor;
import org.jboss.ejb3.cache.spi.impl.AbstractTimerTask;
+import org.jboss.logging.Logger;
import org.jboss.util.threadpool.BasicThreadPool;
/**
@@ -49,6 +50,8 @@
public static final long DEFAULT_INTERVAL = 10000L;
public static final String TIMER_NAME = "EJB3SFSBPassivationExpirationCoordinator";
+ private static final Logger log = Logger.getLogger(PassivationExpirationCoordinatorImpl.class);
+
private BasicThreadPool threadPool;
private int maxPoolThreads;
private Set<PassivationExpirationProcessor> processors = new HashSet<PassivationExpirationProcessor>();
@@ -132,6 +135,8 @@
@Override
public void run()
{
+ try
+ {
Set<PassivationExpirationProcessor> toProcess = new HashSet<PassivationExpirationProcessor>();
synchronized (processors)
{
@@ -153,6 +158,7 @@
}
catch (InterruptedException ignore)
{
+ // TODO don't ignore
}
if (isStopped())
@@ -166,6 +172,12 @@
task.run();
}
}
+ }
+ catch (Exception e)
+ {
+ // Don't let an exception kill us
+ log.error("Caught exception in handler thread", e);
+ }
}
@Override
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -26,8 +26,8 @@
import javax.ejb.NoSuchEJBException;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
/**
* An internal cache to which an external-facing {@link Cache} delegates, either
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntry.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntry.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,7 +22,7 @@
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
/**
@@ -95,4 +95,25 @@
* {@java.util.concurrent.ReentrantLock#unlock()}.
*/
void unlock();
+
+ /**
+ * Whether this entry has been invalidated (in which case it should
+ * be reacquired).
+ * <p>
+ * <strong>NOTE:</strong> This method should only be called with the lock held.
+ * </p>
+ *
+ * @return <code>true</code>e if still valid, <code>false</code>e if invalidated
+ *
+ * @see #invalidate()
+ */
+ boolean isValid();
+
+ /**
+ * Causes {@link #isValid()} to hereafter return <code>true</code>.
+ * <p>
+ * <strong>NOTE:</strong> This method should only be called with the lock held.
+ * </p>
+ */
+ void invalidate();
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,9 +22,9 @@
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.Identifiable;
/**
* An in-memory store for {@link BackingCacheEntry} instances
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStoreSource.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStoreSource.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntryStoreSource.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -25,8 +25,8 @@
import javax.transaction.TransactionManager;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
/**
* Provides {@link BackingCacheEntryStore} instances to a
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/GroupAwareBackingCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/GroupAwareBackingCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/GroupAwareBackingCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,7 +22,7 @@
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
/**
* A {@link BackingCache} that can manage the relationship of its
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PassivatingBackingCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PassivatingBackingCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PassivatingBackingCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -21,7 +21,7 @@
*/
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
/**
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PersistentObjectStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PersistentObjectStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/PersistentObjectStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -21,7 +21,7 @@
*/
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.Identifiable;
/**
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroup.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroup.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroup.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,7 +22,7 @@
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
/**
* Specialized {@link BackingCacheEntry} that represents a group of
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroupMember.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroupMember.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/SerializationGroupMember.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,8 +22,8 @@
package org.jboss.ejb3.cache.spi;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.Identifiable;
/**
* Specialized {@link BackingCacheEntry} that wraps an
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCache.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCache.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCache.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -24,7 +24,7 @@
import java.util.HashSet;
import java.util.Set;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCache;
import org.jboss.ejb3.cache.spi.BackingCacheLifecycleListener;
import org.jboss.ejb3.cache.spi.BackingCacheLifecycleListener.LifecycleState;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntry.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntry.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -21,7 +21,7 @@
*/
package org.jboss.ejb3.cache.spi.impl;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
/**
@@ -37,9 +37,10 @@
/** The serialVersionUID */
private static final long serialVersionUID = 4562025672441864736L;
- private long lastUsed;
+ private long lastUsed = System.currentTimeMillis();
private transient boolean inUse;
private boolean prePassivated;
+ private transient boolean invalid;
public long getLastUsed()
{
@@ -57,7 +58,13 @@
setLastUsed(System.currentTimeMillis());
}
- protected void setLastUsed(long lastUsed)
+ /**
+ * Exposed as public only as an aid to unit tests. In normal use
+ * this should only be invoked internally or by subclasses.
+ *
+ * @param lastUsed time since epoch when last used
+ */
+ public void setLastUsed(long lastUsed)
{
this.lastUsed = lastUsed;
}
@@ -71,6 +78,16 @@
{
this.prePassivated = prePassivated;
}
+
+ public void invalidate()
+ {
+ this.invalid = true;
+ }
+
+ public boolean isValid()
+ {
+ return !invalid;
+ }
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntryStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntryStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractBackingCacheEntryStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,7 +23,7 @@
package org.jboss.ejb3.cache.spi.impl;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.PassivatingBackingCache;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStore;
@@ -293,26 +293,59 @@
// -------------------------------------------------------------- Protected
+ protected void preExpirationCompleted()
+ {
+ // no-op
+ }
+ protected void expirationCompleted()
+ {
+ // no-op
+ }
+ protected void prePassivationCompleted()
+ {
+ // no-op
+ }
+
+ protected void passivationCompleted()
+ {
+ // no-op
+ }
+
// ---------------------------------------------------------------- Private
private void runExpiration()
{
if (!isForGroups() && getExpirationTimeSeconds() > 0)
{
+ CacheableTimestamp<K>[] cta = getAllEntries();
+ preExpirationCompleted();
+
long now = System.currentTimeMillis();
- long minRemovalUse = now - (getExpirationTimeSeconds() * 1000);
- for (CacheableTimestamp<K> ts : getAllEntries())
+ long minRemovalUse = now - (getExpirationTimeSeconds() * 1000);
+ int surviveCount = 0;
+ for (CacheableTimestamp<K> ts : cta)
{
try
{
if (running && minRemovalUse >= ts.getLastUsed())
{
+ surviveCount = 0;
processExpiration(ts.getId(), ts.getLastUsed());
}
+ else if (surviveCount < 500)
+ {
+ // Hack alert.
+ // We don't break the first time we hit a bean that
+ // shouldn't be expired cause it could be that one
+ // bean has been accessed since we called getAllEntries()
+ surviveCount++;
+ }
else
{
+ // We've hit 500 in a row that are still alive,
+ // assume that all the rest will be
break;
}
}
@@ -322,6 +355,8 @@
log.trace("skipping in-use entry " + ts.getId(), ise);
}
}
+
+ expirationCompleted();
}
}
@@ -330,23 +365,37 @@
if (!isForGroups()
&& (getMaxSize() > 0 || getIdleTimeSeconds() > 0))
{
+ CacheableTimestamp<K>[] timestamps = getInMemoryEntries();
+ prePassivationCompleted();
+
long now = System.currentTimeMillis();
long minPassUse = (getIdleTimeSeconds() > 0 ? now - (getIdleTimeSeconds() * 1000) : 0);
- CacheableTimestamp<K>[] timestamps = getInMemoryEntries();
int overCount = (getMaxSize() > 0 ? timestamps.length - getMaxSize() : 0);
+ int surviveCount = 0;
for (CacheableTimestamp<K> ts : timestamps)
{
try
{
if (running && (overCount > 0 || minPassUse >= ts.getLastUsed()))
{
+ surviveCount = 0;
log.trace("attempting to passivate " + ts.getId());
processPassivation(ts.getId(), ts.getLastUsed());
overCount--;
}
+ else if (surviveCount < 500)
+ {
+ // Hack alert.
+ // We don't break the first time we hit a bean that
+ // shouldn't be passivated cause it could be that one
+ // bean has been accessed since we called getInMemoryEntries()
+ surviveCount++;
+ }
else
{
+ // We've hit 500 in a row that are still alive,
+ // assume that all the rest will be
break;
}
}
@@ -356,6 +405,8 @@
log.trace("skipping in-use entry " + ts.getId(), ise);
}
}
+
+ passivationCompleted();
}
}
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -27,8 +27,8 @@
import javax.transaction.TransactionManager;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
import org.jboss.ejb3.cache.spi.PassivationExpirationCoordinator;
import org.jboss.ejb3.cache.spi.SynchronizationCoordinator;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/CacheableTimestamp.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/CacheableTimestamp.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/CacheableTimestamp.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,7 +22,7 @@
package org.jboss.ejb3.cache.spi.impl;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.Identifiable;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
/**
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/FilePersistentObjectStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/FilePersistentObjectStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/FilePersistentObjectStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -33,7 +33,7 @@
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.PersistentObjectStore;
import org.jboss.logging.Logger;
import org.jboss.serial.io.JBossObjectInputStream;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/GroupCreationContext.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/GroupCreationContext.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/GroupCreationContext.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -26,7 +26,7 @@
import java.util.List;
import java.util.Map;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.ejb3.cache.spi.SerializationGroup;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/ItemCachePair.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/ItemCachePair.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/ItemCachePair.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,8 +22,8 @@
package org.jboss.ejb3.cache.spi.impl;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.GroupAwareBackingCache;
import org.jboss.ejb3.cache.spi.SerializationGroupMember;
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/PassivationExpirationRunner.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/PassivationExpirationRunner.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/spi/impl/PassivationExpirationRunner.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,6 +23,7 @@
package org.jboss.ejb3.cache.spi.impl;
import org.jboss.ejb3.cache.spi.PassivationExpirationProcessor;
+import org.jboss.logging.Logger;
/**
* TimerTask that will periodically invoke
@@ -34,6 +35,8 @@
public class PassivationExpirationRunner
extends AbstractTimerTask
{
+ private static final Logger log = Logger.getLogger(PassivationExpirationRunner.class);
+
private PassivationExpirationProcessor processor;
/**
@@ -51,10 +54,18 @@
public void run()
{
- if (!isStopped())
+ try
{
- processor.processPassivationExpiration();
+ if (!isStopped())
+ {
+ processor.processPassivationExpiration();
+ }
}
+ catch (Exception e)
+ {
+ // Don't let it kill the Timer thread
+ log.error("Caught exception processing passivation/expiration", e);
+ }
}
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoordinatedPassivationExpiration.ucls
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoordinatedPassivationExpiration.ucls 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoordinatedPassivationExpiration.ucls 2009-02-17 22:37:18 UTC (rev 84330)
@@ -3,7 +3,7 @@
<classifier-display autosize="true" package="true" attributes="false" operations="false" initial-value="false"
signature="true" visibility="true"/>
<association-display labels="true" multiplicity="true"/>
- <interface type="java" name="org.jboss.ejb3.cache.api.StatefulCacheFactory" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.StatefulCacheFactory" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -123,7 +123,7 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.spi.impl.AbstractStatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactory"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java"/>
</realization>
<realization>
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoreAbstractions.ucls
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoreAbstractions.ucls 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/uml/CoreAbstractions.ucls 2009-02-17 22:37:18 UTC (rev 84330)
@@ -3,13 +3,13 @@
<classifier-display autosize="true" package="true" attributes="false" operations="false" initial-value="false"
signature="true" visibility="true"/>
<association-display labels="true" multiplicity="true"/>
- <interface type="java" name="org.jboss.ejb3.cache.api.CacheItem" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.CacheItem" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/CacheItem.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
<position x="391" y="102" width="-1" height="-1"/>
</interface>
- <interface type="java" name="org.jboss.ejb3.cache.api.Cache" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.Cache" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -51,13 +51,13 @@
visibility="true"/>
<position x="762" y="209" width="-1" height="-1"/>
</class>
- <interface type="java" name="org.jboss.ejb3.cache.api.StatefulObjectFactory" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.StatefulObjectFactory" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulObjectFactory.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
<position x="653" y="313" width="-1" height="-1"/>
</interface>
- <interface type="java" name="org.jboss.ejb3.cache.api.PassivationManager" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.PassivationManager" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/PassivationManager.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -89,7 +89,7 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.test.cache.mock.MockBeanContainer"
file="/jboss-ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulObjectFactory"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulObjectFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulObjectFactory.java"/>
</realization>
<dependency>
@@ -116,9 +116,9 @@
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/PassivatingBackingCache.java"/>
</dependency>
<dependency>
- <source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.CacheItem"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.CacheItem"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/CacheItem.java"/>
</dependency>
<association>
@@ -129,13 +129,13 @@
<attribute name="passivationManager"/>
<multiplicity minimum="0" maximum="1"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.PassivationManager"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.PassivationManager"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/PassivationManager.java"/>
</association>
<dependency>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.spi.BackingCacheEntry"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/BackingCacheEntry.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.CacheItem"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.CacheItem"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/CacheItem.java"/>
</dependency>
<dependency>
@@ -147,7 +147,7 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.impl.TransactionalCache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
</realization>
<association>
@@ -158,7 +158,7 @@
<attribute name="factory"/>
<multiplicity minimum="0" maximum="1"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulObjectFactory"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulObjectFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulObjectFactory.java"/>
</association>
<dependency>
@@ -176,13 +176,13 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.test.cache.mock.MockBeanContainer"
file="/jboss-ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.PassivationManager"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.PassivationManager"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/PassivationManager.java"/>
</realization>
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.test.cache.mock.MockBeanContext"
file="/jboss-ejb3-cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContext.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.CacheItem"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.CacheItem"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/CacheItem.java"/>
</realization>
<association>
@@ -192,7 +192,7 @@
<attribute name="cache"/>
<multiplicity minimum="0" maximum="1"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
</association>
<generalization>
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/uml/Factories.ucls
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/uml/Factories.ucls 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/uml/Factories.ucls 2009-02-17 22:37:18 UTC (rev 84330)
@@ -3,14 +3,14 @@
<classifier-display autosize="true" package="true" attributes="false" operations="false" initial-value="false"
signature="true" visibility="true"/>
<association-display labels="true" multiplicity="true"/>
- <class type="java" name="org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry" project="jboss-ejb3-cache"
+ <class type="java" name="org.jboss.ejb3.test.cache.mock.StatefulCacheFactoryRegistry" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactoryRegistry.java"
corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
<position x="501" y="53" width="-1" height="-1"/>
</class>
- <interface type="java" name="org.jboss.ejb3.cache.api.StatefulCacheFactory" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.StatefulCacheFactory" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -94,7 +94,7 @@
visibility="true"/>
<position x="132" y="54" width="-1" height="-1"/>
</class>
- <interface type="java" name="org.jboss.ejb3.cache.api.Cache" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.Cache" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -162,7 +162,7 @@
<attribute name="cache"/>
<multiplicity minimum="0" maximum="1"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
</association>
<dependency>
@@ -175,23 +175,23 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.spi.impl.AbstractStatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/spi/impl/AbstractStatefulCacheFactory.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactory"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java"/>
</realization>
<association>
<display labels="true" multiplicity="true"/>
- <source navigable="false" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry"
+ <source navigable="false" project="jboss-ejb3-cache" name="org.jboss.ejb3.test.cache.mock.StatefulCacheFactoryRegistry"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactoryRegistry.java">
<attribute name="factories"/>
<multiplicity minimum="0" maximum="2147483647"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactory"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java"/>
</association>
<dependency>
- <source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactory"
+ <source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.StatefulCacheFactory"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactory.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
</dependency>
<generalization>
@@ -207,7 +207,7 @@
<attribute name="cacheFactoryRegistry"/>
<multiplicity minimum="0" maximum="1"/>
</source>
- <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry"
+ <target navigable="true" project="jboss-ejb3-cache" name="org.jboss.ejb3.test.cache.mock.StatefulCacheFactoryRegistry"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactoryRegistry.java"/>
</association>
<realization>
Modified: projects/ejb3/branches/cluster-dev/cache/src/main/uml/GroupAwareCache.ucls
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/main/uml/GroupAwareCache.ucls 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/main/uml/GroupAwareCache.ucls 2009-02-17 22:37:18 UTC (rev 84330)
@@ -3,7 +3,7 @@
<classifier-display autosize="true" package="true" attributes="false" operations="false" initial-value="false"
signature="true" visibility="true"/>
<association-display labels="false" multiplicity="true"/>
- <interface type="java" name="org.jboss.ejb3.cache.api.Cache" project="jboss-ejb3-cache"
+ <interface type="java" name="org.jboss.ejb3.cache.Cache" project="jboss-ejb3-cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java" corner="BOTTOM_RIGHT">
<display autosize="true" package="true" attributes="false" operations="false" initial-value="false" signature="true"
visibility="true"/>
@@ -179,7 +179,7 @@
<realization>
<source project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.impl.TransactionalCache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/impl/TransactionalCache.java"/>
- <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.api.Cache"
+ <target project="jboss-ejb3-cache" name="org.jboss.ejb3.cache.Cache"
file="/jboss-ejb3-cache/src/main/java/org/jboss/ejb3/cache/api/Cache.java"/>
</realization>
<dependency>
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/GroupedPassivatingUnitTestCase.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/GroupedPassivatingUnitTestCase.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/GroupedPassivatingUnitTestCase.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -81,8 +81,8 @@
assertNotNull(ctx1.getXPC());
assertEquals(ctx1.getXPC(), ctx2.getXPC());
- container2.getCache().finished(ctx2);
- container1.getCache().finished(ctx1);
+ container2.getCache().release(ctx2);
+ container1.getCache().release(ctx1);
if (transactional)
{
@@ -123,8 +123,8 @@
assertNotNull(ctx1.getXPC());
assertSame(ctx1.getXPC(), ctx2.getXPC());
- container1.getCache().finished(ctx1);
- container2.getCache().finished(ctx2);
+ container1.getCache().release(ctx1);
+ container2.getCache().release(ctx2);
if (transactional)
{
@@ -195,8 +195,8 @@
entityA = ctx2A.createEntity();
assertSame(entityA, ctx1A.getEntity());
- container2A.getCache().finished(ctx2A);
- container1A.getCache().finished(ctx1A);
+ container2A.getCache().release(ctx2A);
+ container1A.getCache().release(ctx1A);
if (transactional)
{
@@ -236,8 +236,8 @@
MockEntity entity1x = ctx1A.getEntity();
assertEquals(entityA, entity1x);
- container1A.getCache().finished(ctx1A);
- container2A.getCache().finished(ctx2A);
+ container1A.getCache().release(ctx1A);
+ container2A.getCache().release(ctx2A);
if (transactional)
{
@@ -273,8 +273,8 @@
assertEquals(entityA, entityB);
assertNotSame(entityA, entityB);
- container2B.getCache().finished(ctx2B);
- container1B.getCache().finished(ctx1B);
+ container2B.getCache().release(ctx2B);
+ container1B.getCache().release(ctx1B);
if (transactional)
{
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockBackingCacheEntryStoreSource.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockBackingCacheEntryStoreSource.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockBackingCacheEntryStoreSource.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -25,7 +25,7 @@
import javax.transaction.TransactionManager;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStoreSource;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStore;
import org.jboss.ejb3.cache.spi.SerializationGroup;
@@ -42,6 +42,15 @@
private UnmarshallingMap localMap;
private UnmarshallingMap remoteMap;
+ /**
+ * For use by unit tests that aren't actually interested in the
+ * store contents.
+ */
+ public MockBackingCacheEntryStoreSource()
+ {
+ this(new UnmarshallingMap(), new UnmarshallingMap());
+ }
+
public MockBackingCacheEntryStoreSource(UnmarshallingMap localMap, UnmarshallingMap remoteMap)
{
this.localMap = localMap;
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCBackingCacheEntryStore.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCBackingCacheEntryStore.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/MockJBCBackingCacheEntryStore.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -33,7 +33,7 @@
import java.util.Set;
import org.jboss.ejb3.annotation.CacheConfig;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
import org.jboss.ejb3.cache.spi.BackingCacheEntry;
import org.jboss.ejb3.cache.spi.GroupCompatibilityChecker;
import org.jboss.ejb3.cache.spi.BackingCacheEntryStore;
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/SessionSynchronizationInterceptorUnitTestCase.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/SessionSynchronizationInterceptorUnitTestCase.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/distributed/SessionSynchronizationInterceptorUnitTestCase.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -70,7 +70,7 @@
count = ctx1A.increment();
- container1A.getCache().finished(ctx1A);
+ container1A.getCache().release(ctx1A);
cluster.getNode0().getTransactionManager().commit();
@@ -94,7 +94,7 @@
assertEquals("SessionSynchronization's increment not replicated", count, ctx1B.getCount());
- container1B.getCache().finished(ctx1B);
+ container1B.getCache().release(ctx1B);
}
catch (Exception e)
{
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/GroupAwareTransactionalCacheUnitTestCase.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/GroupAwareTransactionalCacheUnitTestCase.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/GroupAwareTransactionalCacheUnitTestCase.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -21,7 +21,7 @@
*/
package org.jboss.ejb3.test.cache.integrated;
-import org.jboss.ejb3.cache.api.Cache;
+import org.jboss.ejb3.cache.Cache;
import org.jboss.ejb3.test.cache.mock.CacheType;
import org.jboss.ejb3.test.cache.mock.MockBeanContainer;
import org.jboss.ejb3.test.cache.mock.MockBeanContext;
@@ -66,7 +66,7 @@
MockEjb3System system = new MockEjb3System(tm, false, CacheType.SIMPLE);
MockXPC sharedXPC = new MockXPC();
MockCacheConfig config = new MockCacheConfig();
- config.setIdleTimeoutSeconds(4);
+ config.setIdleTimeoutSeconds(3);
MockBeanContainer container = system.deployBeanContainer("MockBeanContainer1", null, CacheType.SIMPLE, config, sharedXPC.getName());
Cache<MockBeanContext> cache = container.getCache();
@@ -78,7 +78,7 @@
Object key = cache.create(null, null);
MockBeanContext obj = cache.get(key);
- cache.finished(obj);
+ cache.release(obj);
obj = null;
if (transactional)
@@ -102,11 +102,11 @@
assertEquals("MockBeanContext should have been activated", 1, pass.getPostActivateCount());
- sleep(3000);
+ sleep(2000);
assertEquals("MockBeanContext should not have been passivated", 1, pass.getPrePassivateCount());
- cache.finished(obj);
+ cache.release(obj);
obj = null;
if (transactional)
@@ -161,8 +161,8 @@
assertNotNull(ctx2);
assertEquals(sharedXPC, ctx2.getXPC());
- container2.getCache().finished(ctx2);
- container1.getCache().finished(ctx1);
+ container2.getCache().release(ctx2);
+ container1.getCache().release(ctx1);
if (transactional)
{
@@ -203,8 +203,8 @@
assertNotNull(ctx1.getXPC());
assertEquals(ctx1.getXPC(), ctx2.getXPC());
- container1.getCache().finished(ctx1);
- container2.getCache().finished(ctx2);
+ container1.getCache().release(ctx1);
+ container2.getCache().release(ctx2);
if (transactional)
{
@@ -276,9 +276,9 @@
assertSame(firstCtx1, secondCtx1);
assertSame(sharedXPC, secondCtx1.getXPC());
- container1.getCache().finished(secondCtx1);
- container2.getCache().finished(ctx2);
- container1.getCache().finished(firstCtx1);
+ container1.getCache().release(secondCtx1);
+ container2.getCache().release(ctx2);
+ container1.getCache().release(firstCtx1);
if (transactional)
{
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -25,7 +25,7 @@
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
-import org.jboss.ejb3.cache.api.Cache;
+import org.jboss.ejb3.cache.Cache;
import org.jboss.ejb3.test.cache.mock.CacheType;
import org.jboss.ejb3.test.cache.mock.MockBeanContainer;
import org.jboss.ejb3.test.cache.mock.MockBeanContext;
@@ -144,8 +144,8 @@
assertSame(object, object2);
- cache.finished(object2);
- cache.finished(object);
+ cache.release(object2);
+ cache.release(object);
cache.remove(key);
@@ -183,11 +183,11 @@
assertNotNull(object);
- cache.finished(object);
+ cache.release(object);
try
{
- cache.finished(object);
+ cache.release(object);
fail("Two sequential finished calls should throw ISE");
}
catch(IllegalStateException e)
@@ -232,7 +232,7 @@
Transaction tx2 = tm.suspend();
tm.resume(tx1);
- cache.finished(object);
+ cache.release(object);
tm.suspend();
tm.resume(tx2);
@@ -253,7 +253,7 @@
MockBeanContext object2 = cache.get(key);
assertSame(object, object2);
- cache.finished(object2);
+ cache.release(object2);
tm.commit();
}
Copied: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/CacheFactoryNotRegisteredException.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/CacheFactoryNotRegisteredException.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/CacheFactoryNotRegisteredException.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/CacheFactoryNotRegisteredException.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.cache.mock;
+
+
+/**
+ * Thrown when attempting to retrieve a cache factory with an
+ * unrecognized name from the {@link StatefulCacheFactoryRegistry}.
+ *
+ * @author <a href="mailto:andrew.rubinger at redhat.com">ALR</a>
+ * @version $Revision: $
+ */
+public class CacheFactoryNotRegisteredException extends Exception
+{
+
+ // Class Members
+ private static final long serialVersionUID = -881723607135494483L;
+
+ // Constructors
+
+ public CacheFactoryNotRegisteredException()
+ {
+ super();
+ }
+
+ public CacheFactoryNotRegisteredException(String message)
+ {
+ super(message);
+ }
+
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/CacheFactoryNotRegisteredException.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContainer.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -26,11 +26,10 @@
import java.util.Map;
import java.util.Set;
-import org.jboss.ejb3.cache.api.Cache;
-import org.jboss.ejb3.cache.api.PassivationManager;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
-import org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.Cache;
+import org.jboss.ejb3.cache.PassivationManager;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.logging.Logger;
/**
@@ -149,7 +148,7 @@
objectFactory.destroy(obj);
}
- // -------------------------------------------------- StatefulObjectFactory
+ // -------------------------------------------------- PassivationManager
public void postActivate(MockBeanContext ctx)
{
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContext.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContext.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockBeanContext.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -25,7 +25,7 @@
import java.util.HashMap;
import java.util.Map;
-import org.jboss.ejb3.cache.api.CacheItem;
+import org.jboss.ejb3.cache.CacheItem;
/**
* @author Brian Stansberry
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockEjb3System.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockEjb3System.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockEjb3System.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -27,8 +27,7 @@
import javax.transaction.TransactionManager;
-import org.jboss.ejb3.cache.api.StatefulCacheFactory;
-import org.jboss.ejb3.cache.api.StatefulCacheFactoryRegistry;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
import org.jboss.ejb3.cache.impl.factory.GroupAwareCacheFactory;
import org.jboss.ejb3.cache.impl.factory.NonClusteredBackingCacheEntryStoreSource;
import org.jboss.ejb3.cache.impl.factory.NonPassivatingCacheFactory;
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockIdentifiable.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockIdentifiable.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockIdentifiable.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,7 +23,7 @@
import java.io.Serializable;
-import org.jboss.ejb3.cache.api.Identifiable;
+import org.jboss.ejb3.cache.Identifiable;
import org.jboss.logging.Logger;
/**
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockPassivationManager.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockPassivationManager.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockPassivationManager.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -22,7 +22,7 @@
package org.jboss.ejb3.test.cache.mock;
-import org.jboss.ejb3.cache.api.PassivationManager;
+import org.jboss.ejb3.cache.PassivationManager;
/**
* @author Brian Stansberry
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/MockStatefulObjectFactory.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -24,7 +24,7 @@
import java.util.Map;
-import org.jboss.ejb3.cache.api.StatefulObjectFactory;
+import org.jboss.ejb3.cache.StatefulObjectFactory;
import org.jboss.logging.Logger;
Copied: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/StatefulCacheFactoryRegistry.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/main/java/org/jboss/ejb3/cache/api/StatefulCacheFactoryRegistry.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/StatefulCacheFactoryRegistry.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/StatefulCacheFactoryRegistry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,90 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.cache.mock;
+
+import java.util.Map;
+
+import org.jboss.ejb3.cache.CacheItem;
+import org.jboss.ejb3.cache.StatefulCacheFactory;
+
+/**
+ * Registry for all configured Stateful Cache Factory implementations
+ *
+ * TODO Does this belong in ejb3-core? That would allow all of the
+ * StatefulCacheFactory<T extends CacheItem> usage to be replaced with
+ * StatefulCacheFactory<StatefulBeanContext> without leaking the
+ * StatefulBeanContext class to ejb3-cache.
+ *
+ * @author <a href="mailto:andrew.rubinger at redhat.com">ALR</a>
+ * @author Brian Stansberry
+ *
+ * @version $Revision: $
+ */
+public class StatefulCacheFactoryRegistry<T extends CacheItem>
+{
+ // Instance Members
+ private Map<String, StatefulCacheFactory<T>> factories;
+
+ // Accessors / Mutators
+
+ public Map<String, StatefulCacheFactory<T>> getFactories()
+ {
+ return factories;
+ }
+
+ public void setFactories(Map<String, StatefulCacheFactory<T>> factories)
+ {
+ this.factories = factories;
+ }
+
+ public void addCacheFactory(String name, StatefulCacheFactory<T> factory)
+ {
+ this.factories.put(name, factory);
+ }
+
+ public void removeCacheFactory(String name)
+ {
+ this.factories.remove(name);
+ }
+
+ // Functional Methods
+
+ /**
+ * Obtains the Cache Factory with the specified registered name
+ *
+ * @param name The registered name of the cache factory to retrieve
+ * @return The Cache Factory
+ */
+ public StatefulCacheFactory<T> getCacheFactory(String name) throws CacheFactoryNotRegisteredException
+ {
+ // Obtain cache factory
+ StatefulCacheFactory<T> cacheFactory = this.factories.get(name);
+
+ // Ensure registered
+ if (cacheFactory == null)
+ {
+ throw new CacheFactoryNotRegisteredException("Cache Factory with name " + name + " is not registered.");
+ }
+
+ return cacheFactory;
+ }
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/StatefulCacheFactoryRegistry.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransaction.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransaction.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransaction.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -53,7 +53,7 @@
private final String id;
private LinkedList<Synchronization> synchronizations = new LinkedList<Synchronization>();
- private MockTransactionSynchroniztionRegistry syncRegistry;
+ private MockTransactionSynchronizationRegistry syncRegistry;
private final MockTransactionManager jtaTransactionManager;
@@ -176,7 +176,7 @@
{
if (syncRegistry == null)
{
- syncRegistry = new MockTransactionSynchroniztionRegistry(this);
+ syncRegistry = new MockTransactionSynchronizationRegistry(this);
}
return syncRegistry;
}
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionManager.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionManager.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionManager.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -23,6 +23,8 @@
*/
package org.jboss.ejb3.test.cache.mock.tm;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
import java.util.Hashtable;
import javax.transaction.HeuristicMixedException;
@@ -45,7 +47,7 @@
*
* @author Brian Stansberry
*/
-public class MockTransactionManager implements TransactionManager, TransactionSynchronizationRegistrySource
+public class MockTransactionManager implements TransactionManager, TransactionSynchronizationRegistrySource, Serializable
{
public static final String DEFAULT = "default";
@@ -192,4 +194,32 @@
sb.append("]");
return sb.toString();
}
+
+ /** Hack to allow binding in JNDI */
+ private Object writeReplace() throws ObjectStreamException
+ {
+ return new Serializer(nodeId);
+ }
+
+ /** Hack to allow binding in JNDI */
+ static class Serializer implements Serializable
+ {
+ private static final long serialVersionUID = -608936399074867086L;
+
+ private final String nodeId;
+
+ Serializer(String nodeId)
+ {
+ this.nodeId = nodeId;
+ }
+
+ private Object readResolve() throws ObjectStreamException
+ {
+ return getInstance(nodeId);
+ }
+ }
+
+
+
+
}
Copied: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchronizationRegistry.java (from rev 71714, projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchroniztionRegistry.java)
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchronizationRegistry.java (rev 0)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchronizationRegistry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.ejb3.test.cache.mock.tm;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionSynchronizationRegistry;
+
+/**
+ * @author Brian Stansberry
+ *
+ */
+public class MockTransactionSynchronizationRegistry implements TransactionSynchronizationRegistry
+{
+ private final MockTransaction tx;
+ private LinkedList<Synchronization> synchronizations = new LinkedList<Synchronization>();
+
+ public MockTransactionSynchronizationRegistry(MockTransaction tx)
+ {
+ assert tx != null : "tx is null";
+ this.tx = tx;
+ }
+
+ public Object getResource(Object key) throws IllegalStateException
+ {
+ throw new UnsupportedOperationException("unsupported");
+ }
+
+ public boolean getRollbackOnly() throws IllegalStateException
+ {
+ return false;
+ }
+
+ public Object getTransactionKey()
+ {
+ return tx.getId();
+ }
+
+ public int getTransactionStatus()
+ {
+ return tx.getStatus();
+ }
+
+ public void putResource(Object key, Object value) throws IllegalStateException
+ {
+ throw new UnsupportedOperationException("unsupported");
+ }
+
+ public void registerInterposedSynchronization(Synchronization sync) throws IllegalStateException
+ {
+ synchronizations.add(sync);
+ }
+
+ public void setRollbackOnly() throws IllegalStateException
+ {
+ try
+ {
+ tx.setRollbackOnly();
+ }
+ catch (SystemException e)
+ {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ public List<Synchronization> getSynchronizations()
+ {
+ return synchronizations;
+ }
+
+}
Property changes on: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchronizationRegistry.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchroniztionRegistry.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchroniztionRegistry.java 2009-02-17 21:57:19 UTC (rev 84329)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/mock/tm/MockTransactionSynchroniztionRegistry.java 2009-02-17 22:37:18 UTC (rev 84330)
@@ -1,94 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.ejb3.test.cache.mock.tm;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionSynchronizationRegistry;
-
-/**
- * @author Brian Stansberry
- *
- */
-public class MockTransactionSynchroniztionRegistry implements TransactionSynchronizationRegistry
-{
- private final MockTransaction tx;
- private LinkedList<Synchronization> synchronizations = new LinkedList<Synchronization>();
-
- public MockTransactionSynchroniztionRegistry(MockTransaction tx)
- {
- assert tx != null : "tx is null";
- this.tx = tx;
- }
-
- public Object getResource(Object key) throws IllegalStateException
- {
- throw new UnsupportedOperationException("unsupported");
- }
-
- public boolean getRollbackOnly() throws IllegalStateException
- {
- return false;
- }
-
- public Object getTransactionKey()
- {
- return tx.getId();
- }
-
- public int getTransactionStatus()
- {
- return tx.getStatus();
- }
-
- public void putResource(Object key, Object value) throws IllegalStateException
- {
- throw new UnsupportedOperationException("unsupported");
- }
-
- public void registerInterposedSynchronization(Synchronization sync) throws IllegalStateException
- {
- synchronizations.add(sync);
- }
-
- public void setRollbackOnly() throws IllegalStateException
- {
- try
- {
- tx.setRollbackOnly();
- }
- catch (SystemException e)
- {
- throw new IllegalStateException(e);
- }
- }
-
- public List<Synchronization> getSynchronizations()
- {
- return synchronizations;
- }
-
-}
More information about the jboss-cvs-commits
mailing list