Another attemp at encoding

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2707 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2006-04-26 09:16:00 +00:00
parent 4aacad6f52
commit 62286fed22

View File

@@ -55,18 +55,22 @@ public class SearcherComponentTest extends TestCase
//private static String COMPLEX_LOCAL_NAME = " `¬¦!\"£$%^&*()-_=+\t\n\\\u0000[]{};'#:@~,./<>?\\|\u0123\u4567\u8900\uabcd\uefff_xT65A_"; //private static String COMPLEX_LOCAL_NAME = " `¬¦!\"£$%^&*()-_=+\t\n\\\u0000[]{};'#:@~,./<>?\\|\u0123\u4567\u8900\uabcd\uefff_xT65A_";
private static String COMPLEX_LOCAL_NAME ="\u0020\u0060\u00ac\u00a6\u0021\\u0022\u00a3\u0024\u0025\u005e\u0026\u002a\u0028\u0029\u002d\u005f\u003d\u002b\\u0009\\u000a\\u005c\u0000\u005b\u005d\u007b\u007d\u003b\u0027\u0023\u003a\u0040\u007e\u002c\u002e\u002f\u003c\u003e\u003f\\u005c\u007c\u0123\u4567\u8900\uabcd\uefff\u005f\u0078\u0054\u0036\u0035\u0041\u005f"; private static String COMPLEX_LOCAL_NAME = "\u0020\u0060\u00ac\u00a6\u0021\"\u00a3\u0024\u0025\u005e\u0026\u002a\u0028\u0029\u002d\u005f\u003d\u002b\t\n\\\u0000\u005b\u005d\u007b\u007d\u003b\u0027\u0023\u003a\u0040\u007e\u002c\u002e\u002f\u003c\u003e\u003f\\u007c\u0123\u4567\u8900\uabcd\uefff\u005f\u0078\u0054\u0036\u0035\u0041\u005f";
private ServiceRegistry serviceRegistry; private ServiceRegistry serviceRegistry;
private TransactionService transactionService; private TransactionService transactionService;
private DictionaryService dictionaryService; private DictionaryService dictionaryService;
private SearcherComponent searcher; private SearcherComponent searcher;
private NodeService nodeService; private NodeService nodeService;
private AuthenticationComponent authenticationComponent; private AuthenticationComponent authenticationComponent;
private NodeRef rootNodeRef; private NodeRef rootNodeRef;
private UserTransaction txn; private UserTransaction txn;
public void setUp() throws Exception public void setUp() throws Exception
@@ -84,9 +88,8 @@ public class SearcherComponentTest extends TestCase
searcher = new SearcherComponent(); searcher = new SearcherComponent();
searcher.setIndexerAndSearcherFactory(indexerAndSearcher); searcher.setIndexerAndSearcherFactory(indexerAndSearcher);
// create a test workspace // create a test workspace
StoreRef storeRef = nodeService.createStore( StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, getName()
StoreRef.PROTOCOL_WORKSPACE, + "_" + System.currentTimeMillis());
getName() + "_" + System.currentTimeMillis());
rootNodeRef = nodeService.getRootNode(storeRef); rootNodeRef = nodeService.getRootNode(storeRef);
// begin a transaction // begin a transaction
txn = transactionService.getUserTransaction(); txn = transactionService.getUserTransaction();
@@ -111,10 +114,10 @@ public class SearcherComponentTest extends TestCase
Map<QName, Serializable> properties = new HashMap<QName, Serializable>(); Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
properties.put(QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME), "monkey"); properties.put(QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME), "monkey");
QName qnamerequiringescaping = QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME); QName qnamerequiringescaping = QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME);
nodeService.createNode(rootNodeRef, BaseNodeServiceTest.ASSOC_TYPE_QNAME_TEST_CHILDREN, qnamerequiringescaping, ContentModel.TYPE_CONTAINER); nodeService.createNode(rootNodeRef, BaseNodeServiceTest.ASSOC_TYPE_QNAME_TEST_CHILDREN, qnamerequiringescaping,
ContentModel.TYPE_CONTAINER);
QName qname = QName.createQName(BaseNodeServiceTest.NAMESPACE, "n2_p_n4"); QName qname = QName.createQName(BaseNodeServiceTest.NAMESPACE, "n2_p_n4");
NodeServiceXPath xpath; NodeServiceXPath xpath;
String xpathStr; String xpathStr;
QueryParameterDefImpl paramDef; QueryParameterDefImpl paramDef;
@@ -123,12 +126,8 @@ public class SearcherComponentTest extends TestCase
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
// create the document navigator // create the document navigator
DocumentNavigator documentNavigator = new DocumentNavigator( DocumentNavigator documentNavigator = new DocumentNavigator(dictionaryService, nodeService, searcher,
dictionaryService, namespacePrefixResolver, false, false);
nodeService,
searcher,
namespacePrefixResolver,
false, false);
xpath = new NodeServiceXPath("//.[@test:animal='monkey']", documentNavigator, null); xpath = new NodeServiceXPath("//.[@test:animal='monkey']", documentNavigator, null);
xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
@@ -183,11 +182,8 @@ public class SearcherComponentTest extends TestCase
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
assertEquals(1, list.size()); assertEquals(1, list.size());
paramDef = new QueryParameterDefImpl( paramDef = new QueryParameterDefImpl(QName.createQName("test:test", namespacePrefixResolver), dictionaryService
QName.createQName("test:test", namespacePrefixResolver), .getDataType(DataTypeDefinition.TEXT), true, "monkey");
dictionaryService.getDataType(DataTypeDefinition.TEXT),
true,
"monkey");
xpathStr = "//.[@test:animal=$test:test]"; xpathStr = "//.[@test:animal=$test:test]";
xpath = new NodeServiceXPath(xpathStr, documentNavigator, new QueryParameterDefinition[] { paramDef }); xpath = new NodeServiceXPath(xpathStr, documentNavigator, new QueryParameterDefinition[] { paramDef });
xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
@@ -251,13 +247,10 @@ public class SearcherComponentTest extends TestCase
list = xpath.selectNodes(assocRefs.get(qname)); list = xpath.selectNodes(assocRefs.get(qname));
assertEquals(1, list.size()); assertEquals(1, list.size());
// test 'subtypeOf' function // test 'subtypeOf' function
paramDef = new QueryParameterDefImpl( paramDef = new QueryParameterDefImpl(QName.createQName("test:type", namespacePrefixResolver), dictionaryService
QName.createQName("test:type", namespacePrefixResolver), .getDataType(DataTypeDefinition.QNAME), true, BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT
dictionaryService.getDataType(DataTypeDefinition.QNAME), .toPrefixString(namespacePrefixResolver));
true,
BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT.toPrefixString(namespacePrefixResolver));
xpathStr = "//.[subtypeOf($test:type)]"; xpathStr = "//.[subtypeOf($test:type)]";
xpath = new NodeServiceXPath(xpathStr, documentNavigator, new QueryParameterDefinition[] { paramDef }); xpath = new NodeServiceXPath(xpathStr, documentNavigator, new QueryParameterDefinition[] { paramDef });
xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); xpath.addNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
@@ -270,7 +263,6 @@ public class SearcherComponentTest extends TestCase
assertEquals(1, list.size()); assertEquals(1, list.size());
} }
public void testSelectAPI() throws Exception public void testSelectAPI() throws Exception
{ {
Map<QName, ChildAssociationRef> assocRefs = BaseNodeServiceTest.buildNodeGraph(nodeService, rootNodeRef); Map<QName, ChildAssociationRef> assocRefs = BaseNodeServiceTest.buildNodeGraph(nodeService, rootNodeRef);
@@ -279,7 +271,8 @@ public class SearcherComponentTest extends TestCase
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
List<NodeRef> answer = searcher.selectNodes(rootNodeRef, "/test:root_p_n1/test:n1_p_n3/*", null, namespacePrefixResolver, false); List<NodeRef> answer = searcher.selectNodes(rootNodeRef, "/test:root_p_n1/test:n1_p_n3/*", null,
namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
assertTrue(answer.contains(n6Ref)); assertTrue(answer.contains(n6Ref));
@@ -287,23 +280,23 @@ public class SearcherComponentTest extends TestCase
answer = searcher.selectNodes(rootNodeRef, "*", null, namespacePrefixResolver, false); answer = searcher.selectNodes(rootNodeRef, "*", null, namespacePrefixResolver, false);
assertEquals(2, answer.size()); assertEquals(2, answer.size());
List<Serializable> attributes = searcher.selectProperties(rootNodeRef, "//@test:animal", null, namespacePrefixResolver, false); List<Serializable> attributes = searcher.selectProperties(rootNodeRef, "//@test:animal", null,
namespacePrefixResolver, false);
assertEquals(1, attributes.size()); assertEquals(1, attributes.size());
} }
/** /**
* Tests the <b>like</b> and <b>contains</b> functions (FTS functions) within a currently executing * Tests the <b>like</b> and <b>contains</b> functions (FTS functions) within a currently executing transaction
* transaction
*/ */
public void testLikeAndContains() throws Exception public void testLikeAndContains() throws Exception
{ {
Map<QName, ChildAssociationRef> assocRefs = BaseNodeServiceTest.buildNodeGraph(nodeService, rootNodeRef); Map<QName, ChildAssociationRef> assocRefs = BaseNodeServiceTest.buildNodeGraph(nodeService, rootNodeRef);
Map<QName, Serializable> properties = new HashMap<QName, Serializable>(); Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
properties.put(QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME), "monkey"); properties.put(QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME), "monkey");
QName qnamerequiringescaping = QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME); QName qnamerequiringescaping = QName.createQName(BaseNodeServiceTest.NAMESPACE, COMPLEX_LOCAL_NAME);
nodeService.createNode(rootNodeRef, BaseNodeServiceTest.ASSOC_TYPE_QNAME_TEST_CHILDREN, qnamerequiringescaping, ContentModel.TYPE_CONTAINER, properties); nodeService.createNode(rootNodeRef, BaseNodeServiceTest.ASSOC_TYPE_QNAME_TEST_CHILDREN, qnamerequiringescaping,
ContentModel.TYPE_CONTAINER, properties);
// commit the node graph // commit the node graph
txn.commit(); txn.commit();
@@ -314,52 +307,31 @@ public class SearcherComponentTest extends TestCase
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
List<NodeRef> answer = searcher.selectNodes( List<NodeRef> answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:animal, 'm__k%', false)]", null,
rootNodeRef,
"//*[like(@test:animal, 'm__k%', false)]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:"
rootNodeRef, + ISO9075.encode(COMPLEX_LOCAL_NAME) + ", 'm__k%', false)]", null, namespacePrefixResolver, false);
"//*[like(@test:"+ISO9075.encode(COMPLEX_LOCAL_NAME)+", 'm__k%', false)]", assertEquals(1, answer.size());
null,
answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:animal, 'M__K%', false)]", null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:"
rootNodeRef, + ISO9075.encode(COMPLEX_LOCAL_NAME) + ", 'M__K%', false)]", null, namespacePrefixResolver, false);
"//*[like(@test:animal, 'M__K%', false)]", assertEquals(1, answer.size());
null,
answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:UPPERANIMAL, 'm__k%', false)]", null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:UPPERANIMAL, 'M__K%', false)]", null,
rootNodeRef,
"//*[like(@test:"+ISO9075.encode(COMPLEX_LOCAL_NAME)+", 'M__K%', false)]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[like(@test:UPPERANIMAL, 'M__K%', true)]", null,
rootNodeRef,
"//*[like(@test:UPPERANIMAL, 'm__k%', false)]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[like(@test:UPPERANIMAL, 'M__K%', false)]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[like(@test:UPPERANIMAL, 'M__K%', true)]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
@@ -369,47 +341,32 @@ public class SearcherComponentTest extends TestCase
answer = searcher.selectNodes(rootNodeRef, "//*[contains('MONKEY')]", null, namespacePrefixResolver, false); answer = searcher.selectNodes(rootNodeRef, "//*[contains('MONKEY')]", null, namespacePrefixResolver, false);
assertEquals(2, answer.size()); assertEquals(2, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[contains(lower-case('MONKEY'))]", null, namespacePrefixResolver, false); answer = searcher.selectNodes(rootNodeRef, "//*[contains(lower-case('MONKEY'))]", null,
namespacePrefixResolver, false);
assertEquals(2, answer.size()); assertEquals(2, answer.size());
// select the monkey node in the second level // select the monkey node in the second level
QueryParameterDefinition[] paramDefs = new QueryParameterDefinition[2]; QueryParameterDefinition[] paramDefs = new QueryParameterDefinition[2];
paramDefs[0] = new QueryParameterDefImpl( paramDefs[0] = new QueryParameterDefImpl(QName.createQName("test:animal", namespacePrefixResolver),
QName.createQName("test:animal", namespacePrefixResolver), dictionaryService.getDataType(DataTypeDefinition.TEXT), true, "monkey%");
dictionaryService.getDataType(DataTypeDefinition.TEXT), paramDefs[1] = new QueryParameterDefImpl(QName.createQName("test:type", namespacePrefixResolver),
true, dictionaryService.getDataType(DataTypeDefinition.TEXT), true,
"monkey%");
paramDefs[1] = new QueryParameterDefImpl(
QName.createQName("test:type", namespacePrefixResolver),
dictionaryService.getDataType(DataTypeDefinition.TEXT),
true,
BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT.toString()); BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT.toString());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef,
rootNodeRef, "./*/*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]", paramDefs,
"./*/*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]", namespacePrefixResolver, false);
paramDefs,
namespacePrefixResolver,
false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
// select the monkey node again, but use the first level as the starting poing // select the monkey node again, but use the first level as the starting poing
NodeRef n1Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "root_p_n1")).getChildRef(); NodeRef n1Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "root_p_n1")).getChildRef();
NodeRef n3Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n1_p_n3")).getChildRef(); NodeRef n3Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n1_p_n3")).getChildRef();
// first time go too deep // first time go too deep
answer = searcher.selectNodes( answer = searcher.selectNodes(n1Ref, "./*/*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]",
n1Ref, paramDefs, namespacePrefixResolver, false);
"./*/*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]",
paramDefs,
namespacePrefixResolver,
false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
// second time get it right // second time get it right
answer = searcher.selectNodes( answer = searcher.selectNodes(n1Ref, "./*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]",
n1Ref, paramDefs, namespacePrefixResolver, false);
"./*[like(@test:animal, $test:animal, false) or subtypeOf($test:type)]",
paramDefs,
namespacePrefixResolver,
false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
assertFalse("Incorrect result: search root node pulled back", answer.contains(n1Ref)); assertFalse("Incorrect result: search root node pulled back", answer.contains(n1Ref));
assertTrue("Incorrect result: incorrect node retrieved", answer.contains(n3Ref)); assertTrue("Incorrect result: incorrect node retrieved", answer.contains(n3Ref));
@@ -431,12 +388,8 @@ public class SearcherComponentTest extends TestCase
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0"); namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0");
// create the document navigator // create the document navigator
DocumentNavigator documentNavigator = new DocumentNavigator( DocumentNavigator documentNavigator = new DocumentNavigator(dictionaryService, nodeService, searcher,
dictionaryService, namespacePrefixResolver, false, true);
nodeService,
searcher,
namespacePrefixResolver,
false, true);
xpath = new NodeServiceXPath("/jcr:root", documentNavigator, null); xpath = new NodeServiceXPath("/jcr:root", documentNavigator, null);
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
@@ -466,12 +419,8 @@ public class SearcherComponentTest extends TestCase
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0"); namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0");
// create the document navigator // create the document navigator
DocumentNavigator documentNavigator = new DocumentNavigator( DocumentNavigator documentNavigator = new DocumentNavigator(dictionaryService, nodeService, searcher,
dictionaryService, namespacePrefixResolver, false, true);
nodeService,
searcher,
namespacePrefixResolver,
false, true);
xpath = new NodeServiceXPath("/jcr:root[true()]", documentNavigator, null); xpath = new NodeServiceXPath("/jcr:root[true()]", documentNavigator, null);
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
@@ -506,12 +455,8 @@ public class SearcherComponentTest extends TestCase
namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0"); namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0");
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
// create the document navigator // create the document navigator
DocumentNavigator documentNavigator = new DocumentNavigator( DocumentNavigator documentNavigator = new DocumentNavigator(dictionaryService, nodeService, searcher,
dictionaryService, namespacePrefixResolver, false, true);
nodeService,
searcher,
namespacePrefixResolver,
false, true);
xpath = new NodeServiceXPath("/jcr:root//*[@test:mvp = 'first']", documentNavigator, null); xpath = new NodeServiceXPath("/jcr:root//*[@test:mvp = 'first']", documentNavigator, null);
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
@@ -586,38 +531,38 @@ public class SearcherComponentTest extends TestCase
namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0"); namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0");
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
// create the document navigator // create the document navigator
DocumentNavigator documentNavigator = new DocumentNavigator( DocumentNavigator documentNavigator = new DocumentNavigator(dictionaryService, nodeService, searcher,
dictionaryService, namespacePrefixResolver, false, true);
nodeService,
searcher,
namespacePrefixResolver,
false, true);
xpath = new NodeServiceXPath("//element(*, *)".replaceAll("element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"), documentNavigator, null); xpath = new NodeServiceXPath("//element(*, *)".replaceAll(
"element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"),
documentNavigator, null);
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
assertEquals(12, list.size()); assertEquals(12, list.size());
xpath = new NodeServiceXPath("//element(jcr:root, *)".replaceAll("element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"), documentNavigator, null); xpath = new NodeServiceXPath("//element(jcr:root, *)".replaceAll(
"element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"),
documentNavigator, null);
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
assertEquals(1, list.size()); assertEquals(1, list.size());
QueryParameterDefImpl paramDef; QueryParameterDefImpl paramDef;
paramDef = new QueryParameterDefImpl( paramDef = new QueryParameterDefImpl(QName.createQName("test:type", namespacePrefixResolver), dictionaryService
QName.createQName("test:type", namespacePrefixResolver), .getDataType(DataTypeDefinition.QNAME), true, BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT
dictionaryService.getDataType(DataTypeDefinition.QNAME), .toPrefixString(namespacePrefixResolver));
true, xpath = new NodeServiceXPath("//element(*, test:content)".replaceAll(
BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT.toPrefixString(namespacePrefixResolver)); "element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"),
xpath = new NodeServiceXPath("//element(*, test:content)".replaceAll("element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"), documentNavigator, new QueryParameterDefinition[]{paramDef}); documentNavigator, new QueryParameterDefinition[] { paramDef });
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
assertEquals(2, list.size()); assertEquals(2, list.size());
paramDef = new QueryParameterDefImpl( paramDef = new QueryParameterDefImpl(QName.createQName("test:type", namespacePrefixResolver), dictionaryService
QName.createQName("test:type", namespacePrefixResolver), .getDataType(DataTypeDefinition.QNAME), true, BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT
dictionaryService.getDataType(DataTypeDefinition.QNAME), .toPrefixString(namespacePrefixResolver));
true, xpath = new NodeServiceXPath("//element(test:n6_p_n8, test:content)".replaceAll(
BaseNodeServiceTest.TYPE_QNAME_TEST_CONTENT.toPrefixString(namespacePrefixResolver)); "element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"),
xpath = new NodeServiceXPath("//element(test:n6_p_n8, test:content)".replaceAll("element\\(\\s*(\\*|\\$?\\w*:\\w*)\\s*,\\s*(\\*|\\$?\\w*:\\w*)\\s*\\)", "$1[subtypeOf(\"$2\")]"), documentNavigator, new QueryParameterDefinition[]{paramDef}); documentNavigator, new QueryParameterDefinition[] { paramDef });
list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef)); list = xpath.selectNodes(new ChildAssociationRef(null, null, null, rootNodeRef));
assertEquals(1, list.size()); assertEquals(1, list.size());
@@ -643,11 +588,7 @@ public class SearcherComponentTest extends TestCase
// namespacePrefixResolver, // namespacePrefixResolver,
// false, true); // false, true);
List<NodeRef> answer = searcher.selectNodes(rootNodeRef, "//*[jcr:like(@test:animal, 'm__k%')]", null,
List<NodeRef> answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:like(@test:animal, 'm__k%')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
} }
@@ -674,18 +615,10 @@ public class SearcherComponentTest extends TestCase
List<NodeRef> answer; List<NodeRef> answer;
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//.", null, namespacePrefixResolver, false);
rootNodeRef,
"//.",
null,
namespacePrefixResolver, false);
assertEquals(9, answer.size()); assertEquals(9, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//.[jcr:score() = 1.0]", null, namespacePrefixResolver, false);
rootNodeRef,
"//.[jcr:score() = 1.0]",
null,
namespacePrefixResolver, false);
assertEquals(9, answer.size()); assertEquals(9, answer.size());
} }
@@ -698,7 +631,6 @@ public class SearcherComponentTest extends TestCase
txn = transactionService.getUserTransaction(); txn = transactionService.getUserTransaction();
txn.begin(); txn.begin();
DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null); DynamicNamespacePrefixResolver namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0"); namespacePrefixResolver.registerNamespace("jcr", "http://www.jcp.org/jcr/1.0");
namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE); namespacePrefixResolver.registerNamespace(BaseNodeServiceTest.TEST_PREFIX, BaseNodeServiceTest.NAMESPACE);
@@ -712,428 +644,226 @@ public class SearcherComponentTest extends TestCase
List<NodeRef> answer; List<NodeRef> answer;
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text1, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text1, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text1, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text3, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text3, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text3, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text3, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text3, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text3, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text3, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text3, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text3, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text3, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text2, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text2, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text12, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text12, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text12, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text13, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text13, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text13, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text23, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text23, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text23, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(0, answer.size()); assertEquals(0, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'bun')]", null,
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(@test:text123, 'bun')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'bun cake')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'bun cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'bun biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(@test:text123, 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(@test:text123, 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'bun')]", null, namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher
.selectNodes(rootNodeRef, "//*[jcr:contains(., 'cake')]", null, namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'biscuit')]", null, namespacePrefixResolver,
rootNodeRef, false);
"//*[jcr:contains(., 'bun')]", assertEquals(1, answer.size());
null,
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'bun cake')]", null, namespacePrefixResolver,
false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'cake biscuit')]", null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'bun biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(., 'cake')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
answer = searcher.selectNodes( answer = searcher.selectNodes(rootNodeRef, "//*[jcr:contains(., 'bun cake biscuit')]", null,
rootNodeRef,
"//*[jcr:contains(., 'biscuit')]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(., 'bun cake')]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(., 'cake biscuit')]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(., 'bun biscuit')]",
null,
namespacePrefixResolver, false);
assertEquals(1, answer.size());
answer = searcher.selectNodes(
rootNodeRef,
"//*[jcr:contains(., 'bun cake biscuit')]",
null,
namespacePrefixResolver, false); namespacePrefixResolver, false);
assertEquals(1, answer.size()); assertEquals(1, answer.size());
@@ -1148,8 +878,10 @@ public class SearcherComponentTest extends TestCase
{ {
if (escape.indexOf(COMPLEX_LOCAL_NAME.charAt(i)) != -1) if (escape.indexOf(COMPLEX_LOCAL_NAME.charAt(i)) != -1)
{ {
builder.append("\\"); builder.append(COMPLEX_LOCAL_NAME.charAt(i));
} }
else
{
String part = Integer.toHexString(COMPLEX_LOCAL_NAME.charAt(i)); String part = Integer.toHexString(COMPLEX_LOCAL_NAME.charAt(i));
builder.append("\\u"); builder.append("\\u");
if (part.length() == 0) if (part.length() == 0)
@@ -1170,7 +902,9 @@ public class SearcherComponentTest extends TestCase
} }
builder.append(part); builder.append(part);
System.out.println(part); System.out.println(COMPLEX_LOCAL_NAME.charAt(i) + " = " + part);
}
} }
builder.append("\""); builder.append("\"");
System.out.println(builder.toString()); System.out.println(builder.toString());