From: <fn...@us...> - 2013-07-24 09:29:57
|
Revision: 4280 http://openutils.svn.sourceforge.net/openutils/?rev=4280&view=rev Author: fnecci Date: 2013-07-24 09:29:54 +0000 (Wed, 24 Jul 2013) Log Message: ----------- CRIT-55 Added unit test to prove that jackrabbit 1.6.2 handles the issue correctly Modified Paths: -------------- magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/resources/crit-bootstrap/website.contains.xml Modified: magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java 2013-07-24 09:27:13 UTC (rev 4279) +++ magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java 2013-07-24 09:29:54 UTC (rev 4280) @@ -208,6 +208,30 @@ Assert.assertEquals(item.getTitle(), "hello \"Milano\" world"); } + @Test + public void testColonEscape() throws Exception + { + String textEnteredByUser = "l:u"; + Criteria criteria = criteria(textEnteredByUser, true); + Assert.assertEquals( + StringUtils.remove(criteria.toXpathExpression(), ' '), + "//*[((@jcr:primaryType='mgnl:content')and(jcr:contains(@title,'l\\:u')))]orderby@jcr:scoredescending"); + AdvancedResult advResult = null; + try + { + advResult = criteria.execute(); + } + catch (JCRQueryException e) + { + Assert.fail("Invalid query. " + e.getMessage()); + } + Assert.assertNotNull(advResult); + Assert.assertEquals(advResult.getTotalSize(), 1); + ResultIterator<AdvancedResultItem> items = advResult.getItems(); + AdvancedResultItem item = items.next(); + Assert.assertEquals(item.getTitle(), "hello l:u"); + } + private Criteria criteria(String titleSearch, boolean escape) { Criteria criteria = JCRCriteriaFactory.createCriteria().setWorkspace(ContentRepository.WEBSITE); Modified: magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/resources/crit-bootstrap/website.contains.xml =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/resources/crit-bootstrap/website.contains.xml 2013-07-24 09:27:13 UTC (rev 4279) +++ magnoliamodules/branches/magnolia44/openutils-mgnlcriteria/src/test/resources/crit-bootstrap/website.contains.xml 2013-07-24 09:29:54 UTC (rev 4280) @@ -3,7 +3,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -36,7 +36,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -76,7 +76,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -116,7 +116,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -156,7 +156,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -193,7 +193,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -239,7 +239,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -279,7 +279,7 @@ <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:content</sv:value> </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> <sv:value>mix:lockable</sv:value> </sv:property> <sv:property sv:name="jcr:uuid" sv:type="String"> @@ -315,4 +315,41 @@ </sv:property> </sv:node> </sv:node> + <sv:node sv:name="colon"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:content</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>17d8648e-155e-47aa-b848-bcefd16aeb2e</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="title" sv:type="String"> + <sv:value>hello l:u</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2013-07-24T10:37:29.994+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2013-07-24T10:38:00.532+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:template" sv:type="String"> + <sv:value>t-redirect</sv:value> + </sv:property> + </sv:node> + </sv:node> </sv:node> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |