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

@@ -177,7 +177,7 @@ public class LuceneTest extends TestCase
transactionService = (TransactionService) ctx.getBean("transactionComponent");
serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
this.authenticationComponent = (AuthenticationComponent)ctx.getBean("authenticationComponent");
this.authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
this.authenticationComponent.setSystemUserAsCurrentUser();
queryRegisterComponent.loadQueryCollection("testQueryRegister.xml");
@@ -198,7 +198,6 @@ public class LuceneTest extends TestCase
StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis());
rootNodeRef = nodeService.getRootNode(storeRef);
n1 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}one"),
testSuperType).getChildRef();
nodeService.setProperty(n1, QName.createQName("{namespace}property-1"), "ValueOne");
@@ -208,7 +207,6 @@ public class LuceneTest extends TestCase
nodeService.setProperty(n2, QName.createQName("{namespace}property-1"), "valueone");
nodeService.setProperty(n2, QName.createQName("{namespace}property-2"), "valuetwo");
n3 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}three"),
testSuperType).getChildRef();
@@ -313,7 +311,7 @@ public class LuceneTest extends TestCase
nodeService.addChild(n12, 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 };
}
@@ -334,7 +332,6 @@ public class LuceneTest extends TestCase
super(arg0);
}
public void test0() throws Exception
{
luceneFTS.pause();
@@ -343,14 +340,11 @@ public class LuceneTest extends TestCase
luceneFTS.resume();
}
public void testDeleteIssue() throws Exception
{
testTX.commit();
UserTransaction tx = transactionService.getUserTransaction();
tx.begin();
ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName
@@ -372,14 +366,14 @@ public class LuceneTest extends TestCase
for (int i = 0; i < 100; i++)
{
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
.createQName("{namespace}test"), testSuperType);
refs.add(test);
}
for(ChildAssociationRef car : refs)
for (ChildAssociationRef car : refs)
{
nodeService.deleteNode(car.getChildRef());
}
@@ -395,13 +389,11 @@ public class LuceneTest extends TestCase
tx3.commit();
}
public void testMTDeleteIssue() throws Exception
{
testTX.commit();
UserTransaction tx = transactionService.getUserTransaction();
tx.begin();
ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName
@@ -418,7 +410,6 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length());
results.close();
Thread runner = null;
for (int i = 0; i < 20; i++)
@@ -439,8 +430,6 @@ public class LuceneTest extends TestCase
}
}
UserTransaction tx3 = transactionService.getUserTransaction();
tx3.begin();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "QNAME:\"namespace:testFind\"");
@@ -475,14 +464,14 @@ public class LuceneTest extends TestCase
for (int i = 0; i < 20; i++)
{
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
.createQName("{namespace}test"), testSuperType);
ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
QName.createQName("{namespace}test"), testSuperType);
refs.add(test);
}
for(ChildAssociationRef car : refs)
for (ChildAssociationRef car : refs)
{
nodeService.deleteNode(car.getChildRef());
}
@@ -514,8 +503,6 @@ public class LuceneTest extends TestCase
}
public void testDeltaIssue() throws Exception
{
final NodeService pns = (NodeService) ctx.getBean("NodeService");
@@ -745,8 +732,6 @@ public class LuceneTest extends TestCase
luceneFTS.resume();
SearchParameters sp3 = new SearchParameters();
sp3.addStore(rootNodeRef.getStoreRef());
sp3.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -1050,7 +1035,8 @@ public class LuceneTest extends TestCase
QName qname = QName.createQName("", "property-1");
} finally
}
finally
{
results.close();
}
@@ -1059,7 +1045,8 @@ public class LuceneTest extends TestCase
try
{
assertEquals(2, results.length());
} finally
}
finally
{
results.close();
}
@@ -1069,7 +1056,8 @@ public class LuceneTest extends TestCase
try
{
assertEquals(1, results.length());
} finally
}
finally
{
results.close();
}
@@ -1129,17 +1117,17 @@ public class LuceneTest extends TestCase
searcher.setDictionaryService(dictionaryService);
searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace"));
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());
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);
assertEquals(1, results.length());
results.close();
@@ -1373,15 +1361,14 @@ public class LuceneTest extends TestCase
// Type search tests
QName qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null,
null);
results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":1", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":1", null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
@@ -1394,22 +1381,20 @@ public class LuceneTest extends TestCase
results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":01", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":01", null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null,
null);
results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "int-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@test\\:int\\-ista:\"0001\"", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@test\\:int\\-ista:\"0001\"", null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
@@ -1441,22 +1426,22 @@ public class LuceneTest extends TestCase
results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null, null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null,
null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null, null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null,
null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "long-ista");
results = searcher
.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null, null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null,
null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
@@ -1495,19 +1480,18 @@ public class LuceneTest extends TestCase
results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]",
null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}",
null, null);
assertEquals(0, results.length());
results.close();
qname = QName.createQName(TEST_NAMESPACE, "float-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.40\"", null,
null);
@@ -1550,25 +1534,24 @@ public class LuceneTest extends TestCase
results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]",
null, null);
assertEquals(1, results.length());
assertNotNull(results.getRow(0).getValue(qname));
results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}",
null, null);
assertEquals(0, results.length());
results.close();
qname = QName.createQName(TEST_NAMESPACE, "double-ista");
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}",
null, null);
assertEquals(0, results.length());
results.close();
Date date = new Date();
String sDate = CachingDateFormat.getDateFormat().format(date);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
@@ -1621,13 +1604,13 @@ public class LuceneTest extends TestCase
assertEquals(13, results.length());
results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + ISO9075.getXPathName(testAspect) + "\"", null,
null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\""
+ ISO9075.getXPathName(testAspect) + "\"", null, null);
assertEquals(1, results.length());
results.close();
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + ISO9075.getXPathName(testSuperAspect) + "\"",
null, null);
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\""
+ ISO9075.getXPathName(testSuperAspect) + "\"", null, null);
assertEquals(1, results.length());
results.close();
@@ -1637,11 +1620,14 @@ public class LuceneTest extends TestCase
assertEquals(1, results.length());
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());
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());
results.close();
@@ -3026,7 +3012,6 @@ public class LuceneTest extends TestCase
serviceRegistry.getNodeService().deleteNode(n1);
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -3045,7 +3030,6 @@ public class LuceneTest extends TestCase
assertEquals(15, results.length());
results.close();
NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
QName.createQName("{namespace}texas"), testSuperType).getChildRef();
@@ -3069,7 +3053,6 @@ public class LuceneTest extends TestCase
serviceRegistry.getNodeService().deleteNode(created);
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
@@ -3173,6 +3156,6 @@ public class LuceneTest extends TestCase
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;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
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
// zero-term
// case
return null;
if ((pathQuery.getPathStructuredFieldPositions().size() + pathQuery.getQNameStructuredFieldPositions().size()) == 0)
{
ArrayList<StructuredFieldPosition> answer = new ArrayList<StructuredFieldPosition>(2);
answer.add(new SelfAxisStructuredFieldPosition());
answer.add(new SelfAxisStructuredFieldPosition());
pathQuery.appendQuery(answer);
}
for (StructuredFieldPosition sfp : pathQuery.getPathStructuredFieldPositions())
@@ -144,6 +149,13 @@ public class PathScorer extends Scorer
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,
selfIds, reader, similarity, reader.norms(pathQuery.getQnameField()), dictionarySertvice, repeat, tp);