[jboss-cvs] JBossCache/src-50/org/jboss/cache/pojo/impl ...
Ben Wang
bwang at jboss.com
Thu Jul 13 21:46:48 EDT 2006
User: bwang
Date: 06/07/13 21:46:48
Modified: src-50/org/jboss/cache/pojo/impl
CollectionClassHandler.java ObjectGraphHandler.java
PojoCacheDelegate.java
SerializableObjectHandler.java
Added: src-50/org/jboss/cache/pojo/impl
AdvisedPojoHandler.java
Log:
Refactored the code flow.
Revision Changes Path
1.2 +6 -6 JBossCache/src-50/org/jboss/cache/pojo/impl/CollectionClassHandler.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CollectionClassHandler.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/CollectionClassHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- CollectionClassHandler.java 13 Jul 2006 15:56:12 -0000 1.1
+++ CollectionClassHandler.java 14 Jul 2006 01:46:48 -0000 1.2
@@ -31,7 +31,7 @@
*
* @author Ben Wang
* Date: Aug 4, 2005
- * @version $Id: CollectionClassHandler.java,v 1.1 2006/07/13 15:56:12 bwang Exp $
+ * @version $Id: CollectionClassHandler.java,v 1.2 2006/07/14 01:46:48 bwang Exp $
*/
class CollectionClassHandler
{
@@ -50,7 +50,7 @@
graphHandler_ = graphHandler;
}
- Object collectionObjectGet(Fqn fqn, Class clazz)
+ Object get(Fqn fqn, Class clazz)
throws CacheException
{
Object obj = null;
@@ -78,7 +78,7 @@
}
- boolean collectionObjectPut(Fqn fqn, Object obj) throws CacheException
+ boolean put(Fqn fqn, Object obj) throws CacheException
{
boolean isCollection = false;
@@ -101,14 +101,14 @@
{
if (log.isDebugEnabled())
{
- log.debug("collectionObjectPut(): null interceptor. Could be removed previously. " + fqn);
+ log.debug("put(): null interceptor. Could be removed previously. " + fqn);
}
} else
{
if (interceptor.isAttached()) // If it is not attached, it is not active.
{
// Let's check for object graph, e.g., multiple and circular references first
- if (graphHandler_.objectGraphPut(fqn, interceptor, type))
+ if (graphHandler_.put(fqn, interceptor, type))
{ // found cross references
return true;
}
@@ -235,7 +235,7 @@
return isCollection;
}
- boolean collectionObjectRemove(Fqn fqn
+ boolean remove(Fqn fqn
) throws CacheException
{
Class clazz = internal_.peekAopClazz(fqn);
1.2 +9 -9 JBossCache/src-50/org/jboss/cache/pojo/impl/ObjectGraphHandler.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ObjectGraphHandler.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/ObjectGraphHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ObjectGraphHandler.java 13 Jul 2006 15:56:12 -0000 1.1
+++ ObjectGraphHandler.java 14 Jul 2006 01:46:48 -0000 1.2
@@ -27,7 +27,7 @@
*
* @author Ben Wang
* Date: Aug 4, 2005
- * @version $Id: ObjectGraphHandler.java,v 1.1 2006/07/13 15:56:12 bwang Exp $
+ * @version $Id: ObjectGraphHandler.java,v 1.2 2006/07/14 01:46:48 bwang Exp $
*/
class ObjectGraphHandler
{
@@ -43,7 +43,7 @@
internal_ = internal;
}
- Object objectGraphGet(Fqn fqn) throws CacheException
+ Object get(Fqn fqn) throws CacheException
{
// Note this is actually the aliasFqn, not the real fqn!
String refFqn = internal_.getRefFqn(fqn);
@@ -59,7 +59,7 @@
}
obj = pCache_.getObject(Fqn.fromString(refFqn));
if (obj == null)
- throw new RuntimeException("ObjectGraphHandler.objectGraphGet(): null object from internal ref node." +
+ throw new RuntimeException("ObjectGraphHandler.get(): null object from internal ref node." +
" Original fqn: " + fqn + " Internal ref node: " + refFqn);
return obj; // No need to set the instance under fqn. It is located in refFqn anyway.
@@ -68,7 +68,7 @@
return null;
}
- boolean objectGraphPut(Fqn fqn, Interceptor interceptor, CachedType type) throws CacheException
+ boolean put(Fqn fqn, Interceptor interceptor, CachedType type) throws CacheException
{
Fqn originalFqn = null;
@@ -96,7 +96,7 @@
return true;
}
- boolean objectGraphRemove(Fqn fqn, boolean removeCacheInterceptor, Object pojo, boolean evict)
+ boolean remove(Fqn fqn, boolean removeCacheInterceptor, Object pojo, boolean evict)
throws CacheException
{
boolean isTrue = false;
@@ -109,7 +109,7 @@
{
if (log.isDebugEnabled())
{
- log.debug("objectGraphRemove(): removing object fqn: " + fqn + " but is actually from ref fqn: " + refFqn
+ log.debug("remove(): removing object fqn: " + fqn + " but is actually from ref fqn: " + refFqn
+ " Will just de-reference it.");
}
removeFromReference(fqn, refFqn, removeCacheInterceptor, evict);
@@ -134,7 +134,7 @@
if (log.isDebugEnabled())
{
- log.debug("objectGraphRemove(): this node " + fqn + " is currently referenced by a cyclic reference: "
+ log.debug("remove(): this node " + fqn + " is currently referenced by a cyclic reference: "
+ newFqn + "Will only decrement reference count.");
}
} else
@@ -145,7 +145,7 @@
InstanceAdvisor advisor = ((Advised) pojo)._getInstanceAdvisor();
CacheFieldInterceptor interceptor = (CacheFieldInterceptor) AopUtil.findCacheInterceptor(advisor);
if (interceptor == null)
- throw new IllegalStateException("ObjectGraphHandler.objectGraphRemove(): null interceptor");
+ throw new IllegalStateException("ObjectGraphHandler.remove(): null interceptor");
interceptor.setFqn(newFqn);
// reset the fqn in the indirect fqn map
internal_.setIndirectFqn(fqn.toString(), newFqn.toString());
@@ -154,7 +154,7 @@
if (log.isDebugEnabled())
{
- log.debug("objectGraphRemove(): this node " + fqn + " is currently referenced by " +
+ log.debug("remove(): this node " + fqn + " is currently referenced by " +
+internal_.getRefCount(newFqn) +
" other pojos after relocating to " + newFqn.toString());
}
1.2 +16 -17 JBossCache/src-50/org/jboss/cache/pojo/impl/PojoCacheDelegate.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PojoCacheDelegate.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/PojoCacheDelegate.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- PojoCacheDelegate.java 13 Jul 2006 15:56:12 -0000 1.1
+++ PojoCacheDelegate.java 14 Jul 2006 01:46:48 -0000 1.2
@@ -120,7 +120,7 @@
Object obj;
// Check for both Advised and Collection classes for object graph.
- if ((obj = graphHandler_.objectGraphGet(fqn)) != null)
+ if ((obj = graphHandler_.get(fqn)) != null)
return obj; // retrieved from internal ref node. We are done.
PojoReference pojoReference = internal_.getAopInstance(fqn);
@@ -149,12 +149,12 @@
{ // Must be Collection classes. We will use aop.ClassProxy instance instead.
try
{
- if ((obj = collectionHandler_.collectionObjectGet(fqn, clazz)) != null)
+ if ((obj = collectionHandler_.get(fqn, clazz)) != null)
{
} else
{
// Maybe it is just a serialized object.
- obj = serializableHandler_.serializableObjectGet(fqn);
+ obj = serializableHandler_.get(fqn);
}
}
catch (Exception e)
@@ -177,21 +177,20 @@
*/
Object _putObject(Fqn fqn, Object obj) throws CacheException
{
- if (obj == null)
- {
- return pCache_._removeObject(fqn, true);
- }
// Skip some un-necessary update if obj is the same class as the old one
Object oldValue = internal_.getPojo(fqn);
if (oldValue == obj) return obj; // value already in cache. return right away.
- if (oldValue != null)
- {
- // Trigger bulk remove here for performance
- setBulkRemove(true);
pCache_._removeObject(fqn, true); // remove old value before overwriting it.
+
+ if (obj == null)
+ {
+ return oldValue; // we are done
}
+ // Trigger bulk remove here for performance. Let's not worry about performance optimization yet.
+ setBulkRemove(false);
+
// Remember not to print obj here since it will trigger the CacheFieldInterceptor.
if (log.isDebugEnabled())
{
@@ -209,7 +208,7 @@
// Step Check for cross references
Interceptor interceptor = AopUtil.findCacheInterceptor(advisor);
- if (interceptor != null && graphHandler_.objectGraphPut(fqn, interceptor, type))
+ if (interceptor != null && graphHandler_.put(fqn, interceptor, type))
{ // found cross references
return oldValue;
}
@@ -222,10 +221,10 @@
* First check if obj has been aspectized? That is, if it is a ClassProxy or not.
* If not, we will need to create a proxy first for the Collection classes
*/
- } else if (collectionHandler_.collectionObjectPut(fqn, obj))
+ } else if (collectionHandler_.put(fqn, obj))
{
//
- } else if (serializableHandler_.serializableObjectPut(fqn, obj))
+ } else if (serializableHandler_.put(fqn, obj))
{
// must be Serializable, including primitive types
} else
@@ -569,7 +568,7 @@
setBulkRemove(false);
}
- if (graphHandler_.objectGraphRemove(fqn, removeCacheInterceptor, result, evict))
+ if (graphHandler_.remove(fqn, removeCacheInterceptor, result, evict))
{
return result;
}
@@ -578,11 +577,11 @@
if (Advised.class.isAssignableFrom(clazz))
{
_regularRemoveObject(fqn, removeCacheInterceptor, result, clazz, evict);
- } else if (collectionHandler_.collectionObjectRemove(fqn))
+ } else if (collectionHandler_.remove(fqn))
{
} else
{ // Just Serializable objects. Do a brute force remove is ok.
- serializableHandler_.serializableObjectRemove();
+ serializableHandler_.remove();
}
internal_.cleanUp(fqn, evict);
1.3 +4 -4 JBossCache/src-50/org/jboss/cache/pojo/impl/SerializableObjectHandler.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SerializableObjectHandler.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/impl/SerializableObjectHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- SerializableObjectHandler.java 13 Jul 2006 16:53:12 -0000 1.2
+++ SerializableObjectHandler.java 14 Jul 2006 01:46:48 -0000 1.3
@@ -22,7 +22,7 @@
* Handle Serializable object cache management.
*
* @author Ben Wang
- * @version $Id: SerializableObjectHandler.java,v 1.2 2006/07/13 16:53:12 bwang Exp $
+ * @version $Id: SerializableObjectHandler.java,v 1.3 2006/07/14 01:46:48 bwang Exp $
*/
class SerializableObjectHandler
{
@@ -38,7 +38,7 @@
internal_ = internal;
}
- Object serializableObjectGet(Fqn fqn)
+ Object get(Fqn fqn)
throws CacheException
{
Object obj = internal_.get(fqn, InternalConstant.SERIALIZED);
@@ -46,7 +46,7 @@
}
- boolean serializableObjectPut(Fqn fqn, Object obj)
+ boolean put(Fqn fqn, Object obj)
throws CacheException
{
// Note that JBoss Serialization can serialize any type now.
@@ -76,7 +76,7 @@
}
@SuppressWarnings({"CanBeStatic"})
- void serializableObjectRemove()
+ void remove()
{
// No need to do anything here since we will do clean up afterwards.
}
1.1 date: 2006/07/14 01:46:48; author: bwang; state: Exp;JBossCache/src-50/org/jboss/cache/pojo/impl/AdvisedPojoHandler.java
Index: AdvisedPojoHandler.java
===================================================================
/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.cache.pojo.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.cache.pojo.PojoTreeCache;
import org.jboss.cache.pojo.CachedType;
import org.jboss.cache.pojo.PojoReference;
import org.jboss.cache.pojo.interceptors.dynamic.AbstractCollectionInterceptor;
import org.jboss.cache.pojo.interceptors.dynamic.BaseInterceptor;
import org.jboss.cache.pojo.interceptors.dynamic.CacheFieldInterceptor;
import org.jboss.cache.pojo.collection.CollectionInterceptorUtil;
import org.jboss.cache.Fqn;
import org.jboss.cache.CacheException;
import org.jboss.aop.proxy.ClassProxy;
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.InstanceAdvisor;
import org.jboss.aop.Advised;
import java.util.Map;
import java.util.List;
import java.util.Set;
import java.util.Iterator;
import java.util.Collection;
/**
* Handling the Collection class management.
*
* @author Ben Wang
* Date: Aug 4, 2005
* @version $Id: AdvisedPojoHandler.java,v 1.1 2006/07/14 01:46:48 bwang Exp $
*/
class AdvisedPojoHandler
{
private final Log log = LogFactory.getLog(AdvisedPojoHandler.class);
private PojoTreeCache cache_;
private PojoCacheImpl pCache_;
private InternalHelper internal_;
private ObjectGraphHandler graphHandler_;
public AdvisedPojoHandler(PojoCacheImpl pCache, InternalHelper internal,
ObjectGraphHandler graphHandler)
{
pCache_ = pCache;
cache_ = (PojoTreeCache)pCache_.getCache();
internal_ = internal;
graphHandler_ = graphHandler;
}
Object get(Fqn fqn, Class clazz, CachedType type, PojoReference pojoReference)
throws CacheException
{
Object obj;
try
{
obj = clazz.newInstance();
// TODO Need to populate the object from the cache as well.
}
catch (Exception e)
{
throw new CacheException("failed creating instance of " + clazz.getName(), e);
}
// Insert interceptor at runtime
InstanceAdvisor advisor = ((Advised) obj)._getInstanceAdvisor();
CacheFieldInterceptor interceptor = new CacheFieldInterceptor(pCache_, fqn, type);
interceptor.setAopInstance(pojoReference);
// util_.attachInterceptor(obj, advisor, interceptor, observer_);
return null;
}
boolean put(Fqn fqn, Object obj) throws CacheException
{
return false;
}
boolean remove(Fqn fqn) throws CacheException
{
return false;
}
}
More information about the jboss-cvs-commits
mailing list