[exo-jcr-commits] exo-jcr SVN: r4911 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query: ispn and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Sep 14 10:11:25 EDT 2011


Author: nzamosenchuk
Date: 2011-09-14 10:11:24 -0400 (Wed, 14 Sep 2011)
New Revision: 4911

Added:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/LocalIndexMarker.java
Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
Log:
EXOJCR-1505 : Define index strategy by using an interface marker.

Added: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/LocalIndexMarker.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/LocalIndexMarker.java	                        (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/LocalIndexMarker.java	2011-09-14 14:11:24 UTC (rev 4911)
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * 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.exoplatform.services.jcr.impl.core.query;
+
+/**
+ * An empty interface notifying that changes filter implements LocalIndex cluster-ready
+ * strategy. This can be used to check if recovery filters should be used. 
+ * 
+ * @author <a href="mailto:nzamosenchuk at exoplatform.com">Nikolay Zamosenchul</a>
+ * @version $Id: LocalIndexChangesFilterMarker.java 34360 2009-07-22 23:58:59Z nzamosenchuk $
+ */
+public interface LocalIndexMarker
+{
+
+}


Property changes on: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/LocalIndexMarker.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java	2011-09-14 08:29:13 UTC (rev 4910)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java	2011-09-14 14:11:24 UTC (rev 4911)
@@ -756,11 +756,24 @@
 
       // Recovery Filters are 
       String changesFilterClassName = config.getParameterValue(QueryHandlerParams.PARAM_CHANGES_FILTER_CLASS, null);
+      boolean recoveryFilterUsed = false;
 
-      boolean recoveryFilterUsed =
-         (org.exoplatform.services.jcr.impl.core.query.ispn.LocalIndexChangesFilter.class.getName().equals(
-            changesFilterClassName) || org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter.class
-            .getName().equals(changesFilterClassName)) ? true : false;
+      if (changesFilterClassName != null)
+      {
+         try
+         {
+            Class<?> changesFilterClass = Class.forName(changesFilterClassName);
+            // Set recoveryFilterUsed, if changes filter implements LocalIndex strategy 
+            if (changesFilterClass != null)
+            {
+               recoveryFilterUsed = LocalIndexMarker.class.isAssignableFrom(changesFilterClass);
+            }
+         }
+         catch (ClassNotFoundException e)
+         {
+            throw new RepositoryConfigurationException(e.getMessage(), e);
+         }
+      }
 
       QueryHandlerContext context =
          new QueryHandlerContext(container, itemMgr, indexingTree, nodeTypeDataManager, nsReg, parentHandler,

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java	2011-09-14 08:29:13 UTC (rev 4910)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java	2011-09-14 14:11:24 UTC (rev 4911)
@@ -25,6 +25,7 @@
 import org.exoplatform.services.jcr.impl.core.query.IndexerChangesFilter;
 import org.exoplatform.services.jcr.impl.core.query.IndexerIoModeHandler;
 import org.exoplatform.services.jcr.impl.core.query.IndexingTree;
+import org.exoplatform.services.jcr.impl.core.query.LocalIndexMarker;
 import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
 import org.exoplatform.services.jcr.impl.core.query.SearchManager;
 import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
@@ -52,7 +53,7 @@
  * @author <a href="mailto:anatoliy.bazko at gmail.com">Anatoliy Bazko</a>
  * @version $Id: LocalIndexChangesFilter.java 34360 2009-07-22 23:58:59Z tolusha $
  */
-public class LocalIndexChangesFilter extends IndexerChangesFilter
+public class LocalIndexChangesFilter extends IndexerChangesFilter implements LocalIndexMarker
 {
    /**
     * Logger instance for this class
@@ -60,7 +61,7 @@
    private final Log log = ExoLogger.getLogger("exo.jcr.component.core.LocalIndexChangesFilter");
 
    public static final String PARAM_INFINISPAN_CACHESTORE_CLASS = "infinispan-cachestore-classname";
-   
+
    private final Cache<Serializable, Object> cache;
 
    private final String wsId;
@@ -99,7 +100,7 @@
          handler.init();
       }
    }
-   
+
    protected Log getLogger()
    {
       return log;

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java	2011-09-14 08:29:13 UTC (rev 4910)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java	2011-09-14 14:11:24 UTC (rev 4911)
@@ -26,11 +26,12 @@
 import org.exoplatform.services.jcr.impl.core.query.IndexerChangesFilter;
 import org.exoplatform.services.jcr.impl.core.query.IndexerIoModeHandler;
 import org.exoplatform.services.jcr.impl.core.query.IndexingTree;
+import org.exoplatform.services.jcr.impl.core.query.LocalIndexMarker;
 import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
 import org.exoplatform.services.jcr.impl.core.query.SearchManager;
 import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
 import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
 import org.exoplatform.services.jcr.util.IdGenerator;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
@@ -61,7 +62,7 @@
  * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
  *
  */
-public class LocalIndexChangesFilter extends IndexerChangesFilter
+public class LocalIndexChangesFilter extends IndexerChangesFilter implements LocalIndexMarker
 {
    /**
     * Logger instance for this class
@@ -86,7 +87,7 @@
    private final Fqn<String> rootFqn;
 
    private final JmxRegistrationManager jmxManager;
-   
+
    public static final String LISTWRAPPER = "$lists".intern();
 
    /**
@@ -126,12 +127,14 @@
       initCache.getConfiguration().setCacheLoaderConfig(cacheLoaderConfig);
       this.rootFqn = Fqn.fromElements(searchManager.getWsId());
       this.cache =
-         ExoJBossCacheFactory.getUniqueInstance(CacheType.INDEX_CACHE, rootFqn, initCache,
-            config.getParameterBoolean(PARAM_JBOSSCACHE_SHAREABLE, PARAM_JBOSSCACHE_SHAREABLE_DEFAULT));
+         ExoJBossCacheFactory.getUniqueInstance(CacheType.INDEX_CACHE, rootFqn, initCache, config.getParameterBoolean(
+            PARAM_JBOSSCACHE_SHAREABLE, PARAM_JBOSSCACHE_SHAREABLE_DEFAULT));
 
       PrivilegedJBossCacheHelper.create(cache);
       PrivilegedJBossCacheHelper.start(cache);
-      this.jmxManager = ExoJBossCacheFactory.getJmxRegistrationManager(searchManager.getExoContainerContext(), cache, CacheType.INDEX_CACHE);
+      this.jmxManager =
+         ExoJBossCacheFactory.getJmxRegistrationManager(searchManager.getExoContainerContext(), cache,
+            CacheType.INDEX_CACHE);
       if (jmxManager != null)
       {
          SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
@@ -172,7 +175,7 @@
       String id = IdGenerator.generate();
       cache.put(Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
    }
-   
+
    /**
     * @see java.lang.Object#finalize()
     */
@@ -191,11 +194,11 @@
                   return null;
                }
             });
-         }         
+         }
       }
       finally
       {
-         super.finalize();         
+         super.finalize();
       }
-   }    
+   }
 }



More information about the exo-jcr-commits mailing list