[exo-jcr-commits] exo-jcr SVN: r1175 - jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Dec 25 04:09:39 EST 2009


Author: nzamosenchuk
Date: 2009-12-25 04:09:39 -0500 (Fri, 25 Dec 2009)
New Revision: 1175

Modified:
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
Log:
EXOJCR-334: IndexerCacheLoader updated to handle transactions.

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-24 16:29:21 UTC (rev 1174)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-25 09:09:39 UTC (rev 1175)
@@ -23,6 +23,7 @@
 import org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
+import org.jboss.cache.CacheException;
 import org.jboss.cache.Fqn;
 import org.jboss.cache.Modification;
 
@@ -73,16 +74,24 @@
    @Override
    public Object put(Fqn arg0, Object key, Object val) throws Exception
    {
-      if (key.equals(JbossCacheIndexChangesFilter.LISTWRAPPER) && val instanceof ChangesFilterListsWrapper)
+      try
       {
-         if (log.isDebugEnabled())
+         if (key.equals(JbossCacheIndexChangesFilter.LISTWRAPPER) && val instanceof ChangesFilterListsWrapper)
          {
-            log.info("Received list wrapper, start indexing...");
+            if (log.isDebugEnabled())
+            {
+               log.info("Received list wrapper, start indexing...");
+            }
+            ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)val;
+            //System.out.println("UPDATE INDEX: "+wrapper.getAddedNodes() + wrapper.getRemovedNodes());
+            updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
+               .getParentRemovedNodes());
          }
-         ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)val;
-         updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
-            .getParentRemovedNodes());
       }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
       return null;
    }
 
@@ -177,6 +186,38 @@
    @Override
    public void put(List<Modification> modifications) throws Exception
    {
-      // batching is not used
+      // If transactions are used, then list of modifications will be sent to cache loader
+      // added code to handle list of modifications.
+      for (Modification m : modifications)
+      {
+         switch (m.getType())
+         {
+            case PUT_DATA :
+               put(m.getFqn(), m.getData());
+               break;
+            case PUT_DATA_ERASE :
+               removeData(m.getFqn());
+               put(m.getFqn(), m.getData());
+               break;
+            case PUT_KEY_VALUE :
+               put(m.getFqn(), m.getKey(), m.getValue());
+               break;
+            case REMOVE_DATA :
+               removeData(m.getFqn());
+               break;
+            case REMOVE_KEY_VALUE :
+               remove(m.getFqn(), m.getKey());
+               break;
+            case REMOVE_NODE :
+               remove(m.getFqn());
+               break;
+            case MOVE :
+               // involve moving all children too
+               move(m.getFqn(), m.getFqn2());
+               break;
+            default :
+               throw new CacheException("Unknown modification " + m.getType());
+         }
+      }
    }
 }



More information about the exo-jcr-commits mailing list