Author: sergiykarpenko
Date: 2009-11-16 08:36:14 -0500 (Mon, 16 Nov 2009)
New Revision: 682
Added:
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
Log:
EXOJCR-202: SearchManager added to JCR setup
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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -48,7 +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.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.value.ValueFactoryImpl;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.JBossCacheWorkspaceDataManager;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.LocalWorkspaceDataManagerStub;
@@ -210,22 +212,19 @@
workspaceContainer.registerComponentImplementation(StandaloneStoragePluginProvider.class);
- //TODO remove it
- if (wsConfig.getQueryHandler() != null)
- {
- workspaceContainer.registerComponentImplementation(SearchManager.class);
-
- workspaceContainer.registerComponentImplementation(QueryManager.class);
-
workspaceContainer.registerComponentImplementation(QueryManagerFactory.class);
- workspaceContainer.registerComponentInstance(wsConfig.getQueryHandler());
- }
-
try
{
Class<?> containerType =
Class.forName(wsConfig.getContainer().getType());
workspaceContainer.registerComponentImplementation(containerType);
+ // TODO hardcoded SearchManagerHolder will by puted to
JBossWorkspaceDataContainer
+ //constructor, and injected to IndexerCacheLoader, and later SearchManager
will be inserted to this holder,
+ //so IndexerCacheLoader will use it.
+ //registerComponentInstance(new SearchManagerHolder());
+ //
workspaceContainer.registerComponentImplementation(SearchManagerHolder.class);
+ workspaceContainer.registerComponentInstance(new SearchManagerHolder());
if (isSystem)
{
+ //registerComponentInstance(new SearchManagerHolder());
registerComponentInstance(new
SystemDataContainerHolder((WorkspaceDataContainer)workspaceContainer
.getComponentInstanceOfType(WorkspaceDataContainer.class)));
}
@@ -283,10 +282,10 @@
workspaceContainer.registerComponentImplementation(QueryManager.class);
workspaceContainer.registerComponentImplementation(QueryManagerFactory.class);
workspaceContainer.registerComponentInstance(wsConfig.getQueryHandler());
- // TODO if (isSystem)
- // {
- //
workspaceContainer.registerComponentImplementation(SystemSearchManager.class);
- // }
+ if (isSystem)
+ {
+
workspaceContainer.registerComponentImplementation(SystemSearchManager.class);
+ }
}
// access manager
@@ -519,13 +518,13 @@
String systemWsname = config.getSystemWorkspaceName();
WorkspaceEntry systemWsEntry = getWorkspaceEntry(systemWsname);
- // TODO if (systemWsEntry != null && systemWsEntry.getQueryHandler() !=
null)
- // {
- // SystemSearchManager systemSearchManager =
- //
(SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType(
- // SystemSearchManager.class);
- // registerComponentInstance(new
SystemSearchManagerHolder(systemSearchManager));
- // }
+ if (systemWsEntry != null && systemWsEntry.getQueryHandler() != null)
+ {
+ SystemSearchManager systemSearchManager =
+
(SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType(
+ SystemSearchManager.class);
+ registerComponentInstance(new SystemSearchManagerHolder(systemSearchManager));
+ }
try
{
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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -161,9 +161,11 @@
* if the search manager cannot be initialized
* @throws RepositoryConfigurationException
*/
+
public SearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder
parentSearchManager,
- DocumentReaderService extractor, ConfigurationManager cfm, final
RepositoryIndexSearcherHolder indexSearcherHolder)
+ DocumentReaderService extractor, ConfigurationManager cfm,
+ final RepositoryIndexSearcherHolder indexSearcherHolder, final SearchManagerHolder
searchManagerHolder)
throws RepositoryException, RepositoryConfigurationException
{
@@ -177,6 +179,7 @@
this.virtualTableResolver = new LuceneVirtualTableResolver(nodeTypeDataManager,
nsReg);
this.parentSearchManager = parentSearchManager != null ? parentSearchManager.get()
: null;
itemMgr.addItemPersistenceListener(this);
+ searchManagerHolder.put(this);
}
/**
@@ -242,6 +245,9 @@
public void onSaveItems(ItemStateChangesLog changesLog)
{
+ Exception es = new Exception();
+ es.printStackTrace();
+
if (handler == null)
return;
Added:
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
(rev 0)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManagerHolder.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -0,0 +1,47 @@
+/*
+ * 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(a)gmail.com">Karpenko Sergiy</a>
+ * @version $Id: SearchManagerHolder.java 111 2008-11-11 11:11:11Z serg $
+ */
+@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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -64,9 +64,10 @@
public SystemSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg,
NodeTypeDataManager ntReg,
WorkspacePersistentDataManager itemMgr, DocumentReaderService service,
ConfigurationManager cfm,
- RepositoryIndexSearcherHolder indexSearcherHolder) throws RepositoryException,
RepositoryConfigurationException
+ RepositoryIndexSearcherHolder indexSearcherHolder, SearchManagerHolder holder)
throws RepositoryException,
+ RepositoryConfigurationException
{
- super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder);
+ super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder,
holder);
}
@Override
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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -17,7 +17,7 @@
package org.exoplatform.services.jcr.impl.core.query.cacheloader;
import org.exoplatform.services.jcr.datamodel.PropertyData;
-import org.exoplatform.services.jcr.impl.core.query.SearchManager;
+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;
@@ -47,16 +47,16 @@
*/
private static final Log log = ExoLogger.getLogger(IndexerCacheLoader.class);
- SearchManager searchManager = null;
+ SearchManagerHolder searchManagerHolder = null;
public IndexerCacheLoader()
{
}
@Inject
- public void injectDependencies(SearchManager manager)
+ public void injectDependencies(SearchManagerHolder holder)
{
- searchManager = manager;
+ searchManagerHolder = holder;
}
private String parseUUID(Fqn<String> fqn)
@@ -85,8 +85,10 @@
@Override
public void put(List<Modification> modifications) throws Exception
{
- if (searchManager == null)
+ if (searchManagerHolder == null && searchManagerHolder.get() != null)
+ {
return;
+ }
// nodes that need to be removed from the index.
final Set<String> removedNodes = new HashSet<String>();
@@ -217,7 +219,7 @@
addedNodes.add(uuid);
}
- searchManager.updateIndex(removedNodes, addedNodes);
+ searchManagerHolder.get().updateIndex(removedNodes, addedNodes);
}
}
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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheWorkspaceDataContainer.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -18,10 +18,10 @@
*/
package org.exoplatform.services.jcr.impl.storage.jbosscache;
-import org.exoplatform.services.jbosscache.JBossCacheService;
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.storage.WorkspaceDataContainerBase;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
@@ -78,8 +78,9 @@
*
*/
public JBossCacheWorkspaceDataContainer(WorkspaceEntry wsConfig, RepositoryEntry
repConfig,
- InitialContextInitializer contextInit, ValueStoragePluginProvider
valueStorageProvider)
- throws RepositoryConfigurationException, NamingException, RepositoryException,
IOException
+ InitialContextInitializer contextInit, ValueStoragePluginProvider
valueStorageProvider,
+ SearchManagerHolder searchManagerHolder) throws RepositoryConfigurationException,
NamingException,
+ RepositoryException, IOException
{
this.repositoryName = repConfig.getName();
this.containerName = wsConfig.getName();
@@ -111,6 +112,9 @@
((CacheSPI<Serializable,
Object>)cache).getComponentRegistry().registerComponent(this.persistentContainer,
WorkspaceDataContainer.class);
+ ((CacheSPI<Serializable,
Object>)cache).getComponentRegistry().registerComponent(searchManagerHolder,
+ SearchManagerHolder.class);
+
// TODO check lifecycle, might be we have to create in start(), with jdbc start.
// initializes configuration state, the root node, etc.
this.cache.create();
@@ -129,6 +133,7 @@
public void start()
{
+
// TODO started on init, due to RepositoryContainer logic
// if (persistentContainer instanceof Startable)
// {
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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderRuntimeTest.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -50,6 +50,7 @@
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;
@@ -96,6 +97,8 @@
SearchManager manager;
+ SearchManagerHolder holder;
+
public void createNewDataSource(String dataSourceName) throws Exception
{
@@ -123,7 +126,7 @@
initPersistence();
loader = new IndexerCacheLoader();
- loader.injectDependencies(manager);
+ loader.injectDependencies(holder);
initJCRRoot();
@@ -857,6 +860,8 @@
protected void initPersistence() throws Exception
{
+ holder = new SearchManagerHolder();
+
// Create WorkspaceEntry
ContainerEntry containerEntry = new ContainerEntry();
List<SimpleParameterEntry> params = new
ArrayList<SimpleParameterEntry>();
@@ -905,7 +910,7 @@
manager =
new SearchManager(ws.getQueryHandler(), nsReg, ntReg, itemMgr,
parentSearchManager, extractor, cfm,
- indexSearcherHolder);
+ 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-16
13:33:32 UTC (rev 681)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/IndexerCacheLoaderTest.java 2009-11-16
13:36:14 UTC (rev 682)
@@ -31,6 +31,7 @@
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;
@@ -59,6 +60,8 @@
private DummySearchManager searchManager;
+ private SearchManagerHolder holder;
+
/**
* @see junit.framework.TestCase#setUp()
*/
@@ -67,9 +70,11 @@
{
// TODO Auto-generated method stub
super.setUp();
+ holder = new SearchManagerHolder();
+ indexerCacheLoader = new IndexerCacheLoader();
+ indexerCacheLoader.injectDependencies(holder);
searchManager = new DummySearchManager();
- indexerCacheLoader = new IndexerCacheLoader();
- indexerCacheLoader.injectDependencies(searchManager);
+
}
/**
@@ -265,7 +270,7 @@
public DummySearchManager() throws RepositoryException,
RepositoryConfigurationException
{
- super(null, null, null, null, null, null, null, new
RepositoryIndexSearcherHolder());
+ super(null, null, null, null, null, null, null, new
RepositoryIndexSearcherHolder(), holder);
}
/**