@Override public MappingResult mapURI(String uri) { return this.mapURI(uri, null); }
@Test public void testToString() { // WHEN hostBasedMapping.addHost("host1=/path1"); hostBasedMapping.addHost("host2=/path2"); hostBasedMapping.setFromURI("/products/([0-9a-z]+)\\.html"); hostBasedMapping.setToURI("/product/detail.html?productId=$1"); // THEN assertEquals("[HostBasedRegexpVirtualURIMapping[/products/([0-9a-z]+)\\.html --> /product/detail.html?productId=$1][hosts:[host1=/path1, host2=/path2]]]", hostBasedMapping.toString()); }
@Test public void testMapURI() { // GIVEN hostBasedMapping.addHost("host1=/path1"); 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("/path1", res.getToURI()); }
@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 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()); }
@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; }
@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()); }