diff --git a/config/alfresco/script-services-context.xml b/config/alfresco/script-services-context.xml
index 92e659f9c3..3b49a31d5f 100644
--- a/config/alfresco/script-services-context.xml
+++ b/config/alfresco/script-services-context.xml
@@ -103,8 +103,8 @@
search
-
- ${index.subsystem.name}
+
+
diff --git a/source/java/org/alfresco/repo/jscript/Search.java b/source/java/org/alfresco/repo/jscript/Search.java
index 079f83a33b..31e2324b29 100644
--- a/source/java/org/alfresco/repo/jscript/Search.java
+++ b/source/java/org/alfresco/repo/jscript/Search.java
@@ -28,6 +28,7 @@ import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.management.subsystems.SwitchableApplicationContextFactory;
import org.alfresco.repo.model.Repository;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.ContentReader;
@@ -77,7 +78,7 @@ public class Search extends BaseScopableProcessorExtension
/** Repository helper */
protected Repository repository;
- private String searchSubsystem;
+ private SwitchableApplicationContextFactory searchSubsystem;
/**
* Set the default store reference
@@ -114,7 +115,7 @@ public class Search extends BaseScopableProcessorExtension
this.repository = repository;
}
- public void setSearchSubsystem(String searchSubsystem)
+ public void setSearchSubsystemSwitchableApplicationContextFactory(SwitchableApplicationContextFactory searchSubsystem)
{
this.searchSubsystem = searchSubsystem;
}
@@ -123,7 +124,7 @@ public class Search extends BaseScopableProcessorExtension
public String getSearchSubsystem()
{
- return searchSubsystem;
+ return (searchSubsystem == null) ? "" : searchSubsystem.getCurrentSourceBeanName();
}
/**
diff --git a/source/java/org/alfresco/repo/management/subsystems/SwitchableApplicationContextFactory.java b/source/java/org/alfresco/repo/management/subsystems/SwitchableApplicationContextFactory.java
index c790bc4dd7..b15452fa01 100644
--- a/source/java/org/alfresco/repo/management/subsystems/SwitchableApplicationContextFactory.java
+++ b/source/java/org/alfresco/repo/management/subsystems/SwitchableApplicationContextFactory.java
@@ -50,6 +50,11 @@ public class SwitchableApplicationContextFactory extends AbstractPropertyBackedB
this.sourceBeanName = sourceBeanName;
}
+ public String getCurrentSourceBeanName()
+ {
+ return getState(false).getProperty(SwitchableApplicationContextFactory.SOURCE_BEAN_PROPERTY);
+ }
+
/*
* (non-Javadoc)
* @see org.alfresco.repo.management.subsystems.ApplicationContextFactory#getApplicationContext()
diff --git a/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java b/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java
index 3dcd619dd2..a43fdf5e67 100644
--- a/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java
+++ b/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java
@@ -19,6 +19,7 @@
package org.alfresco.repo.node.index;
import java.io.PrintWriter;
+import java.io.Serializable;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -56,6 +57,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.repository.NodeRef.Status;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.ResultSetRow;
import org.alfresco.service.cmr.search.SearchParameters;
@@ -450,7 +452,7 @@ public abstract class AbstractReindexComponent implements IndexRecovery
// Establish the number of deletes and updates for this storeRef
List deletedNodes = new LinkedList();
- int updateCount = 0;
+ boolean hasUpdates = false;
for (NodeRef.Status nodeStatus : storeStatuses)
{
if (nodeStatus.isDeleted())
@@ -459,7 +461,33 @@ public abstract class AbstractReindexComponent implements IndexRecovery
}
else
{
- updateCount++;
+ if(!hasUpdates)
+ {
+ Serializable serIsIndexed = nodeService.getProperty(nodeStatus.getNodeRef(), ContentModel.PROP_IS_INDEXED);
+ if(serIsIndexed == null)
+ {
+ hasUpdates = true;
+ }
+ else
+ {
+ Boolean isIndexed = DefaultTypeConverter.INSTANCE.convert(Boolean.class, serIsIndexed);
+ if(isIndexed == null)
+ {
+ hasUpdates = true;
+ }
+ else
+ {
+ if(isIndexed.booleanValue())
+ {
+ hasUpdates = true;
+ }
+ else
+ {
+ // Still do not know if there is anything to check ....
+ }
+ }
+ }
+ }
}
}
@@ -472,7 +500,7 @@ public abstract class AbstractReindexComponent implements IndexRecovery
result = InIndex.NO;
break;
}
- if (updateCount > 0)
+ if (hasUpdates)
{
// Check the index
if (isTxnIdPresentInIndex(storeRef, txn))