Skip to content

Commit

Permalink
[GEOS-8210] A layer local service still reports workspace local group…
Browse files Browse the repository at this point in the history
…s in the capabilities documents
  • Loading branch information
aaime committed Jul 6, 2017
1 parent b084934 commit e3ff367
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,14 +122,22 @@ public static boolean workspaceLayerGroupInherit() {
@Override
public boolean hideLayerGroup(LayerGroupInfo layerGroup) {
PublishedInfo local = LocalPublished.get();
if(local != null && 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 !lg.equals(layerGroup);
} else if(!lg.equals(layerGroup) && !new LayerGroupHelper(lg).allGroups().contains(layerGroup)) {
if (local != null) {
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 !lg.equals(layerGroup);
} else if (!lg.equals(layerGroup)
&& !new LayerGroupHelper(lg).allGroups().contains(layerGroup)) {
return true;
}
} else {
// simple layer, not a layer group
return true;
}
}
}

if (layerGroup.getWorkspace() == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package org.geoserver.catalog.impl;

import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.empty;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
Expand Down Expand Up @@ -65,7 +66,7 @@ private void cleanupGroupByName(String name) {

@Test
public void testGroupLayerInWorkspace() {
System.out.println(catalog.getLayerGroups());
// System.out.println(catalog.getLayerGroups());

WorkspaceInfo workspace = catalog.getWorkspaceByName("sf");
WorkspaceInfo workspace2 = catalog.getWorkspaceByName("cite");
Expand Down Expand Up @@ -275,12 +276,7 @@ public void testWorkspaceGroupSpecificRequest() {
CatalogFactory factory = catalog.getFactory();
WorkspaceInfo citeWs = catalog.getWorkspaceByName("cite");

LayerGroupInfo localGroup = factory.createLayerGroup();
localGroup.setName(LOCAL_GROUP);
localGroup.setWorkspace(citeWs);
localGroup.getLayers().add(getBuildingsLayer());
localGroup.getLayers().add(getBridgesLayer());
catalog.add(localGroup);
addLocalGroup(factory, citeWs);

LayerGroupInfo globalGroup = factory.createLayerGroup();
globalGroup.setName(GLOBAL_GROUP);
Expand Down Expand Up @@ -315,7 +311,47 @@ public void testWorkspaceGroupSpecificRequest() {
LocalPublished.remove();
LocalWorkspace.remove();
}

@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());
}

@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());
}

private void addLocalGroup(CatalogFactory factory, WorkspaceInfo citeWs) {
LayerGroupInfo localGroup = factory.createLayerGroup();
localGroup.setName(LOCAL_GROUP);
localGroup.setWorkspace(citeWs);
localGroup.getLayers().add(getBuildingsLayer());
localGroup.getLayers().add(getBridgesLayer());
catalog.add(localGroup);
}

private LayerInfo getBridgesLayer() {
return catalog.getLayerByName(getLayerId(SystemTestData.BRIDGES));
Expand Down

0 comments on commit e3ff367

Please sign in to comment.