[jboss-cvs] JBossCache/src-50/org/jboss/cache/pojo/impl ...
Manik Surtani
msurtani at jboss.com
Sat Dec 30 12:50:03 EST 2006
User: msurtani
Date: 06/12/30 12:50:03
Modified: src-50/org/jboss/cache/pojo/impl PojoCacheDelegate.java
Log:
Major changes to restructure cache and node object model
Revision Changes Path
1.18 +62 -52 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.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- PojoCacheDelegate.java 30 Dec 2006 02:53:07 -0000 1.17
+++ PojoCacheDelegate.java 30 Dec 2006 17:50:03 -0000 1.18
@@ -14,21 +14,20 @@
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.proxy.ClassProxy;
import org.jboss.cache.CacheException;
-import org.jboss.cache.Fqn;
import org.jboss.cache.CacheSPI;
+import org.jboss.cache.Fqn;
import org.jboss.cache.Node;
-import org.jboss.cache.Cache;
import org.jboss.cache.config.Option;
-import org.jboss.cache.pojo.interceptors.dynamic.AbstractCollectionInterceptor;
-import org.jboss.cache.pojo.memory.FieldPersistentReference;
-import org.jboss.cache.pojo.util.AopUtil;
-import org.jboss.cache.pojo.interceptors.dynamic.BaseInterceptor;
-import org.jboss.cache.pojo.observable.Observer;
-import org.jboss.cache.pojo.PojoUtil;
import org.jboss.cache.pojo.CachedType;
import org.jboss.cache.pojo.PojoInstance;
import org.jboss.cache.pojo.PojoReference;
+import org.jboss.cache.pojo.PojoUtil;
import org.jboss.cache.pojo.collection.CollectionInterceptorUtil;
+import org.jboss.cache.pojo.interceptors.dynamic.AbstractCollectionInterceptor;
+import org.jboss.cache.pojo.interceptors.dynamic.BaseInterceptor;
+import org.jboss.cache.pojo.memory.FieldPersistentReference;
+import org.jboss.cache.pojo.observable.Observer;
+import org.jboss.cache.pojo.util.AopUtil;
import java.lang.reflect.Field;
import java.util.Collection;
@@ -63,7 +62,7 @@
public PojoCacheDelegate(PojoCacheImpl cache, Observer observer)
{
pCache_ = cache;
- cache_ = (CacheSPI)pCache_.getCache();
+ cache_ = (CacheSPI) pCache_.getCache();
internal_ = new InternalHelper(cache_);
graphHandler_ = new ObjectGraphHandler(pCache_, internal_);
collectionHandler_ = new CollectionClassHandler(pCache_, internal_);
@@ -74,12 +73,12 @@
public void setBulkRemove(boolean bulk)
{
- bulkRemove_.set(Boolean.valueOf(bulk));
+ bulkRemove_.set(bulk);
}
private boolean getBulkRemove()
{
- return ((Boolean) bulkRemove_.get()).booleanValue();
+ return bulkRemove_.get();
}
public Object getObject(Fqn fqn) throws CacheException
@@ -131,7 +130,6 @@
/**
* Note that caller of this method will take care of synchronization within the <code>fqn</code> sub-tree.
- *
*/
public Object putObjectII(Fqn fqn, Object obj) throws CacheException
{
@@ -168,18 +166,21 @@
+ internalFqn);
}
- if( (obj instanceof Advised || obj instanceof ClassProxy) && isMultipleReferencedPut(obj))
+ if ((obj instanceof Advised || obj instanceof ClassProxy) && isMultipleReferencedPut(obj))
{
// we pass in the originating fqn intentionaly
graphHandler_.put(fqn, obj);
- } else if (obj instanceof Advised)
+ }
+ else if (obj instanceof Advised)
{
advisedHandler_.put(internalFqn, fqn, obj);
- } else if (isCollection(obj))
+ }
+ else if (isCollection(obj))
{
collectionHandler_.put(internalFqn, fqn, obj);
//
- } else
+ }
+ else
{
// must be Serializable, including primitive types
serializableHandler_.put(internalFqn, obj);
@@ -191,8 +192,7 @@
Fqn createInternalFqn(Fqn fqn, Object obj) throws CacheException
{
// Create an internal Fqn name
- Fqn internalFqn = AopUtil.createInternalFqn(fqn, (Cache)cache_);
- return internalFqn;
+ return AopUtil.createInternalFqn(fqn, cache_);
}
Fqn setPojoReference(Fqn fqn, Object obj, Fqn internalFqn) throws CacheException
@@ -216,12 +216,12 @@
private void createChildNodeFirstWithoutLocking(Fqn internalFqn)
{
int size = internalFqn.size();
- Fqn f = internalFqn.getFqnChild(0, size-1);
- Fqn child = internalFqn.getFqnChild(size-1, size);
+ Fqn f = internalFqn.getFqnChild(0, size - 1);
+ Fqn child = internalFqn.getFqnChild(size - 1, size);
Node base = cache_.getRoot().getChild(f);
- if(base == null)
+ if (base == null)
{
- log.debug("The node retrieved is null from fqn: " +f);
+ log.debug("The node retrieved is null from fqn: " + f);
return;
}
Option option = cache_.getInvocationContext().getOptionOverrides();
@@ -240,7 +240,7 @@
{
// the class attribute is implicitly stored as an immutable read-only attribute
PojoReference pojoReference = internal_.getPojoReference(fqn);
- if(pojoReference == null)
+ if (pojoReference == null)
{
// clazz and pojoReference can be not null if this node is the replicated brother node.
if (log.isTraceEnabled())
@@ -265,19 +265,22 @@
return null;
}
- if(graphHandler_.isMultipleReferenced(internalFqn))
+ if (graphHandler_.isMultipleReferenced(internalFqn))
{
graphHandler_.remove(fqn, internalFqn, result);
- } else if (Advised.class.isAssignableFrom(clazz))
+ }
+ else if (Advised.class.isAssignableFrom(clazz))
{
advisedHandler_.remove(internalFqn, result, clazz);
internal_.cleanUp(internalFqn);
- } else if (isCollectionGet(clazz))
+ }
+ else if (isCollectionGet(clazz))
{
// We need to return the original reference
result = collectionHandler_.remove(internalFqn, result);
internal_.cleanUp(internalFqn);
- } else
+ }
+ else
{ // Just Serializable objects. Do a brute force remove is ok.
serializableHandler_.remove();
internal_.cleanUp(internalFqn);
@@ -312,7 +315,7 @@
{
// the class attribute is implicitly stored as an immutable read-only attribute
PojoReference pojoReference = internal_.getPojoReference(fqn);
- if(pojoReference == null)
+ if (pojoReference == null)
{
// clazz and pojoReference can be not null if this node is the replicated brother node.
return null;
@@ -324,7 +327,7 @@
if (log.isDebugEnabled())
{
log.debug("getObject(): id: " + fqn + " with a corresponding internal id: "
- +internalFqn);
+ + internalFqn);
}
/**
@@ -344,10 +347,12 @@
if (Advised.class.isAssignableFrom(clazz))
{
obj = advisedHandler_.get(internalFqn, clazz, pojoInstance);
- } else if(isCollectionGet(clazz))
+ }
+ else if (isCollectionGet(clazz))
{ // Must be Collection classes. We will use aop.ClassProxy instance instead.
obj = collectionHandler_.get(internalFqn, clazz, pojoInstance);
- } else
+ }
+ else
{
// Maybe it is just a serialized object.
obj = serializableHandler_.get(internalFqn, clazz, pojoInstance);
@@ -359,7 +364,7 @@
private boolean isCollectionGet(Class clazz)
{
- if(Map.class.isAssignableFrom(clazz) || Collection.class.isAssignableFrom(clazz))
+ if (Map.class.isAssignableFrom(clazz) || Collection.class.isAssignableFrom(clazz))
return true;
return false;
@@ -369,7 +374,7 @@
private boolean isMultipleReferencedPut(Object obj)
{
Interceptor interceptor = null;
- if(obj instanceof Advised)
+ if (obj instanceof Advised)
{
InstanceAdvisor advisor = ((Advised) obj)._getInstanceAdvisor();
if (advisor == null)
@@ -377,27 +382,26 @@
// Step Check for cross references
interceptor = AopUtil.findCacheInterceptor(advisor);
- }else
+ }
+ else
{
interceptor = CollectionInterceptorUtil.getInterceptor((ClassProxy) obj);
}
- if(interceptor == null) return false;
+ if (interceptor == null) return false;
Fqn originalFqn = null;
// ah, found something. So this will be multiple referenced.
originalFqn = ((BaseInterceptor) interceptor).getFqn();
- if (originalFqn != null) return true;
+ return originalFqn != null;
- return false;
}
private boolean isCollection(Object obj)
{
- if(obj instanceof Collection || obj instanceof Map) return true;
+ return obj instanceof Collection || obj instanceof Map;
- return false;
}
/**
@@ -413,9 +417,10 @@
{
undoInterceptorDetach(undoMap);
return false;
- } else
+ }
+ else
{
- cache_.remove(fqn); // interceptor has been removed so it is safe to do bulk remove now.
+ cache_.removeNode(fqn); // interceptor has been removed so it is safe to do bulk remove now.
}
return true;
}
@@ -427,7 +432,8 @@
{
util_.detachInterceptor(advisor, interceptor, observer_);
undoMap.put(advisor, interceptor);
- } else
+ }
+ else
{
undoMap.put(DETACH, interceptor);
}
@@ -450,7 +456,8 @@
}
advisor.appendInterceptor(interceptor);
- } else
+ }
+ else
{
BaseInterceptor interceptor = (BaseInterceptor) undoMap.get(obj);
boolean copyToCache = false;
@@ -539,7 +546,8 @@
}
boolean detachOnly = false;
detachInterceptor(advisor, interceptor, detachOnly, undoMap);
- } else if (obj instanceof Map || obj instanceof List || obj instanceof Set)
+ }
+ else if (obj instanceof Map || obj instanceof List || obj instanceof Set)
{
// TODO Is this really necessary?
if (!(obj instanceof ClassProxy)) return false;
@@ -559,7 +567,8 @@
Object subObj = ((Map) obj).get(it.next());
if (pojoGraphMultipleReferenced(subObj, undoMap)) return true;
}
- } else if (obj instanceof List || obj instanceof Set)
+ }
+ else if (obj instanceof List || obj instanceof Set)
{
for (Iterator it = ((Collection) obj).iterator(); it.hasNext();)
{
@@ -588,20 +597,21 @@
Node root = cache_.getRoot();
Node current = root.getChild(fqn);
- if(current == null) return;
+ if (current == null) return;
Collection<Node> col = current.getChildren();
- if(col == null) return;
- for(Node n : col)
+ if (col == null) return;
+ for (Node n : col)
{
Fqn newFqn = n.getFqn();
- if(InternalHelper.isInternalNode(newFqn)) continue; // skip
+ if (InternalHelper.isInternalNode(newFqn)) continue; // skip
Object pojo = getObject(newFqn);
if (pojo != null)
{
map.put(newFqn, pojo);
- } else
+ }
+ else
{
findChildObjects(newFqn, map);
}
More information about the jboss-cvs-commits
mailing list