@Override public void collect(Map<String, Object> storage) { PublishedInfo pi = LocalPublished.get(); storage.put(KEY, pi); }
@Override public void cleanup() { LocalPublished.remove(); } }
@Override public void apply(Map<String, Object> storage) { PublishedInfo pi = (PublishedInfo) storage.get(KEY); LocalPublished.set(pi); }
public void mangleURL( StringBuilder baseURL, StringBuilder path, Map<String, String> kvp, URLType type) { if (type == URLType.SERVICE && stripRemainingPath(path.toString()).equalsIgnoreCase(ows)) { if (LocalWorkspace.get() != null) { path.insert(0, LocalWorkspace.get().getName() + "/"); if (LocalPublished.get() != null) { int i = LocalWorkspace.get().getName().length() + 1; path.insert(i, LocalPublished.get().getName() + "/"); } } } } }
public void finished(Request request) { LocalWorkspace.remove(); LocalPublished.remove(); }
public boolean hideLayer(LayerInfo layer) { PublishedInfo local = LocalPublished.get(); if (local == null) { return false; } else if (local instanceof LayerInfo) { return !local.equals(layer); } else if (local instanceof LayerGroupInfo) { LayerGroupInfo lg = (LayerGroupInfo) local; Request request = Dispatcher.REQUEST.get(); if (request != null && "WMS".equalsIgnoreCase(request.getService()) && "GetCapabilities".equals(request.getRequest()) && lg.getMode() == Mode.SINGLE) { return true; } else { return !new LayerGroupHelper(lg).allLayers().contains(layer); } } else { throw new RuntimeException("Unknown PublishedInfo of type " + local.getClass()); } }
Dispatcher.REQUEST.set(request); final LayerInfo layer = new LayerInfoImpl(); LocalPublished.set(layer); final WorkspaceInfo ws = new WorkspaceInfoImpl(); LocalWorkspace.set(ws);
@After public void cleanupThreadLocals() { LocalPublished.remove(); }
@Override void assertThreadLocalApplied() { assertSame(layer, LocalPublished.get()); } });
@Test public void testRequest() throws InterruptedException, ExecutionException { // setup the state final LayerInfo layer = new LayerInfoImpl(); LocalPublished.set(layer); // test it's transferred properly using the base class machinery testThreadLocalTransfer( new ThreadLocalTransferCallable(new LocalPublishedThreadLocalTransfer()) { @Override void assertThreadLocalCleaned() { assertNull(LocalPublished.get()); } @Override void assertThreadLocalApplied() { assertSame(layer, LocalPublished.get()); } }); } }
@After public void cleanupThreadLocals() { Dispatcher.REQUEST.remove(); AdminRequest.finish(); LocalPublished.remove(); LocalWorkspace.remove(); SecurityContextHolder.getContext().setAuthentication(null); }
public Service serviceDispatched(Request request, Service service) throws ServiceException { if (LocalWorkspace.get() != null) { qualifyRequest(LocalWorkspace.get(), LocalPublished.get(), service, request); } return service; }
@Test public void testLayerLocalWithContainingGroup() throws Exception { CatalogFactory factory = catalog.getFactory(); WorkspaceInfo citeWs = catalog.getWorkspaceByName("cite"); addLocalGroup(factory, citeWs); // set a local layer that's in the group final LayerInfo buildingsLayer = getBuildingsLayer(); LocalPublished.set(buildingsLayer); assertNotNull(catalog.getLayerByName(buildingsLayer.prefixedName())); assertNull(catalog.getLayerGroupByName(GLOBAL_GROUP)); assertNull(catalog.getLayerGroupByName(LOCAL_GROUP)); assertEquals(1, catalog.getLayers().size()); assertThat(catalog.getLayerGroups(), empty()); }
@Before public void setUpInternal() { catalog = getCatalog(); LocalPublished.remove(); LocalWorkspace.remove(); Dispatcher.REQUEST.remove(); cleanupGroupByName(GLOBAL_GROUP); cleanupGroupByName(GLOBAL_GROUP2); cleanupGroupByName(NESTED_GROUP); cleanupGroupByName(LOCAL_GROUP); }
@Override void assertThreadLocalCleaned() { assertNull(LocalPublished.get()); }
@Test public void testLayerLocalWithNonContainingGroup() throws Exception { CatalogFactory factory = catalog.getFactory(); WorkspaceInfo citeWs = catalog.getWorkspaceByName("cite"); addLocalGroup(factory, citeWs); // set a local layer that's not in the group final LayerInfo dividedRoutes = catalog.getLayerByName(getLayerId(SystemTestData.DIVIDED_ROUTES)); LocalPublished.set(dividedRoutes); assertNotNull(catalog.getLayerByName(dividedRoutes.prefixedName())); assertNull(catalog.getLayerGroupByName(GLOBAL_GROUP)); assertNull(catalog.getLayerGroupByName(LOCAL_GROUP)); assertEquals(1, catalog.getLayers().size()); assertThat(catalog.getLayerGroups(), empty()); }