Remove scheduled action xml

Fix AR-123 lucene PATH serach for "/" and "/." now work

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2675 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2006-04-20 15:08:09 +00:00
parent f50655a691
commit 09e6edf88e
3 changed files with 137 additions and 584 deletions

View File

@@ -1,442 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!--
Define the model factory used to generate object models suitable for use with freemarker templates.
-->
<bean id="templateActionModelFactory" class="org.alfresco.repo.action.scheduled.FreeMarkerWithLuceneExtensionsModelFactory">
<property name="serviceRegistry">
<ref bean="ServiceRegistry"/>
</property>
</bean>
<!--
An example action template that defines an action to add the generalclassifiable aspect to all nodes that do not have
and add a category defined by path.
-->
<bean id="addClassifiableAspectAction" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition">
<property name="actionName">
<value>add-features</value>
</property>
<property name="parameterTemplates">
<map>
<entry>
<key>
<value>aspect-name</value>
</key>
<value>{http://www.alfresco.org/model/content/1.0}generalclassifiable</value>
</entry>
<entry>
<key>
<value>{http://www.alfresco.org/model/content/1.0}categories</value>
</key>
<value>${selectSingleNode('workspace://SpacesStore', 'lucene', 'PATH:"/cm:generalclassifiable/cm:Languages/cm:English"' )}</value>
</entry>
</map>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="dictionaryService">
<ref bean="DictionaryService"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
</bean>
<!--
An example action template that removes an aspect from all those nodes that have the aspect.
-->
<bean id="removeClassifiableAspectAction" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition">
<property name="actionName">
<value>remove-features</value>
</property>
<property name="parameterTemplates">
<map>
<entry>
<key>
<value>aspect-name</value>
</key>
<value>{http://www.alfresco.org/model/content/1.0}generalclassifiable</value>
</entry>
</map>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="dictionaryService">
<ref bean="DictionaryService"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
</bean>
<!--
An example that copies the tutorial node into the company home space
-->
<bean id="copyAction" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition">
<property name="actionName">
<value>copy</value>
</property>
<property name="parameterTemplates">
<map>
<entry>
<key>
<value>destination-folder</value>
</key>
<value>${selectSingleNode('workspace://SpacesStore', 'lucene', 'PATH:"/app:company_home"' )}</value>
</entry>
<entry>
<key>
<value>assoc-type</value>
</key>
<value>${node.primaryParentAssoc.typeQName}</value>
</entry>
<entry>
<key>
<value>assoc-name</value>
</key>
<value>${node.primaryParentAssoc.QName}</value>
</entry>
<entry>
<key>
<value>deep-copy</value>
</key>
<value>false</value>
</entry>
</map>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="dictionaryService">
<ref bean="DictionaryService"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
</bean>
<!--
An example that sets the created date to now
-->
<bean id="setCreatedDateAction" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition">
<property name="actionName">
<value>set-property-value</value>
</property>
<property name="parameterTemplates">
<map>
<entry>
<key>
<value>property</value>
</key>
<value>{http://www.alfresco.org/model/content/1.0}created</value>
</entry>
<entry>
<key>
<value>value</value>
</key>
<value>${today?string("yyyy-MM-dd'T'HH:mm:ss.sss'Z'")}</value>
</entry>
</map>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="dictionaryService">
<ref bean="DictionaryService"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
</bean>
<!--
Compound action example ...
-->
<bean id="compositeAction" class="org.alfresco.repo.action.scheduled.CompositeTemplateActionDefinition">
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
<property name="templateActionDefinitions">
<list>
<ref bean="copyAction"/>
<ref bean="setCreatedDateAction"/>
</list>
</property>
</bean>
<!-- ONE_TRANSACTION ISOLATED_TRANSACTIONS UNTIL_FIRST_FAILURE -->
<!--
Define a job for adding the classified aspect to nodes.
-->
<bean id="addClassifiableAspectEveryTenMinutes" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</value>
</property>
<property name="compensatingActionMode">
<value>IGNORE</value>
</property>
<property name="searchService">
<ref bean="SearchService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
<property name="queryLanguage">
<value>lucene</value>
</property>
<property name="stores">
<list>
<value>workspace://SpacesStore</value>
</list>
</property>
<!-- Find all nodes that do not have the aspect -->
<property name="queryTemplate">
<value>PATH:"//\*" -ASPECT:"{http://www.alfresco.org/model/content/1.0}generalclassifiable"</value>
</property>
<property name="cronExpression">
<value>0 50 * * * ?</value>
</property>
<property name="jobName">
<value>jobA</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerA</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</value>
</property>
<property name="scheduler">
<ref bean="schedulerFactory"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="templateActionDefinition">
<ref bean="addClassifiableAspectAction"/>
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>
<!--
Define a job to remove an aspect.
-->
<bean id="removeClassifiableAspectEveryTenMinutes" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</value>
</property>
<property name="compensatingActionMode">
<value>IGNORE</value>
</property>
<property name="searchService">
<ref bean="SearchService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
<property name="queryLanguage">
<value>lucene</value>
</property>
<property name="stores">
<list>
<value>workspace://SpacesStore</value>
</list>
</property>
<property name="queryTemplate">
<value>ASPECT:"{http://www.alfresco.org/model/content/1.0}generalclassifiable"</value>
</property>
<property name="cronExpression">
<value>0 55 * * * ?</value>
</property>
<property name="jobName">
<value>jobB</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerB</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</value>
</property>
<property name="scheduler">
<ref bean="schedulerFactory"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="templateActionDefinition">
<ref bean="removeClassifiableAspectAction"/>
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>
<!--
Define a job to remove an aspect.
-->
<bean id="copyTutorialEveryTenMinutes" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</value>
</property>
<property name="compensatingActionMode">
<value>IGNORE</value>
</property>
<property name="searchService">
<ref bean="SearchService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
<property name="queryLanguage">
<value>lucene</value>
</property>
<property name="stores">
<list>
<value>workspace://SpacesStore</value>
</list>
</property>
<property name="queryTemplate">
<value>+PATH:"/app:company_home/*//*" +TEXT:"tutorial"</value>
</property>
<property name="cronExpression">
<value>0 40 * * * ?</value>
</property>
<property name="jobName">
<value>jobC</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerC</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</value>
</property>
<property name="scheduler">
<ref bean="schedulerFactory"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="templateActionDefinition">
<ref bean="copyAction"/>
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>
<!--
Find content created yesterday in the previous 10 years:-
set the created date to today and copy to the company home
-->
<bean id="makeStuffCreatedRecentlyCreatedNow" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</value>
</property>
<property name="compensatingActionMode">
<value>IGNORE</value>
</property>
<property name="searchService">
<ref bean="SearchService"/>
</property>
<property name="templateService">
<ref bean="TemplateService"/>
</property>
<property name="queryLanguage">
<value>lucene</value>
</property>
<property name="stores">
<list>
<value>workspace://SpacesStore</value>
</list>
</property>
<property name="queryTemplate">
<value>@cm\:created:${luceneDateRange(yesterday, "-P10Y")}</value>
</property>
<property name="cronExpression">
<value>0 0/1 * * * ?</value>
</property>
<property name="jobName">
<value>jobD</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerD</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</value>
</property>
<property name="scheduler">
<ref bean="schedulerFactory"/>
</property>
<property name="actionService">
<ref bean="ActionService"/>
</property>
<property name="templateActionModelFactory">
<ref bean="templateActionModelFactory"/>
</property>
<property name="templateActionDefinition">
<ref bean="compositeAction"/>
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>
</beans>

View File

@@ -83,7 +83,7 @@ import org.springframework.context.ApplicationContext;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class LuceneTest extends TestCase public class LuceneTest extends TestCase
{ {
private static final String TEST_NAMESPACE = "http://www.alfresco.org/test/lucenetest"; private static final String TEST_NAMESPACE = "http://www.alfresco.org/test/lucenetest";
private static final QName ASSOC_TYPE_QNAME = QName.createQName(TEST_NAMESPACE, "assoc"); private static final QName ASSOC_TYPE_QNAME = QName.createQName(TEST_NAMESPACE, "assoc");
@@ -153,9 +153,9 @@ public class LuceneTest extends TestCase
private ServiceRegistry serviceRegistry; private ServiceRegistry serviceRegistry;
private UserTransaction testTX; private UserTransaction testTX;
private AuthenticationComponent authenticationComponent; private AuthenticationComponent authenticationComponent;
private NodeRef[] documentOrder; private NodeRef[] documentOrder;
public LuceneTest() public LuceneTest()
@@ -176,8 +176,8 @@ public class LuceneTest extends TestCase
indexerAndSearcher = (LuceneIndexerAndSearcher) ctx.getBean("luceneIndexerAndSearcherFactory"); indexerAndSearcher = (LuceneIndexerAndSearcher) ctx.getBean("luceneIndexerAndSearcherFactory");
transactionService = (TransactionService) ctx.getBean("transactionComponent"); transactionService = (TransactionService) ctx.getBean("transactionComponent");
serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY); serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
this.authenticationComponent = (AuthenticationComponent)ctx.getBean("authenticationComponent"); this.authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
this.authenticationComponent.setSystemUserAsCurrentUser(); this.authenticationComponent.setSystemUserAsCurrentUser();
queryRegisterComponent.loadQueryCollection("testQueryRegister.xml"); queryRegisterComponent.loadQueryCollection("testQueryRegister.xml");
@@ -197,17 +197,15 @@ public class LuceneTest extends TestCase
StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis()); StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis());
rootNodeRef = nodeService.getRootNode(storeRef); rootNodeRef = nodeService.getRootNode(storeRef);
n1 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}one"), n1 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}one"),
testSuperType).getChildRef(); testSuperType).getChildRef();
nodeService.setProperty(n1, QName.createQName("{namespace}property-1"), "ValueOne"); nodeService.setProperty(n1, QName.createQName("{namespace}property-1"), "ValueOne");
n2 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}two"), n2 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}two"),
testSuperType).getChildRef(); testSuperType).getChildRef();
nodeService.setProperty(n2, QName.createQName("{namespace}property-1"), "valueone"); nodeService.setProperty(n2, QName.createQName("{namespace}property-1"), "valueone");
nodeService.setProperty(n2, QName.createQName("{namespace}property-2"), "valuetwo"); nodeService.setProperty(n2, QName.createQName("{namespace}property-2"), "valuetwo");
n3 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}three"), n3 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}three"),
testSuperType).getChildRef(); testSuperType).getChildRef();
@@ -312,15 +310,15 @@ public class LuceneTest extends TestCase
nodeService.addChild(n6, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common")); nodeService.addChild(n6, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common"));
nodeService.addChild(n12, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common")); nodeService.addChild(n12, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common"));
nodeService.addChild(n13, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common")); nodeService.addChild(n13, n14, ASSOC_TYPE_QNAME, QName.createQName("{namespace}common"));
documentOrder= new NodeRef[]{rootNodeRef, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14}; documentOrder = new NodeRef[] { rootNodeRef, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14 };
} }
@Override @Override
protected void tearDown() throws Exception protected void tearDown() throws Exception
{ {
if (testTX.getStatus() == Status.STATUS_ACTIVE) if (testTX.getStatus() == Status.STATUS_ACTIVE)
{ {
testTX.rollback(); testTX.rollback();
@@ -334,7 +332,6 @@ public class LuceneTest extends TestCase
super(arg0); super(arg0);
} }
public void test0() throws Exception public void test0() throws Exception
{ {
luceneFTS.pause(); luceneFTS.pause();
@@ -343,14 +340,11 @@ public class LuceneTest extends TestCase
luceneFTS.resume(); luceneFTS.resume();
} }
public void testDeleteIssue() throws Exception public void testDeleteIssue() throws Exception
{ {
testTX.commit(); testTX.commit();
UserTransaction tx = transactionService.getUserTransaction(); UserTransaction tx = transactionService.getUserTransaction();
tx.begin(); tx.begin();
ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName
@@ -372,18 +366,18 @@ public class LuceneTest extends TestCase
for (int i = 0; i < 100; i++) for (int i = 0; i < 100; i++)
{ {
HashSet<ChildAssociationRef> refs = new HashSet<ChildAssociationRef>(); HashSet<ChildAssociationRef> refs = new HashSet<ChildAssociationRef>();
for (int j =0 ; j < i; j++) for (int j = 0; j < i; j++)
{ {
ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName
.createQName("{namespace}test"), testSuperType); .createQName("{namespace}test"), testSuperType);
refs.add(test); refs.add(test);
} }
for(ChildAssociationRef car : refs) for (ChildAssociationRef car : refs)
{ {
nodeService.deleteNode(car.getChildRef()); nodeService.deleteNode(car.getChildRef());
} }
} }
tx1.commit(); tx1.commit();
@@ -395,13 +389,11 @@ public class LuceneTest extends TestCase
tx3.commit(); tx3.commit();
} }
public void testMTDeleteIssue() throws Exception public void testMTDeleteIssue() throws Exception
{ {
testTX.commit(); testTX.commit();
UserTransaction tx = transactionService.getUserTransaction(); UserTransaction tx = transactionService.getUserTransaction();
tx.begin(); tx.begin();
ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName
@@ -418,7 +410,6 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
Thread runner = null; Thread runner = null;
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
@@ -438,8 +429,6 @@ public class LuceneTest extends TestCase
e.printStackTrace(); e.printStackTrace();
} }
} }
UserTransaction tx3 = transactionService.getUserTransaction(); UserTransaction tx3 = transactionService.getUserTransaction();
tx3.begin(); tx3.begin();
@@ -475,18 +464,18 @@ public class LuceneTest extends TestCase
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
{ {
HashSet<ChildAssociationRef> refs = new HashSet<ChildAssociationRef>(); HashSet<ChildAssociationRef> refs = new HashSet<ChildAssociationRef>();
for (int j =0 ; j < i; j++) for (int j = 0; j < i; j++)
{ {
ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
.createQName("{namespace}test"), testSuperType); QName.createQName("{namespace}test"), testSuperType);
refs.add(test); refs.add(test);
} }
for(ChildAssociationRef car : refs) for (ChildAssociationRef car : refs)
{ {
nodeService.deleteNode(car.getChildRef()); nodeService.deleteNode(car.getChildRef());
} }
} }
tx1.commit(); tx1.commit();
System.out.println("End " + this.getName()); System.out.println("End " + this.getName());
@@ -514,8 +503,6 @@ public class LuceneTest extends TestCase
} }
public void testDeltaIssue() throws Exception public void testDeltaIssue() throws Exception
{ {
final NodeService pns = (NodeService) ctx.getBean("NodeService"); final NodeService pns = (NodeService) ctx.getBean("NodeService");
@@ -547,7 +534,7 @@ public class LuceneTest extends TestCase
ResultSet results = serviceRegistry.getSearchService().query(sp); ResultSet results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length()); assertEquals(15, results.length());
results.close(); results.close();
sp = new SearchParameters(); sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef()); sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE); sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -556,11 +543,11 @@ public class LuceneTest extends TestCase
results = serviceRegistry.getSearchService().query(sp); results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length()); assertEquals(15, results.length());
results.close(); results.close();
Map<QName, Serializable> props = new HashMap<QName, Serializable>(); Map<QName, Serializable> props = new HashMap<QName, Serializable>();
props.put(ContentModel.PROP_TITLE, "woof"); props.put(ContentModel.PROP_TITLE, "woof");
pns.addAspect(n1, ContentModel.ASPECT_TITLED, props); pns.addAspect(n1, ContentModel.ASPECT_TITLED, props);
sp = new SearchParameters(); sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef()); sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE); sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -744,9 +731,7 @@ public class LuceneTest extends TestCase
results.close(); results.close();
luceneFTS.resume(); luceneFTS.resume();
SearchParameters sp3 = new SearchParameters(); SearchParameters sp3 = new SearchParameters();
sp3.addStore(rootNodeRef.getStoreRef()); sp3.addStore(rootNodeRef.getStoreRef());
sp3.setLanguage(SearchService.LANGUAGE_LUCENE); sp3.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -760,7 +745,7 @@ public class LuceneTest extends TestCase
assertEquals(documentOrder[count++], row.getNodeRef()); assertEquals(documentOrder[count++], row.getNodeRef());
} }
results.close(); results.close();
SearchParameters sp4 = new SearchParameters(); SearchParameters sp4 = new SearchParameters();
sp4.addStore(rootNodeRef.getStoreRef()); sp4.addStore(rootNodeRef.getStoreRef());
sp4.setLanguage(SearchService.LANGUAGE_LUCENE); sp4.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -789,7 +774,7 @@ public class LuceneTest extends TestCase
score = row.getScore(); score = row.getScore();
} }
results.close(); results.close();
SearchParameters sp6 = new SearchParameters(); SearchParameters sp6 = new SearchParameters();
sp6.addStore(rootNodeRef.getStoreRef()); sp6.addStore(rootNodeRef.getStoreRef());
sp6.setLanguage(SearchService.LANGUAGE_LUCENE); sp6.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -804,7 +789,7 @@ public class LuceneTest extends TestCase
score = row.getScore(); score = row.getScore();
} }
results.close(); results.close();
luceneFTS.resume(); luceneFTS.resume();
} }
@@ -1050,7 +1035,8 @@ public class LuceneTest extends TestCase
QName qname = QName.createQName("", "property-1"); QName qname = QName.createQName("", "property-1");
} finally }
finally
{ {
results.close(); results.close();
} }
@@ -1059,7 +1045,8 @@ public class LuceneTest extends TestCase
try try
{ {
assertEquals(2, results.length()); assertEquals(2, results.length());
} finally }
finally
{ {
results.close(); results.close();
} }
@@ -1069,7 +1056,8 @@ public class LuceneTest extends TestCase
try try
{ {
assertEquals(1, results.length()); assertEquals(1, results.length());
} finally }
finally
{ {
results.close(); results.close();
} }
@@ -1129,17 +1117,17 @@ public class LuceneTest extends TestCase
searcher.setDictionaryService(dictionaryService); searcher.setDictionaryService(dictionaryService);
searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace"));
searcher.setQueryRegister(queryRegisterComponent); searcher.setQueryRegister(queryRegisterComponent);
ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one\"", null, null); ResultSet results;
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/\"", null, null);
assertEquals(1, results.length());
results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/.\"", null, null);
assertEquals(1, results.length());
results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
// results = searcher.query(rootNodeRef.getStoreRef(), "lucene",
// "PATH:\"/\"", null, null);
// assertEquals(1, results.length());
// results.close();
// results = searcher.query(rootNodeRef.getStoreRef(), "lucene",
// "PATH:\"/.\"", null, null);
// assertEquals(1, results.length());
// results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two\"", null, null); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
@@ -1373,43 +1361,40 @@ public class LuceneTest extends TestCase
// Type search tests // Type search tests
QName qname = QName.createQName(TEST_NAMESPACE, "int-ista"); QName qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null, results = searcher
null); .query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":1", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":1", null, null);
null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"01\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"01\"", null,
null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":01", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":01", null, null);
null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null, results = searcher
null); .query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@test\\:int\\-ista:\"0001\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@test\\:int\\-ista:\"0001\"", null, null);
null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
@@ -1420,43 +1405,43 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 1}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 1}", null,
null); null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista"); qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{1 TO 2}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{1 TO 2}", null,
null); null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"2\"", null, null); .query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"2\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null,
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null, null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null,
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null, null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null,
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null, null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
@@ -1467,47 +1452,46 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 2}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 2}", null,
null); null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista"); qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{2 TO 3}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{2 TO 3}", null,
null); null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.4\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.4\"", null,
null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3 TO 4]", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3 TO 4]", null,
null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]",
null); null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}",
null); null, null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.40\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.40\"", null,
null); null);
@@ -1521,53 +1505,52 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista"); qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.40\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.40\"", null,
null); null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.6\"", null, null); + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.6\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.6\"", null, null); + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.6\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.60\"", null, null); + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.60\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.60\"", null, null); + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.60\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista"); qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]",
null); null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname)); assertNotNull(results.getRow(0).getValue(qname));
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista"); qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}",
null); null, null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista"); qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}",
null); null, null);
assertEquals(0, results.length()); assertEquals(0, results.length());
results.close(); results.close();
Date date = new Date(); Date date = new Date();
String sDate = CachingDateFormat.getDateFormat().format(date); String sDate = CachingDateFormat.getDateFormat().format(date);
@@ -1621,13 +1604,13 @@ public class LuceneTest extends TestCase
assertEquals(13, results.length()); assertEquals(13, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + ISO9075.getXPathName(testAspect) + "\"", null, results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\""
null); + ISO9075.getXPathName(testAspect) + "\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + ISO9075.getXPathName(testSuperAspect) + "\"", results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\""
null, null); + ISO9075.getXPathName(testSuperAspect) + "\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
@@ -1636,12 +1619,15 @@ public class LuceneTest extends TestCase
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"fox\"", null, null); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"fox\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@"+LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString())+":\"fox\"", null, null); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@"
+ LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":\"fox\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@"+LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString())+".mimetype:\"text/plain\"", null, null); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@"
+ LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".mimetype:\"text/plain\"", null,
null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
@@ -2674,7 +2660,7 @@ public class LuceneTest extends TestCase
+ ":\"KEYONE\"", null, null); + ":\"KEYONE\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic"))
+ ":\"KEYUNSTORED\"", null, null); + ":\"KEYUNSTORED\"", null, null);
@@ -2715,7 +2701,7 @@ public class LuceneTest extends TestCase
+ ":\"keytwo\"", null, null); + ":\"keytwo\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic"))
+ ":\"keyunstored\"", null, null); + ":\"keyunstored\"", null, null);
@@ -2748,7 +2734,7 @@ public class LuceneTest extends TestCase
+ ":\"KEYUNSTORED\"", null, null); + ":\"KEYUNSTORED\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic"))
+ ":\"KEYTWO\"", null, null); + ":\"KEYTWO\"", null, null);
@@ -2792,7 +2778,7 @@ public class LuceneTest extends TestCase
+ ":\"keytwo\"", null, null); + ":\"keytwo\"", null, null);
assertEquals(1, results.length()); assertEquals(1, results.length());
results.close(); results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic"))
+ ":\"KEYUNSTORED\"", null, null); + ":\"KEYUNSTORED\"", null, null);
@@ -3025,8 +3011,7 @@ public class LuceneTest extends TestCase
runBaseTests(); runBaseTests();
serviceRegistry.getNodeService().deleteNode(n1); serviceRegistry.getNodeService().deleteNode(n1);
sp = new SearchParameters(); sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef()); sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE); sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -3044,8 +3029,7 @@ public class LuceneTest extends TestCase
results = serviceRegistry.getSearchService().query(sp); results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length()); assertEquals(15, results.length());
results.close(); results.close();
NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
QName.createQName("{namespace}texas"), testSuperType).getChildRef(); QName.createQName("{namespace}texas"), testSuperType).getChildRef();
@@ -3068,8 +3052,7 @@ public class LuceneTest extends TestCase
results.close(); results.close();
serviceRegistry.getNodeService().deleteNode(created); serviceRegistry.getNodeService().deleteNode(created);
sp = new SearchParameters(); sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef()); sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE); sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -3087,7 +3070,7 @@ public class LuceneTest extends TestCase
results = serviceRegistry.getSearchService().query(sp); results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length()); assertEquals(15, results.length());
results.close(); results.close();
tx.rollback(); tx.rollback();
sp = new SearchParameters(); sp = new SearchParameters();
@@ -3172,7 +3155,7 @@ public class LuceneTest extends TestCase
ResultSet results = test.serviceRegistry.getSearchService().query(sp); ResultSet results = test.serviceRegistry.getSearchService().query(sp);
results.close(); results.close();
//test.dictionaryService.getType(test.nodeService.getType(test.rootNodeRef)).getDefaultAspects(); // test.dictionaryService.getType(test.nodeService.getType(test.rootNodeRef)).getDefaultAspects();
} }
} }

View File

@@ -17,6 +17,7 @@
package org.alfresco.repo.search.impl.lucene.query; package org.alfresco.repo.search.impl.lucene.query;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import org.alfresco.repo.search.impl.lucene.query.LeafScorer.Counter; import org.alfresco.repo.search.impl.lucene.query.LeafScorer.Counter;
@@ -79,10 +80,14 @@ public class PathScorer extends Scorer
} }
if ((pathQuery.getPathStructuredFieldPositions().size() + pathQuery.getQNameStructuredFieldPositions().size()) == 0) // optimize if ((pathQuery.getPathStructuredFieldPositions().size() + pathQuery.getQNameStructuredFieldPositions().size()) == 0)
// zero-term {
// case ArrayList<StructuredFieldPosition> answer = new ArrayList<StructuredFieldPosition>(2);
return null; answer.add(new SelfAxisStructuredFieldPosition());
answer.add(new SelfAxisStructuredFieldPosition());
pathQuery.appendQuery(answer);
}
for (StructuredFieldPosition sfp : pathQuery.getPathStructuredFieldPositions()) for (StructuredFieldPosition sfp : pathQuery.getPathStructuredFieldPositions())
@@ -143,6 +148,13 @@ public class PathScorer extends Scorer
{ {
level0 = reader.termPositions(new Term("ISROOT", "T")); level0 = reader.termPositions(new Term("ISROOT", "T"));
} }
if((cs == null) &&
(pathQuery.getQNameStructuredFieldPositions().get(pathQuery.getQNameStructuredFieldPositions().size()-1)).linkSelf())
{
nodePositions = reader.termPositions(new Term("ISROOT", "T"));
}
LeafScorer ls = new LeafScorer(weight, rootLeafPositions, level0, cs, (StructuredFieldPosition[]) pathQuery.getQNameStructuredFieldPositions().toArray(new StructuredFieldPosition[] {}), nodePositions, LeafScorer ls = new LeafScorer(weight, rootLeafPositions, level0, cs, (StructuredFieldPosition[]) pathQuery.getQNameStructuredFieldPositions().toArray(new StructuredFieldPosition[] {}), nodePositions,
selfIds, reader, similarity, reader.norms(pathQuery.getQnameField()), dictionarySertvice, repeat, tp); selfIds, reader, similarity, reader.norms(pathQuery.getQnameField()), dictionarySertvice, repeat, tp);