From: <die...@us...> - 2010-05-12 16:51:35
|
Revision: 2430 http://openutils.svn.sourceforge.net/openutils/?rev=2430&view=rev Author: diego_schivo Date: 2010-05-12 16:51:27 +0000 (Wed, 12 May 2010) Log Message: ----------- CRIT-11 allow passing a simple handle to method setBasePath: query will be extended to all descendants (as base-path means) Modified Paths: -------------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/BasePathTest.java Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java 2010-05-12 16:10:17 UTC (rev 2429) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java 2010-05-12 16:51:27 UTC (rev 2430) @@ -121,7 +121,21 @@ */ public Criteria setBasePath(String path) { - this.path = StringUtils.defaultIfEmpty(path, "//*"); + if (!StringUtils.endsWith(path, "*")) + { + if (StringUtils.isEmpty(StringUtils.remove(path, '/'))) + { + this.path = "//*"; + } + else + { + this.path = "/" + StringUtils.defaultString(StringUtils.removeEnd(path, "/")) + "//*"; + } + } + else + { + this.path = path; + } return this; } Modified: trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/BasePathTest.java =================================================================== --- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/BasePathTest.java 2010-05-12 16:10:17 UTC (rev 2429) +++ trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/BasePathTest.java 2010-05-12 16:51:27 UTC (rev 2430) @@ -78,8 +78,19 @@ } @Test - public void testSearchEntireTree() throws Exception + public void testSearchEntireTree1() throws Exception { + Collection<String> paths = searchPaths(null, "AdvancedCriteriaImpl"); + Assert.assertNotNull(paths); + Assert.assertEquals(3, paths.size()); + Assert.assertTrue(paths.contains("/Criteria/AbstractCriteriaImpl/AdvancedCriteriaImpl")); + Assert.assertTrue(paths.contains("/Criteria/AdvancedCriteriaImpl")); + Assert.assertTrue(paths.contains("/Criteria/TranslatableCriteria/AbstractCriteriaImpl/AdvancedCriteriaImpl")); + } + + @Test + public void testSearchEntireTree2() throws Exception + { Collection<String> paths = searchPaths(StringUtils.EMPTY, "AdvancedCriteriaImpl"); Assert.assertNotNull(paths); Assert.assertEquals(3, paths.size()); @@ -99,7 +110,7 @@ } @Test - public void testSearchSingleBranchDescendants() throws Exception + public void testSearchSingleBranchDescendants1() throws Exception { Collection<String> paths = searchPaths("//Criteria/TranslatableCriteria//*", "AdvancedCriteriaImpl"); Assert.assertNotNull(paths); @@ -107,6 +118,24 @@ Assert.assertTrue(paths.contains("/Criteria/TranslatableCriteria/AbstractCriteriaImpl/AdvancedCriteriaImpl")); } + @Test + public void testSearchSingleBranchDescendants2() throws Exception + { + Collection<String> paths = searchPaths("/Criteria/TranslatableCriteria", "AdvancedCriteriaImpl"); + Assert.assertNotNull(paths); + Assert.assertEquals(1, paths.size()); + Assert.assertTrue(paths.contains("/Criteria/TranslatableCriteria/AbstractCriteriaImpl/AdvancedCriteriaImpl")); + } + + @Test + public void testSearchSingleBranchDescendants3() throws Exception + { + Collection<String> paths = searchPaths("/Criteria/TranslatableCriteria/", "AdvancedCriteriaImpl"); + Assert.assertNotNull(paths); + Assert.assertEquals(1, paths.size()); + Assert.assertTrue(paths.contains("/Criteria/TranslatableCriteria/AbstractCriteriaImpl/AdvancedCriteriaImpl")); + } + private Collection<String> searchPaths(String basePath, String title) { Criteria criteria = JCRCriteriaFactory.createCriteria().setWorkspace(ContentRepository.WEBSITE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |