/** * The mapping to use for this uri. */ public URI2RepositoryMapping getMapping(String uri) { for (URI2RepositoryMapping mapping : mappings) { if (mapping.matches(uri)) { return mapping; } } return this.getDefaultMapping(); }
@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; }
/** * Get the repository to use for this uri. */ public String getRepository(String uri) { return this.getMapping(uri).getRepository(); }
@Test public void testMappingWhereOneDoesMatch() { // GIVEN hostBasedMapping.addMapping(new HostURIMapping("host0", "/path0")); hostBasedMapping.addMapping(new HostURIMapping("host1", "/path1")); hostBasedMapping.addMapping(new HostURIMapping("host2", "/path2")); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // 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()); } }
/** * Get the handle for this uri. */ public String getHandle(String uri) { return this.getMapping(uri).getHandle(uri); }
public void loadAllProperties(String propertiesFilesString, String rootPath) { // load mgnl-beans.properties first loadBeanProperties(); loadAllModuleProperties(); // complete or override with WEB-INF properties files loadPropertiesFiles(propertiesFilesString, rootPath); // complete or override with JVM system properties overloadWithSystemProperties(); // resolve nested properties resolveNestedProperties(); }
@Override public Object newBeanInstance(TransformationState state, Map properties, ComponentProvider componentProvider) { return new ServerConfiguration(); } }, Components.getComponentProvider());
@Override public void onEvent(EventIterator iterator) { // reload everything reload(); } });
/** * Checks for the requested URI mapping in Server config : Servlet Specification 2.3 Section 10 "Mapping Requests to * Servlets". * * @param uri the URI of the current request, decoded and without the context path * @return URI string mapping */ public String getURIMapping(String uri) { return getURIMapping(uri, null); }
/** * Read config and reload bean. */ public void reload() { load(); }
@Override public void doExec() { loader.load(); } }, true);
/** * Reload a specific node. */ protected void reload(Content node) { onRegister(node); }
@Override public void onModuleStartupCompleted(ModulesStartedEvent event) { VirtualURIManager.this.start(); } });
@Override public void doExec() { loader.unload(); } }, true);
@Test public void testMappingThatBestMatchWinsPart1() { // GIVEN setUpContextAndHost("subdomain.host.com"); hostBasedMapping.addMapping(new HostURIMapping("host.com", "/path-com")); hostBasedMapping.addMapping(new HostURIMapping("subdomain.host.com", "/path-com-subdomain")); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/path-com-subdomain", res.getToURI()); }
/** * Initialize bean. */ public void init() { load(); }
@Test public void testMappingThatBestMatchWinsPart2() { // GIVEN setUpContextAndHost("subdomain.host.com"); hostBasedMapping.addMapping(new HostURIMapping("subdomain.host.com", "/path-com-subdomain")); hostBasedMapping.addMapping(new HostURIMapping("host.com", "/path-com")); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/path-com-subdomain", res.getToURI()); }
@Test public void testMappingThatDoesNotMatch() { // GIVEN hostBasedMapping.addMapping(new HostURIMapping("host2", "/path1")); // WHEN final VirtualURIMapping.MappingResult res = hostBasedMapping.mapURI("/products"); // THEN assertNotNull(res); assertEquals("/product/detail.html", res.getToURI()); }