Skip to content

Commit

Permalink
Merge pull request #1261 from ridethepenguin/backport-2.8.x-app-schem…
Browse files Browse the repository at this point in the history
…a-layer-preview

[GEOS-7226] Default GML links in Layer Preview page do not work for app-schema layers
  • Loading branch information
ridethepenguin committed Oct 12, 2015
2 parents 1222946 + 624a64e commit a358627
Show file tree
Hide file tree
Showing 8 changed files with 353 additions and 11 deletions.
21 changes: 21 additions & 0 deletions src/extension/app-schema/app-schema-oracle-test/pom.xml
Expand Up @@ -162,6 +162,27 @@
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
</dependency>
<!-- required for Web UI tests -->
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-core</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
21 changes: 21 additions & 0 deletions src/extension/app-schema/app-schema-postgis-test/pom.xml
Expand Up @@ -157,6 +157,27 @@
<version>2.0.0-1</version>
<scope>test</scope>
</dependency>
<!-- required for Web UI tests -->
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-core</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
21 changes: 21 additions & 0 deletions src/extension/app-schema/app-schema-test/pom.xml
Expand Up @@ -163,6 +163,27 @@
<version>2.0.0-1</version>
<scope>test</scope>
</dependency>
<!-- required for Web UI tests -->
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-core</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geoserver.web</groupId>
<artifactId>gs-web-demo</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
Expand Down
@@ -0,0 +1,50 @@
/* (c) 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/

package org.geoserver.test.web;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.repeater.data.DataView;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.web.demo.MapPreviewPage;

public class AbstractMapPreviewPageTest extends GeoServerWicketTestSupport {

protected List<String> EXPECTED_GML_LINKS = new ArrayList<String>();

protected AbstractMapPreviewPageTest(List<String> expectedGmlLinks) {
this.EXPECTED_GML_LINKS = expectedGmlLinks;
}

public void testAppSchemaGmlLinks() {
tester.startPage(MapPreviewPage.class);
tester.assertRenderedPage(MapPreviewPage.class);

DataView items = (DataView) tester.getComponentFromLastRenderedPage("table:listContainer:items");
assertNotNull(items);
assertEquals(EXPECTED_GML_LINKS.size(), items.size());

// collect GML links model objects
List<String> gmlLinks = new ArrayList<String>();
for (int i=1; i<=EXPECTED_GML_LINKS.size(); i++) {
ExternalLink gmlLink = (ExternalLink) items.get(i + ":itemProperties:3:component:gml");
assertNotNull(gmlLink);
gmlLinks.add(gmlLink.getDefaultModelObjectAsString());
}

Collections.sort(EXPECTED_GML_LINKS);
Collections.sort(gmlLinks);
// check the two lists match
assertArrayEquals(EXPECTED_GML_LINKS.toArray(new String[] {}), gmlLinks.toArray(new String[] {}));
}
}
@@ -0,0 +1,34 @@
/* (c) 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/

package org.geoserver.test.web;

import java.util.Arrays;

import org.geoserver.data.test.SystemTestData;
import org.geoserver.test.FeatureChainingMockData;
import org.junit.Test;

public class Gml311LinksTest extends AbstractMapPreviewPageTest {

public Gml311LinksTest() {
super(Arrays.asList("../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=gsml:MappedFeature&amp;outputFormat=gml3&amp;maxFeatures=50",
"../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=gsml:GeologicUnit&amp;outputFormat=gml3&amp;maxFeatures=50",
"../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=ex:FirstParentFeature&amp;outputFormat=gml3&amp;maxFeatures=50",
"../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=ex:SecondParentFeature&amp;outputFormat=gml3&amp;maxFeatures=50",
"../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=om:Observation&amp;outputFormat=gml3&amp;maxFeatures=50"));
}

@Override
protected SystemTestData createTestData() throws Exception {
return new FeatureChainingMockData();
}

@Test
public void testGml311Links() {
super.testAppSchemaGmlLinks();
}

}
@@ -0,0 +1,30 @@
/* (c) 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/

package org.geoserver.test.web;

import java.util.Arrays;

import org.geoserver.data.test.SystemTestData;
import org.geoserver.test.Gsml30MockData;
import org.junit.Test;

public class Gml32LinksTest extends AbstractMapPreviewPageTest {

public Gml32LinksTest() {
super(Arrays.asList("../ows?service=WFS&amp;version=1.1.0&amp;request=GetFeature&amp;typeName=gsml:MappedFeature&amp;outputFormat=gml32&amp;maxFeatures=50"));
}

@Override
protected SystemTestData createTestData() throws Exception {
return new Gsml30MockData();
}

@Test
public void testGml32Links() {
super.testAppSchemaGmlLinks();
}

}
@@ -1,4 +1,4 @@
/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
/* (c) 2014 - 2015 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
Expand All @@ -14,9 +14,11 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;

Expand All @@ -31,12 +33,12 @@
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.config.GeoServer;
import org.geoserver.catalog.PublishedType;
import org.geoserver.config.GeoServer;
import org.geoserver.ows.util.ResponseUtils;
import org.geoserver.web.GeoServerApplication;
import org.geoserver.web.GeoServerBasePage;
import org.geoserver.web.demo.PreviewLayer.GMLOutputParams;
import org.geoserver.web.demo.PreviewLayer.PreviewLayerType;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
import org.geoserver.web.wicket.GeoServerTablePanel;
Expand All @@ -58,6 +60,9 @@ public class MapPreviewPage extends GeoServerBasePage {
private transient List<String> availableWMSFormats;
private transient List<String> availableWFSFormats;

/** GML output params computation may be expensive, results are cached in this map */
private transient Map<String, GMLOutputParams> gmlParamsCache = new HashMap<String, GMLOutputParams>();

public MapPreviewPage() {
// output formats for the drop downs
final List<String> wmsOutputFormats = getAvailableWMSFormats();
Expand All @@ -84,15 +89,11 @@ protected Component getComponentForProperty(String id,
Fragment f = new Fragment(id, "commonLinks", MapPreviewPage.this);
final String olUrl = layer.getWmsLink() + "&format=application/openlayers";
f.add(new ExternalLink("ol", olUrl, "OpenLayers"));

// kml preview
final String kmlUrl = layer.getBaseUrl("wms") + "/kml?layers=" + layer.getName();
f.add(new ExternalLink("kml", kmlUrl, "KML"));

// gml preview (we actually want it only for vector layers)
final String gmlUrl =
layer.getBaseUrl("ows") + "?service=WFS&version=1.0.0&request=GetFeature&typeName="
+ layer.getName() + getMaxFeatures();
final String gmlUrl = layer.getGmlLink(gmlParamsCache) + getMaxFeatures();
Component gmlLink = new ExternalLink("gml", gmlUrl, "GML");
f.add(gmlLink);
gmlLink.setVisible(layer.getType() == PreviewLayerType.Vector);
Expand Down

0 comments on commit a358627

Please sign in to comment.