[exo-jcr-commits] exo-jcr SVN: r720 - in jcr/branches/1.12.0-JBC/component/core/src: main/java/org/exoplatform/services/jcr/impl/core/query and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Nov 17 11:07:54 EST 2009
Author: skabashnyuk
Date: 2009-11-17 11:07:53 -0500 (Tue, 17 Nov 2009)
New Revision: 720
Added:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexInterceptor.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexModificationsBuilder.java
Removed:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManagerHolder.java
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderRuntimeTest.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java
jcr/branches/1.12.0-JBC/component/core/src/test/resources/conf/standalone/test-jbosscache-config-exoloader.xml
Log:
EXOJCR-241 : IndexInterceptor initial implementation
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -48,9 +48,9 @@
import org.exoplatform.services.jcr.impl.core.query.QueryManagerFactory;
import org.exoplatform.services.jcr.impl.core.query.RepositoryIndexSearcherHolder;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
-import org.exoplatform.services.jcr.impl.core.query.SearchManagerHolder;
import org.exoplatform.services.jcr.impl.core.query.SystemSearchManager;
import org.exoplatform.services.jcr.impl.core.query.SystemSearchManagerHolder;
+import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexInterceptor;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.persistent.JBossCacheWorkspaceDataManager;
import org.exoplatform.services.jcr.impl.dataflow.persistent.LocalWorkspaceDataManagerStub;
@@ -221,7 +221,8 @@
//so IndexerCacheLoader will use it.
//registerComponentInstance(new SearchManagerHolder());
// workspaceContainer.registerComponentImplementation(SearchManagerHolder.class);
- workspaceContainer.registerComponentInstance(new SearchManagerHolder());
+ workspaceContainer.registerComponentImplementation(IndexInterceptor.class);
+
if (isSystem)
{
//registerComponentInstance(new SearchManagerHolder());
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -42,6 +42,8 @@
import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexInterceptor;
+import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexModificationsBuilder;
import org.exoplatform.services.jcr.impl.core.query.lucene.FieldNames;
import org.exoplatform.services.jcr.impl.core.query.lucene.LuceneVirtualTableResolver;
import org.exoplatform.services.jcr.impl.core.query.lucene.QueryHits;
@@ -54,6 +56,7 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
+import org.jboss.cache.commands.WriteCommand;
import org.jboss.cache.factories.annotations.NonVolatile;
import org.picocontainer.Startable;
@@ -165,7 +168,7 @@
public SearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder parentSearchManager,
DocumentReaderService extractor, ConfigurationManager cfm,
- final RepositoryIndexSearcherHolder indexSearcherHolder, final SearchManagerHolder searchManagerHolder)
+ final RepositoryIndexSearcherHolder indexSearcherHolder, IndexInterceptor indexInterceptor)
throws RepositoryException, RepositoryConfigurationException
{
@@ -178,8 +181,9 @@
this.cfm = cfm;
this.virtualTableResolver = new LuceneVirtualTableResolver(nodeTypeDataManager, nsReg);
this.parentSearchManager = parentSearchManager != null ? parentSearchManager.get() : null;
- itemMgr.addItemPersistenceListener(this);
- searchManagerHolder.put(this);
+ //itemMgr.addItemPersistenceListener(this);
+ //searchManagerHolder.put(this);
+ indexInterceptor.addIndexInterceptorListener(this);
}
/**
@@ -243,6 +247,41 @@
return handler;
}
+ public void onSaveItems(List<WriteCommand> modifications) throws RepositoryException
+ {
+ try
+ {
+ // nodes that need to be removed from the index.
+ HashSet<String> removedNodes = new HashSet<String>();
+
+ // nodes that need to be added to the index.
+ HashSet<String> addedNodes = new HashSet<String>();
+
+ // node thst must be updated
+ HashSet<String> updateNodes = new HashSet<String>();
+
+ IndexModificationsBuilder indexModificationsBuilder =
+ new IndexModificationsBuilder(addedNodes, removedNodes, updateNodes);
+ for (WriteCommand cacheCommand : modifications)
+ {
+ cacheCommand.acceptVisitor(null, indexModificationsBuilder);
+ }
+
+ for (String uuid : updateNodes)
+ {
+ removedNodes.add(uuid);
+ addedNodes.add(uuid);
+ }
+
+ updateIndex(removedNodes, addedNodes);
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace();
+ throw new RepositoryException(e.getLocalizedMessage(), e.getCause());
+ }
+ }
+
public void onSaveItems(ItemStateChangesLog changesLog)
{
Exception es = new Exception();
Deleted: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManagerHolder.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManagerHolder.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManagerHolder.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2003-2009 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see<http://www.gnu.org/licenses/>.
- */
-package org.exoplatform.services.jcr.impl.core.query;
-
-import org.jboss.cache.factories.annotations.NonVolatile;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * <br/>Date:
- *
- * @author <a href="karpenko.sergiy at gmail.com">Karpenko Sergiy</a>
- * @version $Id: SearchManagerHolder.java 111 2008-11-11 11:11:11Z serg $
- */
- at NonVolatile
-public class SearchManagerHolder
-{
- protected SearchManager manager;
-
- public SearchManagerHolder()
- {
- }
-
- public void put(SearchManager manager)
- {
- this.manager = manager;
- }
-
- public SearchManager get()
- {
- return manager;
- }
-}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -26,6 +26,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
+import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexInterceptor;
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -64,10 +65,10 @@
public SystemSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, DocumentReaderService service, ConfigurationManager cfm,
- RepositoryIndexSearcherHolder indexSearcherHolder, SearchManagerHolder holder) throws RepositoryException,
+ RepositoryIndexSearcherHolder indexSearcherHolder, IndexInterceptor indexInterceptor) throws RepositoryException,
RepositoryConfigurationException
{
- super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder, holder);
+ super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder, indexInterceptor);
}
@Override
Added: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexInterceptor.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexInterceptor.java (rev 0)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexInterceptor.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2009 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.cacheloader;
+
+import org.exoplatform.services.jcr.impl.core.query.SearchManager;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.commands.tx.PrepareCommand;
+import org.jboss.cache.interceptors.base.CommandInterceptor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:Sergey.Kabashnyuk at exoplatform.org">Sergey Kabashnyuk</a>
+ * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
+ *
+ */
+public class IndexInterceptor extends CommandInterceptor
+{
+ private final Log log = ExoLogger.getLogger(IndexInterceptor.class);
+
+ /**
+ * List of index interceptor listeners.
+ */
+ private final List<SearchManager> indexInterceptorListners;
+
+ /**
+ * Default constructor.
+ */
+ public IndexInterceptor()
+ {
+ super();
+ this.indexInterceptorListners = new ArrayList<SearchManager>();
+ }
+
+ /**
+ * @see org.jboss.cache.commands.AbstractVisitor#visitPrepareCommand(org.jboss.cache.InvocationContext, org.jboss.cache.commands.tx.PrepareCommand)
+ */
+ @Override
+ public Object visitPrepareCommand(InvocationContext ctx, PrepareCommand command) throws Throwable
+ {
+ // try
+ // {
+ // if (ctx.getTransactionContext().getModifications().size() > 0)
+ // {
+ // for (SearchManager searchManager : indexInterceptorListners)
+ // {
+ // searchManager.onSaveItems(ctx.getTransactionContext().getModifications());
+ // }
+ // }
+ // }
+ // catch (RepositoryException e)
+ // {
+ // //TODO handle rollback
+ // log.error(e.getLocalizedMessage());
+ // }
+
+ return invokeNextInterceptor(ctx, command);
+ }
+
+ /**
+ * Add new SearchManager to the indexInterceptorListners list.
+ * @param searchManager - search manager.
+ */
+ public void addIndexInterceptorListener(SearchManager searchManager)
+ {
+ indexInterceptorListners.add(searchManager);
+ }
+
+ /**
+ * Add new SearchManager to the indexInterceptorListners list.
+ * @param searchManager - search manager.
+ */
+ public boolean removeIndexInterceptorListener(SearchManager searchManager)
+ {
+ return indexInterceptorListners.remove(searchManager);
+ }
+}
Property changes on: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexInterceptor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexModificationsBuilder.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexModificationsBuilder.java (rev 0)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexModificationsBuilder.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2009 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.cacheloader;
+
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.impl.storage.jbosscache.JBossCacheStorage;
+import org.jboss.cache.Fqn;
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.commands.AbstractVisitor;
+import org.jboss.cache.commands.write.ClearDataCommand;
+import org.jboss.cache.commands.write.MoveCommand;
+import org.jboss.cache.commands.write.PutDataMapCommand;
+import org.jboss.cache.commands.write.PutKeyValueCommand;
+import org.jboss.cache.commands.write.RemoveKeyCommand;
+import org.jboss.cache.commands.write.RemoveNodeCommand;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:Sergey.Kabashnyuk at exoplatform.org">Sergey Kabashnyuk</a>
+ * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
+ *
+ */
+public class IndexModificationsBuilder extends AbstractVisitor
+{
+
+ // nodes that need to be removed from the index.
+ private final Set<String> removedNodes;
+
+ // nodes that need to be added to the index.
+ private final Set<String> addedNodes;
+
+ // node thst must be updated
+ private final Set<String> updateNodes;
+
+ public IndexModificationsBuilder(HashSet<String> addedNodes, HashSet<String> removedNodes,
+ HashSet<String> updateNodes)
+ {
+ // nodes that need to be removed from the index.
+ this.removedNodes = removedNodes;
+
+ // nodes that need to be added to the index.
+ this.addedNodes = addedNodes;
+
+ // node thst must be updated
+ this.updateNodes = updateNodes;
+
+ }
+
+ @Override
+ public Object visitClearDataCommand(InvocationContext ctx, ClearDataCommand command) throws Throwable
+ {
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+
+ if (isNode(fqn))
+ {
+ // add node
+ String uuid = parseUUID(fqn);
+ removedNodes.add(uuid);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Object visitMoveCommand(InvocationContext ctx, MoveCommand command) throws Throwable
+ {
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+
+ if (isNode(fqn))
+ {
+ //remove first
+ removedNodes.add(parseUUID(command.getFqn()));
+ //add second
+ addedNodes.add(parseUUID(command.getTo()));
+ }
+ else
+ {
+ // this is property - do nothing
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Object visitPutDataMapCommand(InvocationContext ctx, PutDataMapCommand command) throws Throwable
+ {
+
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+
+ if (isNode(fqn))
+ {
+ // add node
+ String uuid = parseUUID(fqn);
+ addedNodes.add(uuid);
+ }
+ else
+ {
+ // this is property - do nothing
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable
+ {
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+ String uuid = parseUUID(fqn);
+ if (!isNode(fqn))
+ {
+ PropertyData property = (PropertyData)command.getValue();
+ uuid = property.getParentIdentifier();
+ }
+ if (!addedNodes.contains(uuid))
+ {
+ updateNodes.add(uuid);
+ }
+
+ }
+ return null;
+
+ }
+
+ @Override
+ public Object visitRemoveKeyCommand(InvocationContext ctx, RemoveKeyCommand command) throws Throwable
+ {
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+
+ if (isNode(fqn))
+ {
+ // add node
+ String uuid = parseUUID(fqn);
+ if (!removedNodes.contains(uuid))
+ {
+ updateNodes.add(uuid);
+ }
+ }
+ }
+ return null;
+
+ }
+
+ @Override
+ public Object visitRemoveNodeCommand(InvocationContext ctx, RemoveNodeCommand command) throws Throwable
+ {
+ Fqn fqn = command.getFqn();
+ if (fqn.size() == 2)
+ {
+
+ if (isNode(fqn))
+ {
+ // add node
+ String uuid = parseUUID(fqn);
+ removedNodes.add(uuid);
+ }
+ else
+ {
+ // this is property - do nothing
+ }
+ }
+ return null;
+ }
+
+ private boolean isNode(Fqn<String> fqn)
+ {
+ String items = (String)fqn.get(0);
+ String s = items.toString();
+ return s.equals(JBossCacheStorage.NODES);
+ }
+
+ private String parseUUID(Fqn<String> fqn)
+ {
+ if (fqn.size() > 1)
+ {
+
+ // get only uuid
+ String uuid = (String)fqn.get(1);
+ //remove slash
+ return uuid;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+}
Property changes on: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexModificationsBuilder.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -17,7 +17,6 @@
package org.exoplatform.services.jcr.impl.core.query.cacheloader;
import org.exoplatform.services.jcr.datamodel.PropertyData;
-import org.exoplatform.services.jcr.impl.core.query.SearchManagerHolder;
import org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader;
import org.exoplatform.services.jcr.impl.storage.jbosscache.JBossCacheStorage;
import org.exoplatform.services.log.ExoLogger;
@@ -25,7 +24,6 @@
import org.jboss.cache.CacheException;
import org.jboss.cache.Fqn;
import org.jboss.cache.Modification;
-import org.jboss.cache.factories.annotations.Inject;
import java.util.HashSet;
import java.util.List;
@@ -39,6 +37,7 @@
* @author <a href="karpenko.sergiy at gmail.com">Karpenko Sergiy</a>
* @version $Id: CacheIndexer.java 111 2008-11-11 11:11:11Z serg $
*/
+ at Deprecated
public class IndexerCacheLoader extends AbstractWriteOnlyCacheLoader
{
@@ -47,17 +46,17 @@
*/
private static final Log log = ExoLogger.getLogger(IndexerCacheLoader.class);
- SearchManagerHolder searchManagerHolder = null;
+ //IndexInterceptorHolder searchManagerHolder = null;
public IndexerCacheLoader()
{
}
- @Inject
- public void injectDependencies(SearchManagerHolder holder)
- {
- searchManagerHolder = holder;
- }
+ // @Inject
+ // public void injectDependencies(IndexInterceptorHolder holder)
+ // {
+ // searchManagerHolder = holder;
+ // }
private String parseUUID(Fqn<String> fqn)
{
@@ -85,10 +84,10 @@
@Override
public void put(List<Modification> modifications) throws Exception
{
- if (searchManagerHolder == null && searchManagerHolder.get() != null)
- {
- return;
- }
+ // if (searchManagerHolder == null || searchManagerHolder.get() == null)
+ // {
+ // return;
+ // }
// nodes that need to be removed from the index.
final Set<String> removedNodes = new HashSet<String>();
@@ -219,7 +218,15 @@
addedNodes.add(uuid);
}
- searchManagerHolder.get().updateIndex(removedNodes, addedNodes);
+ try
+ {
+ //searchManagerHolder.get().updateIndex(removedNodes, addedNodes);
+ }
+ catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -21,7 +21,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.core.query.SearchManagerHolder;
+import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexInterceptor;
import org.exoplatform.services.jcr.impl.storage.WorkspaceDataContainerBase;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
@@ -36,6 +36,7 @@
import org.jboss.cache.DefaultCacheFactory;
import org.jboss.cache.Fqn;
import org.jboss.cache.Node;
+import org.jboss.cache.interceptors.CacheStoreInterceptor;
import org.picocontainer.Startable;
import java.io.IOException;
@@ -81,8 +82,8 @@
*/
public JBossCacheWorkspaceDataContainer(WorkspaceEntry wsConfig, RepositoryEntry repConfig,
InitialContextInitializer contextInit, ValueStoragePluginProvider valueStorageProvider,
- SearchManagerHolder searchManagerHolder) throws RepositoryConfigurationException, NamingException,
- RepositoryException, IOException
+ IndexInterceptor indexInterceptor) throws RepositoryConfigurationException, NamingException, RepositoryException,
+ IOException
{
this.repositoryName = repConfig.getName();
this.containerName = wsConfig.getName();
@@ -114,13 +115,14 @@
((CacheSPI<Serializable, Object>)cache).getComponentRegistry().registerComponent(this.persistentContainer,
WorkspaceDataContainer.class);
- ((CacheSPI<Serializable, Object>)cache).getComponentRegistry().registerComponent(searchManagerHolder,
- SearchManagerHolder.class);
+ // SearchManager stub. We need it because IndexInterceptor will be created
+ // much earlier when SearchManager
// TODO check lifecycle, might be we have to create in start(), with jdbc start.
// initializes configuration state, the root node, etc.
this.cache.create();
this.cache.start();
+ this.cache.addInterceptor(indexInterceptor, CacheStoreInterceptor.class);
Node<Serializable, Object> cacheRoot = cache.getRoot();
//Node<Serializable, Object> wsRoot = cacheRoot.addChild(Fqn.fromElements(repositoryName, containerName));
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderRuntimeTest.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderRuntimeTest.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderRuntimeTest.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -50,7 +50,6 @@
import org.exoplatform.services.jcr.impl.core.nodetype.registration.NodeTypeDataPersister;
import org.exoplatform.services.jcr.impl.core.query.RepositoryIndexSearcherHolder;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
-import org.exoplatform.services.jcr.impl.core.query.SearchManagerHolder;
import org.exoplatform.services.jcr.impl.core.query.SystemSearchManagerHolder;
import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexerCacheLoader;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
@@ -97,7 +96,7 @@
SearchManager manager;
- SearchManagerHolder holder;
+ //IndexInterceptorHolder holder;
public void createNewDataSource(String dataSourceName) throws Exception
{
@@ -126,7 +125,7 @@
initPersistence();
loader = new IndexerCacheLoader();
- loader.injectDependencies(holder);
+ //loader.injectDependencies(holder);
initJCRRoot();
@@ -860,7 +859,7 @@
protected void initPersistence() throws Exception
{
- holder = new SearchManagerHolder();
+ //holder = new IndexInterceptorHolder();
// Create WorkspaceEntry
ContainerEntry containerEntry = new ContainerEntry();
@@ -908,9 +907,9 @@
DocumentReaderService extractor = null;
ConfigurationManager cfm = new ConfigurationManagerImpl();
- manager =
- new SearchManager(ws.getQueryHandler(), nsReg, ntReg, itemMgr, parentSearchManager, extractor, cfm,
- indexSearcherHolder, holder);
+ // manager =
+ // new SearchManager(ws.getQueryHandler(), nsReg, ntReg, itemMgr, parentSearchManager, extractor, cfm,
+ // indexSearcherHolder, holder);
}
@Override
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java 2009-11-17 16:07:53 UTC (rev 720)
@@ -31,7 +31,6 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.RepositoryIndexSearcherHolder;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
-import org.exoplatform.services.jcr.impl.core.query.SearchManagerHolder;
import org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexerCacheLoader;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
@@ -60,7 +59,7 @@
private DummySearchManager searchManager;
- private SearchManagerHolder holder;
+ //private IndexInterceptorHolder holder;
/**
* @see junit.framework.TestCase#setUp()
@@ -70,9 +69,9 @@
{
// TODO Auto-generated method stub
super.setUp();
- holder = new SearchManagerHolder();
+ // holder = new IndexInterceptorHolder();
indexerCacheLoader = new IndexerCacheLoader();
- indexerCacheLoader.injectDependencies(holder);
+ //indexerCacheLoader.injectDependencies(holder);
searchManager = new DummySearchManager();
}
@@ -270,7 +269,7 @@
public DummySearchManager() throws RepositoryException, RepositoryConfigurationException
{
- super(null, null, null, null, null, null, null, new RepositoryIndexSearcherHolder(), holder);
+ super(null, null, null, null, null, null, null, new RepositoryIndexSearcherHolder(), null);
}
/**
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/resources/conf/standalone/test-jbosscache-config-exoloader.xml
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/resources/conf/standalone/test-jbosscache-config-exoloader.xml 2009-11-17 13:17:40 UTC (rev 719)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/resources/conf/standalone/test-jbosscache-config-exoloader.xml 2009-11-17 16:07:53 UTC (rev 720)
@@ -9,7 +9,7 @@
<clustering mode="replication">
<jgroupsConfig>
- <UDP discard_incompatible_packets="true" enable_bundling="false" enable_diagnostics="false" ip_ttl="2"
+ <!--UDP discard_incompatible_packets="true" enable_bundling="false" enable_diagnostics="false" ip_ttl="2"
loopback="false" max_bundle_size="64000" max_bundle_timeout="30" mcast_addr="228.10.10.10"
mcast_port="45588" mcast_recv_buf_size="25000000" mcast_send_buf_size="640000"
oob_thread_pool.enabled="true" oob_thread_pool.keep_alive_time="10000" oob_thread_pool.max_threads="4"
@@ -19,16 +19,17 @@
thread_pool.queue_enabled="true" thread_pool.queue_max_size="10" thread_pool.rejection_policy="Run"
tos="8" ucast_recv_buf_size="20000000" ucast_send_buf_size="640000" use_concurrent_stack="true"
use_incoming_packet_handler="true" />
- <PING num_initial_members="3" timeout="2000" />
+ <PING num_initial_members="3" timeout="2000" /-->
- <!-- TCP bind_addr="192.168.0.15" start_port="7800" loopback="true" recv_buf_size="20000000" send_buf_size="640000" discard_incompatible_packets="true"
+ <TCP bind_addr="localhost" start_port="7800" loopback="true" recv_buf_size="20000000" send_buf_size="640000" discard_incompatible_packets="true"
max_bundle_size="64000" max_bundle_timeout="30" use_incoming_packet_handler="true" enable_bundling="true" use_send_queues="false" sock_conn_timeout="300"
skip_suspected_members="true" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="1" thread_pool.max_threads="25"
thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="false" thread_pool.queue_max_size="100" thread_pool.rejection_policy="run"
oob_thread_pool.enabled="true" oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="run" />
- <MPING timeout="2000" num_initial_members="3" mcast_port="34526" bind_addr="192.168.0.15" mcast_addr="224.0.0.1" /-->
+ <MPING timeout="2000" num_initial_members="3" mcast_port="34526" bind_addr="localhost" mcast_addr="224.0.0.1" />
+
<MERGE2 max_interval="30000" min_interval="10000"/>
<FD_SOCK/>
@@ -66,17 +67,12 @@
</properties>
</loader>
- <loader class="org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexerCacheLoader"
+ <!-- loader class="org.exoplatform.services.jcr.impl.core.query.cacheloader.IndexerCacheLoader"
async="false" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false">
<properties>
</properties>
- </loader>
+ </loader-->
- <loader class="org.exoplatform.services.jcr.impl.storage.jbosscache.LockCacheLoader"
- async="false" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false">
- <properties>
- </properties>
- </loader>
</loaders>
<!-- Enable batching -->
More information about the exo-jcr-commits
mailing list