MappingResult r = new MappingResult(); r.setLevel(1); r.setToURI(newuri); return r;
public MappingResult mapURI(String uri) { String destination = toURI; if (pattern != null && pattern.match(uri)) { WebContext webContext = MgnlContext.getWebContextOrNull(); if (webContext != null) { String locale = webContext.getAggregationState().getLocale().toString(); if (destinations != null) { Iterator<Map.Entry<String, String>> destIt = destinations.entrySet().iterator(); while (destIt.hasNext()) { Map.Entry<String, String> hk = destIt.next(); if (locale.startsWith(hk.getKey())) { destination = hk.getValue(); break; } } } } MappingResult r = new MappingResult(); r.setLevel(pattern.getLength()); r.setToURI(destination); return r; } return null; }
@Override public MappingResult mapURI(final String uri, String queryString) { if (regexp != null) { final Matcher matcher; if (queryString != null) { matcher = regexp.matcher(uri + "?" + queryString); } else { matcher = regexp.matcher(uri); } if (matcher.find()) { final MappingResult r = new MappingResult(); String hostMapping = this.tryToMapHost(); String replaced; try { if (StringUtils.isNotEmpty(hostMapping)) { replaced = matcher.replaceAll(hostMapping); } else { replaced = matcher.replaceAll(toURI); } r.setLevel(matcher.groupCount() + 1); r.setToURI(replaced); return r; } catch (IndexOutOfBoundsException e) { log.warn("{} misconfigured: {}", toString(), e.getMessage()); } } } return null; }
@Override public MappingResult mapURI(final String uri, String queryString) { if (regexp != null) { final Matcher matcher; if (queryString != null) { matcher = regexp.matcher(uri + "?" + queryString); } else { matcher = regexp.matcher(uri); } if (matcher.find()) { final MappingResult r = new MappingResult(); final int matcherCount = matcher.groupCount(); try { final String replaced = matcher.replaceAll(toURI); r.setLevel(matcherCount + 1); r.setToURI(replaced); return r; } catch (IndexOutOfBoundsException e) { log.warn("{} misconfigured: {}", toString(), e.getMessage()); } } } return null; }
/** * {@inheritDoc} */ public MappingResult mapURI(String uri) { if (uri.startsWith(PREFIX_MAPPING)) { String uuid = StringUtils.substringAfter(uri, PREFIX_MAPPING); Node media = MediaEl.node(uuid); if (media != null) { MappingResult mr = new MappingResult(); mr.setToURI("redirect:" + MediaEl.thumbnail(media)); mr.setLevel(1); return mr; } } return null; }
/** * {@inheritDoc} */ @Override public MappingResult mapURI(String uri) { // delegate the initial processing to RegexpVirtualURIMapping MappingResult mr = super.mapURI(uri); if (mr != null) { if (end > start) { int randomNumber = new Random().nextInt(end - (start - 1)) + start; String randomAsString = StringUtils.leftPad(Integer.toString(randomNumber), padding, '0'); mr.setToURI(StringUtils.replace(mr.getToURI(), RANDOM_PLACEHOLDER, randomAsString)); } else { log.warn("End value must be greater than start value."); } } return mr; }
@Test public void testQueryStringIsBeingPassedThroughExample3() { // GIVEN mapping.setFromURI("/products/([a-z]+)/pet/(.*)\\?((([0-9a-z]+)=([0-9]+)&)+)(paid)=(true|false)$"); mapping.setToURI("http://petshop.com/$1/$7.html?$3yes=$8"); final String inputUri = "/products/homeanimal/pet/checkout.htm"; final String inputQueryString = "?dog=5&cat=10&skunk=50&paid=true"; // WHEN final VirtualURIMapping.MappingResult res = queryAwareMapping.mapURI(inputUri, inputQueryString); // THEN assertNotNull(res); assertEquals("http://petshop.com/homeanimal/paid.html?dog=5&cat=10&skunk=50&yes=true", res.getToURI()); assertEquals(9, res.getLevel()); }
@Test public void testMapURIWithQueryToHost() { // GIVEN hostBasedMapping.addHost("host1=/path1/$1"); hostBasedMapping.setFromURI("/news/news.html?(.*)"); hostBasedMapping.setToURI("http://noviny.cz$1"); final String inputUri = "/news/news.html"; final String inputQueryString = "attribute=1"; // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI(inputUri, inputQueryString); // THEN assertNotNull(res); assertEquals("/path1/?attribute=1", res.getToURI()); }
@Override public MappingResult mapURI(String uri) { MappingResult result = super.mapURI(uri); if (result != null) { String destination = toURI; String hostMapping = this.tryToMapHost(); if (hostMapping != null) { destination = hostMapping; } result.setToURI(destination); return result; } return null; }
@Test public void testMapURIWithQuery() { // GIVEN hostBasedMapping.setFromURI("/news/(.*)"); hostBasedMapping.setToURI("http://noviny.cz/$1"); final String inputUri = "/news/news.html"; final String inputQueryString = "local=true&history=false&sport=true"; // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI(inputUri, inputQueryString); // THEN assertNotNull(res); assertEquals("http://noviny.cz/news.html?local=true&history=false&sport=true", res.getToURI()); }
@Test public void testQueryStringIsBeingPassedThroughExample2() { // GIVEN mapping.setFromURI("/products/([0-9a-z]+)\\.html\\?visible=(true|false)$"); mapping.setToURI("forward:/shop/$1?dostupna=$2"); final String inputUri = "/products/book.html"; final String inputQueryString = "visible=false"; // WHEN final VirtualURIMapping.MappingResult res = queryAwareMapping.mapURI(inputUri, inputQueryString); // THEN assertNotNull(res); assertEquals("forward:/shop/book?dostupna=false", res.getToURI()); assertEquals(3, res.getLevel()); }
@Test public void testQueryStringIsBeingPassedThroughExample() { // GIVEN mapping.setFromURI("/news/(.*)"); mapping.setToURI("http://noviny.cz/$1"); final String inputUri = "/news/news.html"; final String inputQueryString = "local=true&history=false&sport=true"; // WHEN final VirtualURIMapping.MappingResult res = queryAwareMapping.mapURI(inputUri, inputQueryString); // THEN assertNotNull(res); assertEquals("http://noviny.cz/news.html?local=true&history=false&sport=true", res.getToURI()); assertEquals(2, res.getLevel()); }
@Test public void mapURIWhenHostMappingIsNull() throws Exception { // GIVEN hostBasedMapping.addMapping(new HostBasedVirtualURIMapping.HostURIMapping(null, null)); hostBasedMapping.setFromURI("/products/([0-9a-z]+)\\.html"); hostBasedMapping.setToURI("/product/detail.html?productId=$1"); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products/magnolia.html"); // THEN assertNotNull(res); assertEquals("/product/detail.html?productId=magnolia", res.getToURI()); } }
@Test public void testSupportsMoreThan9Groups() { // GIVEN mapping.setFromURI("/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z).html"); mapping.setToURI("/bar.action?param=$9-$266$10"); // WHEN final VirtualURIMapping.MappingResult res = mapping.mapURI("/abcdefghijklmnopqrstuvwxyz.html"); // THEN assertNotNull(res); // there is no group #266, so we expect group 9, "-", group 26, followed by "6", followed by group 10 assertEquals("/bar.action?param=i-z6j", res.getToURI()); assertEquals(27, res.getLevel()); }
@Test public void mapURIWhenHostMappingIsNull() throws Exception { // GIVEN hostBasedMapping.addMapping(new HostURIMapping(null, null)); // WHEN VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/product/detail.html", res.getToURI()); } }
@Test public void testMapURIWithHostThatDoesMatch() { // GIVEN hostBasedMapping.addHost("host1=/path1"); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/path1", res.getToURI()); }
@Test public void testMappingThatDoesMatch() { // GIVEN hostBasedMapping.addMapping(new HostURIMapping("host1", "/path1")); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/path1", res.getToURI()); }
@Test public void testExample3() { // GIVEN mapping.setFromURI("^/stk-resources/comics/resources/comics/css(.*)/(.*)\\.css$"); mapping.setToURI("forward:/docroot/comics/css/$2.css"); // WHEN final VirtualURIMapping.MappingResult res = mapping.mapURI("/stk-resources/comics/resources/comics/css\b/style.css"); // THEN assertNotNull(res); assertEquals("forward:/docroot/comics/css/style.css", res.getToURI()); }
@Test public void testMapURIWithHostsWhereOneDoesMatch() { // GIVEN hostBasedMapping.addHost("host0=/path0"); hostBasedMapping.addHost("host1=/path1"); hostBasedMapping.addHost("host2=/path2"); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/path1", res.getToURI()); }