Author: skabashnyuk
Date: 2009-12-04 09:08:54 -0500 (Fri, 04 Dec 2009)
New Revision: 926
Added:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSearchManager.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSystemSearchManager.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/storage/jbosscache/JBossCacheWorkspaceDataContainer.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java
Log:
EXOJCR-283: initial implementation indexer on JBC
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-12-04
13:56:05 UTC (rev 925)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -26,6 +26,7 @@
import org.exoplatform.management.jmx.annotations.NamingContext;
import org.exoplatform.management.jmx.annotations.Property;
import org.exoplatform.services.jcr.access.AccessControlPolicy;
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
@@ -45,6 +46,8 @@
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import
org.exoplatform.services.jcr.impl.core.nodetype.registration.JcrNodeTypeDataPersister;
import org.exoplatform.services.jcr.impl.core.observation.ObservationManagerRegistry;
+import org.exoplatform.services.jcr.impl.core.query.JbossCacheSearchManager;
+import org.exoplatform.services.jcr.impl.core.query.JbossCacheSystemSearchManager;
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;
@@ -260,16 +263,29 @@
workspaceContainer.registerComponentImplementation(ObservationManagerRegistry.class);
// Query handler
- if (wsConfig.getQueryHandler() != null)
+ QueryHandlerEntry queryHandler = wsConfig.getQueryHandler();
+ if (queryHandler != null)
{
- workspaceContainer.registerComponentImplementation(SearchManager.class);
+ if (queryHandler.getParameterValue(JbossCacheSearchManager.JBOSSCACHE_CONFIG,
null) == null)
+ {
+ workspaceContainer.registerComponentImplementation(SearchManager.class);
+ if (isSystem)
+ {
+
workspaceContainer.registerComponentImplementation(SystemSearchManager.class);
+ }
+ }
+ else
+ {
+
workspaceContainer.registerComponentImplementation(JbossCacheSearchManager.class);
+ if (isSystem)
+ {
+
workspaceContainer.registerComponentImplementation(JbossCacheSystemSearchManager.class);
+ }
+ }
workspaceContainer.registerComponentImplementation(QueryManager.class);
workspaceContainer.registerComponentImplementation(QueryManagerFactory.class);
- workspaceContainer.registerComponentInstance(wsConfig.getQueryHandler());
- if (isSystem)
- {
-
workspaceContainer.registerComponentImplementation(SystemSearchManager.class);
- }
+ workspaceContainer.registerComponentInstance(queryHandler);
+
}
// access manager
@@ -422,8 +438,8 @@
{
initWorkspace(ws);
WorkspaceContainer workspaceContainer = getWorkspaceContainer(ws.getName());
- SearchManager searchManager =
-
(SearchManager)workspaceContainer.getComponentInstanceOfType(SearchManager.class);
+ // SearchManager searchManager =
+ //
(SearchManager)workspaceContainer.getComponentInstanceOfType(SearchManager.class);
// if (searchManager != null)
// {
// typeManager.addQueryHandler(searchManager.getHandler());
Added:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSearchManager.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSearchManager.java
(rev 0)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSearchManager.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -0,0 +1,61 @@
+/*
+ * 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;
+
+import org.exoplatform.container.configuration.ConfigurationManager;
+import org.exoplatform.services.document.DocumentReaderService;
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
+import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
+import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * @author <a href="mailto:Sergey.Kabashnyuk@exoplatform.org">Sergey
Kabashnyuk</a>
+ * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
+ *
+ */
+public class JbossCacheSearchManager extends SearchManager
+{
+ /**
+ * @param config
+ * @param nsReg
+ * @param ntReg
+ * @param itemMgr
+ * @param parentSearchManager
+ * @param extractor
+ * @param cfm
+ * @param indexSearcherHolder
+ * @throws RepositoryException
+ * @throws RepositoryConfigurationException
+ */
+ public JbossCacheSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
+ WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder
parentSearchManager,
+ DocumentReaderService extractor, ConfigurationManager cfm,
RepositoryIndexSearcherHolder indexSearcherHolder)
+ throws RepositoryException, RepositoryConfigurationException
+ {
+ super(config, nsReg, ntReg, itemMgr, parentSearchManager, extractor, cfm,
indexSearcherHolder);
+ // TODO Auto-generated constructor stub
+ }
+
+ public static final String JBOSSCACHE_CONFIG = "jbosscache-configuration";
+
+}
Property changes on:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSearchManager.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/JbossCacheSystemSearchManager.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSystemSearchManager.java
(rev 0)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSystemSearchManager.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -0,0 +1,59 @@
+/*
+ * 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;
+
+import org.exoplatform.container.configuration.ConfigurationManager;
+import org.exoplatform.services.document.DocumentReaderService;
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
+import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
+import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * @author <a href="mailto:Sergey.Kabashnyuk@exoplatform.org">Sergey
Kabashnyuk</a>
+ * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
+ *
+ */
+public class JbossCacheSystemSearchManager extends SystemSearchManager
+{
+
+ /**
+ * @param config
+ * @param nsReg
+ * @param ntReg
+ * @param itemMgr
+ * @param service
+ * @param cfm
+ * @param indexSearcherHolder
+ * @throws RepositoryException
+ * @throws RepositoryConfigurationException
+ */
+ public JbossCacheSystemSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl
nsReg,
+ NodeTypeDataManager ntReg, WorkspacePersistentDataManager itemMgr,
DocumentReaderService service,
+ ConfigurationManager cfm, RepositoryIndexSearcherHolder indexSearcherHolder) throws
RepositoryException,
+ RepositoryConfigurationException
+ {
+ super(config, nsReg, ntReg, itemMgr, service, cfm, indexSearcherHolder);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Property changes on:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/JbossCacheSystemSearchManager.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/SearchManager.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2009-12-04
13:56:05 UTC (rev 925)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -43,7 +43,6 @@
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import
org.exoplatform.services.jcr.impl.core.query.jbosscache.IndexModificationsBuilder;
-import org.exoplatform.services.jcr.impl.core.query.jbosscache.IndexerInterceptor;
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;
@@ -167,8 +166,7 @@
public SearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder
parentSearchManager,
- DocumentReaderService extractor, ConfigurationManager cfm,
- final RepositoryIndexSearcherHolder indexSearcherHolder, IndexerInterceptor
indexInterceptor)
+ DocumentReaderService extractor, ConfigurationManager cfm, final
RepositoryIndexSearcherHolder indexSearcherHolder)
throws RepositoryException, RepositoryConfigurationException
{
@@ -181,7 +179,8 @@
this.cfm = cfm;
this.virtualTableResolver = new LuceneVirtualTableResolver(nodeTypeDataManager,
nsReg);
this.parentSearchManager = parentSearchManager != null ? parentSearchManager.get()
: null;
- indexInterceptor.addIndexInterceptorListener(this);
+ //indexInterceptor.addIndexInterceptorListener(this);
+ ((WorkspacePersistentDataManager)this.itemMgr).addItemPersistenceListener(this);
}
/**
@@ -282,8 +281,8 @@
public void onSaveItems(ItemStateChangesLog changesLog)
{
- Exception es = new Exception();
- es.printStackTrace();
+ // Exception es = new Exception();
+ // es.printStackTrace();
if (handler == null)
return;
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-12-04
13:56:05 UTC (rev 925)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -26,7 +26,6 @@
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.jbosscache.IndexerInterceptor;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -71,10 +70,9 @@
public SystemSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, DocumentReaderService service,
ConfigurationManager cfm,
- RepositoryIndexSearcherHolder indexSearcherHolder, IndexerInterceptor
indexInterceptor)
- throws RepositoryException, RepositoryConfigurationException
+ RepositoryIndexSearcherHolder indexSearcherHolder) throws RepositoryException,
RepositoryConfigurationException
{
- super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder,
indexInterceptor);
+ super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder);
}
@Override
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-12-04
13:56:05 UTC (rev 925)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -21,7 +21,6 @@
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.jbosscache.IndexerInterceptor;
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,7 +35,6 @@
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,9 +79,8 @@
*
*/
public JBossCacheWorkspaceDataContainer(WorkspaceEntry wsConfig, RepositoryEntry
repConfig,
- InitialContextInitializer contextInit, ValueStoragePluginProvider
valueStorageProvider,
- IndexerInterceptor indexInterceptor) throws RepositoryConfigurationException,
NamingException, RepositoryException,
- IOException
+ InitialContextInitializer contextInit, ValueStoragePluginProvider
valueStorageProvider)
+ throws RepositoryConfigurationException, NamingException, RepositoryException,
IOException
{
this.repositoryName = repConfig.getName();
this.containerName = wsConfig.getName();
@@ -122,7 +119,7 @@
// initializes configuration state, the root node, etc.
this.cache.create();
this.cache.start();
- this.cache.addInterceptor(indexInterceptor, CacheStoreInterceptor.class);
+ //this.cache.addInterceptor(indexInterceptor, CacheStoreInterceptor.class);
Node<Serializable, Object> cacheRoot = cache.getRoot();
@@ -143,7 +140,7 @@
{
this.cache.stop();
this.cache.destroy();
-
+
if (persistentContainer instanceof Startable)
{
((Startable)persistentContainer).stop();
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-12-04
13:56:05 UTC (rev 925)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java 2009-12-04
14:08:54 UTC (rev 926)
@@ -18,22 +18,29 @@
*/
package org.exoplatform.services.jcr.impl.storage.jbosscache;
+import org.exoplatform.container.configuration.ConfigurationManager;
+import org.exoplatform.services.document.DocumentReaderService;
import org.exoplatform.services.jcr.access.AccessControlList;
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
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.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.core.query.IndexException;
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.SystemSearchManagerHolder;
import org.exoplatform.services.jcr.impl.core.query.jbosscache.IndexerCacheLoader;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
+import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.jboss.cache.Modification;
import java.io.IOException;
@@ -72,7 +79,7 @@
// holder = new IndexInterceptorHolder();
indexerCacheLoader = new IndexerCacheLoader();
//indexerCacheLoader.injectDependencies(holder);
- searchManager = new DummySearchManager();
+ //searchManager = new DummySearchManager();
}
@@ -263,15 +270,31 @@
private class DummySearchManager extends SearchManager
{
+ /**
+ * @param config
+ * @param nsReg
+ * @param ntReg
+ * @param itemMgr
+ * @param parentSearchManager
+ * @param extractor
+ * @param cfm
+ * @param indexSearcherHolder
+ * @throws RepositoryException
+ * @throws RepositoryConfigurationException
+ */
+ public DummySearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
+ WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder
parentSearchManager,
+ DocumentReaderService extractor, ConfigurationManager cfm,
RepositoryIndexSearcherHolder indexSearcherHolder)
+ throws RepositoryException, RepositoryConfigurationException
+ {
+ super(config, nsReg, ntReg, itemMgr, parentSearchManager, extractor, cfm,
indexSearcherHolder);
+ // TODO Auto-generated constructor stub
+ }
+
private Set<String> removedNodes;
private Set<String> addedNodes;
- public DummySearchManager() throws RepositoryException,
RepositoryConfigurationException
- {
- super(null, null, null, null, null, null, null, new
RepositoryIndexSearcherHolder(), null);
- }
-
/**
* @see
org.exoplatform.services.jcr.impl.core.query.SearchManager#createQuery(org.exoplatform.services.jcr.impl.core.SessionImpl,
org.exoplatform.services.jcr.impl.core.SessionDataManager, javax.jcr.Node)
*/