[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