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@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@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();
}
- }
+ }
}