From 0f564cd3528779d6e8bfbccd06eb8563ea896e0b Mon Sep 17 00:00:00 2001 From: Fernando Mino Date: Wed, 28 Aug 2019 02:34:30 +0000 Subject: [PATCH 01/13] [GEOS-8504] Wrong URL scheme in layer preview --- .../wms/map/AbstractOpenLayersMapOutputFormat.java | 11 ++++++++++- .../org/geoserver/wms/map/OpenLayers2MapTemplate.ftl | 4 ++-- .../org/geoserver/wms/map/OpenLayers3MapTemplate.ftl | 4 ++-- .../org/geoserver/wms/map/GetMapIntegrationTest.java | 2 +- .../geoserver/wms/map/OpenLayersMapTemplateTest.java | 1 + 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/wms/src/main/java/org/geoserver/wms/map/AbstractOpenLayersMapOutputFormat.java b/src/wms/src/main/java/org/geoserver/wms/map/AbstractOpenLayersMapOutputFormat.java index 8af83ffec34..11d02692388 100644 --- a/src/wms/src/main/java/org/geoserver/wms/map/AbstractOpenLayersMapOutputFormat.java +++ b/src/wms/src/main/java/org/geoserver/wms/map/AbstractOpenLayersMapOutputFormat.java @@ -142,7 +142,10 @@ public RawMap produceMap(WMSMapContent mapContent) throws ServiceException, IOEx queryString = baseUrl.substring(idx); // include question mark baseUrl = baseUrl.substring(0, idx); // leave out question mark } - map.put("baseUrl", canonicUrl(baseUrl)); + final String canonicBaseUrl = canonicUrl(baseUrl); + map.put("baseUrl", canonicBaseUrl); + // register a protocol-relative base URL for fetching HTML static resources + map.put("relBaseUrl", makeProtocolRelativeURL(canonicBaseUrl)); // TODO: replace service path with call to buildURL since it does this // same dance @@ -178,6 +181,12 @@ public RawMap produceMap(WMSMapContent mapContent) throws ServiceException, IOEx } } + private String makeProtocolRelativeURL(String url) { + if (!url.startsWith("http")) return url; + int startFrom = url.startsWith("https://") ? 6 : 5; + return url.substring(startFrom); + } + /** * Returns the units for the current OL version * diff --git a/src/wms/src/main/resources/org/geoserver/wms/map/OpenLayers2MapTemplate.ftl b/src/wms/src/main/resources/org/geoserver/wms/map/OpenLayers2MapTemplate.ftl index 2a8cd06e4d6..510cfe1e3ef 100644 --- a/src/wms/src/main/resources/org/geoserver/wms/map/OpenLayers2MapTemplate.ftl +++ b/src/wms/src/main/resources/org/geoserver/wms/map/OpenLayers2MapTemplate.ftl @@ -4,7 +4,7 @@ OpenLayers map preview - + - + OpenLayers map preview diff --git a/src/wms/src/test/java/org/geoserver/wms/map/GetMapIntegrationTest.java b/src/wms/src/test/java/org/geoserver/wms/map/GetMapIntegrationTest.java index 7ec684e52b9..9ea35ec7db4 100644 --- a/src/wms/src/test/java/org/geoserver/wms/map/GetMapIntegrationTest.java +++ b/src/wms/src/test/java/org/geoserver/wms/map/GetMapIntegrationTest.java @@ -293,7 +293,7 @@ public void testOpenLayersProxy() throws Exception { + "&REQUEST=GetMap&SRS=EPSG:4326&BBOX=100,78,104,80&WIDTH=300&HEIGHT=150"); assertXpathEvaluatesTo( - "http://www.geoserver.org:1234/gs/openlayers/OpenLayers.js", + "//www.geoserver.org:1234/gs/openlayers/OpenLayers.js", "//xhtml:script[contains(@src, 'OpenLayers.js')]/@src", dom); } finally { diff --git a/src/wms/src/test/java/org/geoserver/wms/map/OpenLayersMapTemplateTest.java b/src/wms/src/test/java/org/geoserver/wms/map/OpenLayersMapTemplateTest.java index 2b934a386fc..b7dce632203 100644 --- a/src/wms/src/test/java/org/geoserver/wms/map/OpenLayersMapTemplateTest.java +++ b/src/wms/src/test/java/org/geoserver/wms/map/OpenLayersMapTemplateTest.java @@ -55,6 +55,7 @@ public void test() throws Exception { map.put("request", mapContent.getRequest()); map.put("maxResolution", Double.valueOf(0.0005)); // just a random number map.put("baseUrl", "http://localhost:8080/geoserver/wms"); + map.put("relBaseUrl", "//localhost:8080/geoserver/wms"); map.put("parameters", new ArrayList()); map.put("layerName", "layer"); map.put("units", "degrees"); From f7c2d116dea851b6a966c2d5445e95c7d923a073 Mon Sep 17 00:00:00 2001 From: Daniele Romagnoli Date: Mon, 2 Sep 2019 16:02:53 +0200 Subject: [PATCH 02/13] [GEOS-9315]: Nodata transparency on channelSelect+constrastEnhancement --- .../test/java/org/geoserver/data/test/6b.tiff | Bin 0 -> 4348 bytes .../wms/map/RenderedImageMapOutputFormat.java | 50 ++++++-- .../map/RenderedImageMapOutputFormatTest.java | 65 +++++++++- .../org/geoserver/wms/map/normalized.sld | 113 ++++++++++++++++++ 4 files changed, 215 insertions(+), 13 deletions(-) create mode 100644 src/main/src/test/java/org/geoserver/data/test/6b.tiff create mode 100644 src/wms/src/test/resources/org/geoserver/wms/map/normalized.sld diff --git a/src/main/src/test/java/org/geoserver/data/test/6b.tiff b/src/main/src/test/java/org/geoserver/data/test/6b.tiff new file mode 100644 index 0000000000000000000000000000000000000000..c5a86259c341cd485725fc45b47e4d3e591ab39d GIT binary patch literal 4348 zcmeHJO-NKx6u#%2d#*}@*^efsI3_Np5{yKKBAmcTTLh_Sp)H0Wp+D42aGJnUoB_#& zL_(ki4lOEB!yssBt^BD~L`m6?kp0i0zn()h9wvU8{v{ANMYX6nJ`Ad8$jD*$0U#%=B+VlVQl5x64n%~S1JS8 z*8dWIYZx0Do4F)^xnPobhVT`Ft$a?w$!!js-zoS?yTj&71P=sAIYrYXcrf5lR$aq_ zhXQCjd@T5K2yMPVVpbC>;!aVEmn{(W;x(1r+@CXgviL{8e>`cVs`#(s-_HqG_l?%y zc^-FN=X7>!sb@h6_M8byX=`>=vM|z1E%G8jeN2JGp@2k{v43~vCM6CAtoS;+S1Ne6 z>3UYE(aPt!U3qkW^}!0KyU@Roeyxwg6{v+09L4AQ90z4Lte$oN_Tn7Q=m{?3)#GZ- zNj$GW8=OZ?vpV0nxDW1P6}51>nbBUT#XOqSpZV#kI)g26AG@iYU-58+uV%Q49y-im z-s@I)glDLfzw*8neNKJQjm5N^Kk%mrFAd7&3j=vs}93 ze4TT3$zq_oTU_?z_y zblFx8KcNA=x{>ciwa#S=`%eTn;UZ>H4wswih;tP0_TBgrQ|XAQNvMpfuS@bh>7h>f pw)DnqKL_9)`Y6O9b0=ms#A^Sz@HJkbUgJnmQGM^R@*Asp{{Vyuew6?K literal 0 HcmV?d00001 diff --git a/src/wms/src/main/java/org/geoserver/wms/map/RenderedImageMapOutputFormat.java b/src/wms/src/main/java/org/geoserver/wms/map/RenderedImageMapOutputFormat.java index f3aef22d9c4..379eca8cc8d 100644 --- a/src/wms/src/main/java/org/geoserver/wms/map/RenderedImageMapOutputFormat.java +++ b/src/wms/src/main/java/org/geoserver/wms/map/RenderedImageMapOutputFormat.java @@ -1359,7 +1359,7 @@ protected GridCoverage2D readCoverage( // // in case of component color model - boolean noDataTransparencyOnGrayByte = false; + boolean noDataTransparencyApplied = false; if (cm instanceof ComponentColorModel) { // convert to RGB if necessary @@ -1405,7 +1405,7 @@ protected GridCoverage2D readCoverage( bgValues = new double[] {mapToGrayColor(bgColor, ccm), 0}; } else { image = transparentImage; - noDataTransparencyOnGrayByte = true; + noDataTransparencyApplied = true; } } else { bgValues = new double[] {mapToGrayColor(bgColor, ccm)}; @@ -1429,7 +1429,7 @@ protected GridCoverage2D readCoverage( hasAlpha = cm.hasAlpha(); } - if (bgValues == null && !noDataTransparencyOnGrayByte) { + if (bgValues == null && !noDataTransparencyApplied) { if (hasAlpha) { // get alpha final ImageWorker iw = new ImageWorker(image); @@ -1449,10 +1449,18 @@ protected GridCoverage2D readCoverage( } } else { if (transparent) { - image = addAlphaChannel(image); - // this will work fine for all situation where the color components are <= 3 - // e.g., one band rasters with no colormap will have only one usually - bgValues = new double[] {0, 0, 0, 0}; + // If nodata is available, let's try to make it transparent when rgb. + RenderedImage imageTransparent = rgbNoDataTransparent(image); + if (imageTransparent != null) { + image = imageTransparent; + noDataTransparencyApplied = true; + } else { + image = addAlphaChannel(image); + // this will work fine for all situation where the color components are + // <= 3 + // e.g., one band rasters with no colormap will have only one usually + bgValues = new double[] {0, 0, 0, 0}; + } } else { // TODO: handle the case where the component color model is not RGB // We cannot use ImageWorker as is because it basically seems to assume @@ -1486,7 +1494,7 @@ protected GridCoverage2D readCoverage( transparencyType, iw, roiCandidate, - noDataTransparencyOnGrayByte); + noDataTransparencyApplied); } else { // Check if we need to crop a subset of the produced image, else return it right away if (imageBounds.contains(mapRasterArea) @@ -1627,12 +1635,32 @@ private ReferencedEnvelope getEastNorthEnvelope(ReferencedEnvelope envelope) } /** - * Optmized method for Gray Scale Byte images to turn noData value to transparent. + * Optimized method for RGB images to turn noData value to transparent. + * + * @param image + * @return + */ + private RenderedImage rgbNoDataTransparent(RenderedImage image) { + return makeNoDataTransparent(image, 3); + } + + /** + * Optimized method for Gray Scale Byte images to turn noData value to transparent. * * @param image * @return */ private RenderedImage grayNoDataTransparent(RenderedImage image) { + return makeNoDataTransparent(image, 1); + } + + /** + * Optimized method to turn noData value to transparent. + * + * @param image + * @return + */ + private RenderedImage makeNoDataTransparent(RenderedImage image, final int numBands) { // Using an ImageWorker ImageWorker iw = new ImageWorker(image); Range noData = iw.getNoData(); @@ -1640,12 +1668,12 @@ private RenderedImage grayNoDataTransparent(RenderedImage image) { final int numColorBands = cm.getNumColorComponents(); if (noData != null && image.getSampleModel().getDataType() == DataBuffer.TYPE_BYTE - && numColorBands == 1 + && numColorBands == numBands && cm instanceof ComponentColorModel) { int minValue = noData.getMin().intValue(); int maxValue = noData.getMax().intValue(); if (minValue == maxValue && minValue >= Byte.MIN_VALUE && minValue <= Byte.MAX_VALUE) { - // Optimization on gray images with noData value. Make that value transparent + // Optimization on images with noData value. Make that value transparent Color transparentColor = new Color(minValue, minValue, minValue); iw.makeColorTransparent(transparentColor); return iw.getRenderedImage(); diff --git a/src/wms/src/test/java/org/geoserver/wms/map/RenderedImageMapOutputFormatTest.java b/src/wms/src/test/java/org/geoserver/wms/map/RenderedImageMapOutputFormatTest.java index 75eedbc7192..245f89a8a2e 100644 --- a/src/wms/src/test/java/org/geoserver/wms/map/RenderedImageMapOutputFormatTest.java +++ b/src/wms/src/test/java/org/geoserver/wms/map/RenderedImageMapOutputFormatTest.java @@ -6,6 +6,7 @@ package org.geoserver.wms.map; import static org.geoserver.data.test.CiteTestData.STREAMS; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; @@ -24,6 +25,7 @@ import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; @@ -112,6 +114,7 @@ import org.locationtech.jts.geom.LineString; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; +import org.opengis.coverage.grid.GridEnvelope; import org.opengis.feature.Feature; import org.opengis.feature.IllegalAttributeException; import org.opengis.parameter.GeneralParameterValue; @@ -125,11 +128,18 @@ public class RenderedImageMapOutputFormatTest extends WMSTestSupport { public static QName TAZ_BYTE = new QName(MockData.WCS_URI, "tazbyte", MockData.WCS_PREFIX); + public static QName SIX_BANDS = new QName(MockData.WCS_URI, "sixbands", MockData.WCS_PREFIX); + static final QName STRAIGHT_VERTICAL_LINE = new QName(MockData.CITE_URI, "STRAIGHT_VERTICAL_LINE", MockData.CITE_PREFIX); static final String STRAIGHT_VERTICAL_LINE_STYLE = "verticalline"; + static final QName NORMALIZED = + new QName(MockData.CITE_URI, "NORMALIZED", MockData.CITE_PREFIX); + + static final String NORMALIZED_STYLE = "normalized"; + static final QName CROSS_DATELINE = new QName(MockData.CITE_URI, "CROSS_DATELINE", MockData.CITE_PREFIX); @@ -850,6 +860,8 @@ protected void onSetUp(SystemTestData testData) throws Exception { super.onSetUp(testData); testData.addDefaultRasterLayer(MockData.TASMANIA_DEM, getCatalog()); testData.addRasterLayer(TAZ_BYTE, "tazbyte.tiff", null, getCatalog()); + testData.addRasterLayer(SIX_BANDS, "6b.tiff", null, getCatalog()); + testData.addStyle(NORMALIZED_STYLE, "normalized.sld", getClass(), getCatalog()); testData.addRasterLayer( TIFF_3035, "3035.zip", @@ -1123,12 +1135,19 @@ private WMSMapContent createWMSMap(Envelope bounds) throws Exception { private void addRasterToMap(final WMSMapContent map, final QName typeName) throws IOException, FactoryRegistryException, TransformException, SchemaException { + addRasterToMap(map, typeName, null); + } + + private void addRasterToMap(final WMSMapContent map, final QName typeName, Style style) + throws IOException, FactoryRegistryException, TransformException, SchemaException { final CoverageInfo coverageInfo = getCatalog().getCoverageByName(typeName.getNamespaceURI(), typeName.getLocalPart()); List layers = getCatalog().getLayers(coverageInfo); - StyleInfo defaultStyle = layers.get(0).getDefaultStyle(); - Style style = defaultStyle.getStyle(); + if (style == null) { + StyleInfo defaultStyle = layers.get(0).getDefaultStyle(); + style = defaultStyle.getStyle(); + } SimpleFeatureCollection fc = FeatureUtilities.wrapGridCoverageReader( @@ -1518,6 +1537,48 @@ public void testGetMapOnByteNodataGrayScale() throws Exception { assertEquals(0, image.getRaster().getSample(40, 400, 1)); } + @Test + public void testGetMapOnByteNodataChannelSelectAndContrastEnhancement() throws Exception { + GetMapRequest request = new GetMapRequest(); + CoverageInfo coverageInfo = + getCatalog().getCoverageByName(SIX_BANDS.getPrefix(), SIX_BANDS.getLocalPart()); + ReferencedEnvelope bbox = coverageInfo.getNativeBoundingBox(); + GridEnvelope gridRange = coverageInfo.getGrid().getGridRange(); + + final int width = gridRange.getHigh(0) + 1; + final int height = gridRange.getHigh(1) + 1; + request.setBbox(bbox); + request.setWidth(width); + request.setHeight(height); + request.setSRS("urn:x-ogc:def:crs:EPSG:4326"); + request.setFormat("image/png"); + request.setTransparent(true); + + final WMSMapContent map = new WMSMapContent(request); + map.setMapWidth(width); + map.setMapHeight(height); + map.setTransparent(true); + map.getViewport().setBounds(bbox); + Style normalized = getCatalog().getStyleByName(NORMALIZED_STYLE).getStyle(); + addRasterToMap(map, SIX_BANDS, normalized); + map.getViewport().setBounds(bbox); + + RenderedImageMap imageMap = this.rasterMapProducer.produceMap(map); + RenderedOp op = (RenderedOp) imageMap.getImage(); + BufferedImage image = op.getAsBufferedImage(); + imageMap.dispose(); + + // check that a pixel in nodata area is transparent + int[] pixel = new int[4]; + WritableRaster raster = image.getRaster(); + raster.getPixel(0, 0, pixel); + assertArrayEquals(new int[] {0, 0, 0, 0}, pixel); + raster.getPixel(6, 7, pixel); + + // Checking a valid pixel is opaque + assertEquals(255, pixel[3]); + } + /** * Sets up a rendering loop and throws {@code renderExceptionToThrow} wrapped to a * RuntimeException when the renderer tries to get a Feature to render. diff --git a/src/wms/src/test/resources/org/geoserver/wms/map/normalized.sld b/src/wms/src/test/resources/org/geoserver/wms/map/normalized.sld new file mode 100644 index 00000000000..b489df199de --- /dev/null +++ b/src/wms/src/test/resources/org/geoserver/wms/map/normalized.sld @@ -0,0 +1,113 @@ + + + + normalized + + normalized + normalized + Normalized + + Feature + + + 1.0 + + + + + rband + 1 + + + + + + + ralgo + StretchToMinimumMaximum + + + + + rmin + 100 + + + + + rmax + 765 + + + + + + + + + gband + 2 + + + + + + + galgo + StretchToMinimumMaximum + + + + + gmin + 167 + + + + + gmax + 1150 + + + + + + + + + bband + 3 + + + + + + + balgo + StretchToMinimumMaximum + + + + + bmin + 110 + + + + + bmax + 1280 + + + + + + + + + + + + \ No newline at end of file From 9b80e163c26541ea44bbdfa93fdbf02bfe0c1ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mi=C3=B1o?= Date: Mon, 9 Sep 2019 12:38:00 -0500 Subject: [PATCH 03/13] [GEOS-9321] WFS GeoJSONBuilder limits max nested level to 20 (#3748) --- .../source/services/wfs/outputformats.rst | 4 +++ src/community/security/keycloak/pom.xml | 1 - src/community/security/oauth2-geonode/pom.xml | 1 - src/community/security/oauth2-github/pom.xml | 1 - .../security/oauth2-openid-connect/pom.xml | 1 - src/main/pom.xml | 1 - src/pom.xml | 5 ++- src/wfs/pom.xml | 1 - .../wfs/json/GeoJSONBuilderTest.java | 32 +++++++++++++++++++ 9 files changed, 38 insertions(+), 9 deletions(-) diff --git a/doc/en/user/source/services/wfs/outputformats.rst b/doc/en/user/source/services/wfs/outputformats.rst index 30d44b17f5e..a4319494d39 100644 --- a/doc/en/user/source/services/wfs/outputformats.rst +++ b/doc/en/user/source/services/wfs/outputformats.rst @@ -129,3 +129,7 @@ JSON output ``format_options``: If id_policy is not specified the geotools default feature id generation is used. * ``format_options=callback:`` applies only to the JSONP output format. See :ref:`wms_vendor_parameters` to change the callback name. Note that this format is disabled by default (See :ref:`wms_global_variables`). + +JSON output ``system properties``: + +* ``json.maxDepth=`` is used to determine the max number of allowed JSON nested objects on encoding phase. By default the value is 100. diff --git a/src/community/security/keycloak/pom.xml b/src/community/security/keycloak/pom.xml index d4172dd4014..36f7bce7079 100644 --- a/src/community/security/keycloak/pom.xml +++ b/src/community/security/keycloak/pom.xml @@ -48,7 +48,6 @@ net.sf.json-lib json-lib - jdk15 org.codehaus.jackson diff --git a/src/community/security/oauth2-geonode/pom.xml b/src/community/security/oauth2-geonode/pom.xml index 640075abb22..d3c33f6af14 100644 --- a/src/community/security/oauth2-geonode/pom.xml +++ b/src/community/security/oauth2-geonode/pom.xml @@ -47,7 +47,6 @@ net.sf.json-lib json-lib - jdk15 org.codehaus.jackson diff --git a/src/community/security/oauth2-github/pom.xml b/src/community/security/oauth2-github/pom.xml index 47cd11010f1..5a1732b11a5 100644 --- a/src/community/security/oauth2-github/pom.xml +++ b/src/community/security/oauth2-github/pom.xml @@ -47,7 +47,6 @@ net.sf.json-lib json-lib - jdk15 org.codehaus.jackson diff --git a/src/community/security/oauth2-openid-connect/pom.xml b/src/community/security/oauth2-openid-connect/pom.xml index c68fcef249a..108fc3883ec 100644 --- a/src/community/security/oauth2-openid-connect/pom.xml +++ b/src/community/security/oauth2-openid-connect/pom.xml @@ -50,7 +50,6 @@ net.sf.json-lib json-lib - jdk15 org.codehaus.jackson diff --git a/src/main/pom.xml b/src/main/pom.xml index 86eeebbf0c8..4ebc67bc5b7 100644 --- a/src/main/pom.xml +++ b/src/main/pom.xml @@ -44,7 +44,6 @@ net.sf.json-lib json-lib - jdk15 commons-beanutils diff --git a/src/pom.xml b/src/pom.xml index 486d7cd5f15..96d84fdf6ad 100644 --- a/src/pom.xml +++ b/src/pom.xml @@ -1068,9 +1068,8 @@ net.sf.json-lib - json-lib - jdk15 - 2.4 + json-lib + 2.4.2-geoserver org.codehaus.jackson diff --git a/src/wfs/pom.xml b/src/wfs/pom.xml index bb8e431dc15..c78e2a96769 100644 --- a/src/wfs/pom.xml +++ b/src/wfs/pom.xml @@ -60,7 +60,6 @@ net.sf.json-lib json-lib - jdk15 xmlunit diff --git a/src/wfs/src/test/java/org/geoserver/wfs/json/GeoJSONBuilderTest.java b/src/wfs/src/test/java/org/geoserver/wfs/json/GeoJSONBuilderTest.java index 56b1957ad34..7ca4d6e2801 100644 --- a/src/wfs/src/test/java/org/geoserver/wfs/json/GeoJSONBuilderTest.java +++ b/src/wfs/src/test/java/org/geoserver/wfs/json/GeoJSONBuilderTest.java @@ -28,6 +28,7 @@ public class GeoJSONBuilderTest { @Before public void setUp() { + System.clearProperty("json.maxDepth"); writer = new StringWriter(); builder = new GeoJSONBuilder(writer); builder.setEncodeMeasures(true); @@ -486,4 +487,35 @@ public void testWriteMultiPolygonM() throws Exception { "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[0,0,0,1],[1,1,0,2],[1,0,0,3],[0,0,0,1]]]]}", writer.toString()); } + + /** Checks max json nested level should allow up to 100 by default. */ + @Test + public void testMaxNestedLevel() { + builder.object(); + addLevels(builder, 0, 99); + builder.endObject(); + } + + /** Checks max json nested level should allow up to 120 via system property. */ + @Test + public void testMaxNestedLevelSystemParameter() { + try { + System.setProperty("json.maxDepth", "120"); + final StringWriter writer = new StringWriter(); + final GeoJSONBuilder builder = new GeoJSONBuilder(writer); + builder.object(); + addLevels(builder, 0, 119); + builder.endObject(); + } finally { + System.clearProperty("json.maxDepth"); + } + } + + private void addLevels(final GeoJSONBuilder builder, int level, final int max) { + if (level >= max) return; + level++; + builder.key("inner").object(); + addLevels(builder, level, max); + builder.endObject(); + } } From 4bb1284134a96cfc5d51cc99d1e699c8b3674247 Mon Sep 17 00:00:00 2001 From: "backporting[bot]" <42222807+backporting[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2019 12:09:08 +0100 Subject: [PATCH 04/13] [GEOS-9311] Switching from System Status to Modules tab gives an error (#3752) --- .../core/src/main/java/applicationContext.xml | 2 - .../web/admin/AbstractStatusPage.java | 13 ++ .../web/system/status/RefreshedPanel.html | 25 +++ .../web/system/status/RefreshedPanel.java | 144 ++++++++++++++++++ .../status/SystemStatusMonitorPanel.html | 19 +-- .../status/SystemStatusMonitorPanel.java | 139 +---------------- .../web/system/status/SystemStatusTab.java | 26 ---- .../geoserver/web/admin/StatusPageTest.java | 22 ++- .../status/SystemStatusMonitorPanelTest.java | 8 +- 9 files changed, 213 insertions(+), 185 deletions(-) create mode 100644 src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.html create mode 100644 src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.java delete mode 100644 src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusTab.java diff --git a/src/web/core/src/main/java/applicationContext.xml b/src/web/core/src/main/java/applicationContext.xml index 3b1d286dcee..637a92beb6e 100644 --- a/src/web/core/src/main/java/applicationContext.xml +++ b/src/web/core/src/main/java/applicationContext.xml @@ -472,7 +472,5 @@ - - diff --git a/src/web/core/src/main/java/org/geoserver/web/admin/AbstractStatusPage.java b/src/web/core/src/main/java/org/geoserver/web/admin/AbstractStatusPage.java index 60aff59bae8..fdc00e3ae00 100644 --- a/src/web/core/src/main/java/org/geoserver/web/admin/AbstractStatusPage.java +++ b/src/web/core/src/main/java/org/geoserver/web/admin/AbstractStatusPage.java @@ -16,10 +16,12 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; +import org.apache.wicket.model.StringResourceModel; import org.geoserver.catalog.Catalog; import org.geoserver.config.GeoServer; import org.geoserver.platform.GeoServerExtensions; import org.geoserver.web.GeoServerApplication; +import org.geoserver.web.system.status.SystemStatusMonitorPanel; public abstract class AbstractStatusPage extends ServerAdminPage { @@ -54,8 +56,19 @@ public Panel getPanel(String id) { return new ModuleStatusPanel(id, AbstractStatusPage.this); } }); + PanelCachingTab systemStatusTab = + new PanelCachingTab( + new AbstractTab(new StringResourceModel("MonitoringPanel.title")) { + private static final long serialVersionUID = -5301288750339244612L; + + public Panel getPanel(String id) { + return new SystemStatusMonitorPanel(id); + } + }); + tabs.add(statusTab); tabs.add(moduleStatusTab); + tabs.add(systemStatusTab); // extension point for adding extra tabs that will be ordered using the extension priority GeoServerExtensions.extensions(StatusPage.TabDefinition.class) diff --git a/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.html b/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.html new file mode 100644 index 00000000000..be3aaaf7e09 --- /dev/null +++ b/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.html @@ -0,0 +1,25 @@ + + + + +
+ Updated at + +
+ + + + + + + + + + + + + +
InfoValue
+
+ + \ No newline at end of file diff --git a/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.java b/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.java new file mode 100644 index 00000000000..6327e753dd1 --- /dev/null +++ b/src/web/core/src/main/java/org/geoserver/web/system/status/RefreshedPanel.java @@ -0,0 +1,144 @@ +/* (c) 2019 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.web.system.status; + +import java.io.Serializable; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior; +import org.apache.wicket.datetime.markup.html.basic.DateLabel; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.util.time.Duration; +import org.geoserver.platform.GeoServerExtensions; +import org.geoserver.system.status.MetricValue; +import org.geoserver.system.status.Metrics; +import org.geoserver.system.status.SystemInfoCollector; +import org.geotools.util.logging.Logging; + +/** Panel displaying system resources monitoring values that is refreshed periodically. */ +public class RefreshedPanel extends Panel { + + private static final long serialVersionUID = -5616622546856772557L; + + public static final String datePattern = "yyyy-MM-dd HH:mm:ss.SSS"; + + public RefreshedPanel(String id) { + super(id); + + /* + * Configure panel + */ + + final SystemInfoCollector systemInfoCollector = + GeoServerExtensions.bean(SystemInfoCollector.class); + final IModel timeMdl = Model.of(new Date()); + final IModel> metricMdl = Model.ofList(Collections.emptyList()); + + Label time = DateLabel.forDatePattern("time", timeMdl, datePattern); + time.setOutputMarkupId(true); + add(time); + + ListView list = + new ListView("metrics", metricMdl) { + private static final long serialVersionUID = -5654700538264617274L; + + private int counter; + + @Override + protected void onBeforeRender() { + super.onBeforeRender(); + counter = 0; + } + + @Override + protected void populateItem(ListItem item) { + item.add( + new Label( + "info", + new PropertyModel( + new MetricValueI18nDescriptionWrapper( + item.getModel().getObject(), this), + "description")), + new Label( + "value", + new PropertyModel( + item.getModel(), "valueUnit"))); + if (counter % 2 == 0) { + item.add(new AttributeModifier("class", "odd")); + } else { + item.add(new AttributeModifier("class", "even")); + } + counter++; + } + }; + list.setOutputMarkupId(true); + add(list); + + /* + * Refresh every seconds + */ + this.add( + new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)) { + private static final long serialVersionUID = -7009847252782601466L; + + @Override + public void onConfigure(Component component) { + Metrics metrics = systemInfoCollector.retrieveAllSystemInfo(); + metricMdl.setObject(metrics.getMetrics()); + timeMdl.setObject(new Date()); + } + }); + } + + /** An internal wrapper for getting optional localization string on description values. */ + private static class MetricValueI18nDescriptionWrapper implements Serializable { + private static final long serialVersionUID = 1L; + private static final Logger LOGGER = + Logging.getLogger(MetricValueI18nDescriptionWrapper.class); + + private final MetricValue value; + private final Component component; + + public MetricValueI18nDescriptionWrapper(MetricValue value, Component component) { + super(); + this.value = value; + this.component = component; + } + + public String getDescription() { + String keyValue = formatKeyValue(value); + LOGGER.log( + Level.FINE, + "Getting localized name for {0} -> {1}", + new Object[] {keyValue, value.getDescription()}); + final String localizedValue = + component.getString(keyValue, null, value.getDescription()); + return localizedValue; + } + + private String formatKeyValue(MetricValue value) { + StringBuilder keyBuilder = new StringBuilder(); + keyBuilder.append(scapeKeyString(value.getName().toLowerCase())); + keyBuilder.append("-"); + keyBuilder.append(scapeKeyString(value.getIdentifier().toLowerCase())); + return keyBuilder.toString(); + } + + private String scapeKeyString(String value) { + return value.replace(" ", "_").replace(":", "_").replace("=", "_"); + } + } +} diff --git a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.html b/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.html index be3aaaf7e09..b116181ae4a 100644 --- a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.html +++ b/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.html @@ -2,24 +2,7 @@ -
- Updated at - -
- - - - - - - - - - - - - -
InfoValue
+
\ No newline at end of file diff --git a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.java b/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.java index 3cb7ba833b8..db0f21e1310 100644 --- a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.java +++ b/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusMonitorPanel.java @@ -4,147 +4,20 @@ */ package org.geoserver.web.system.status; -import java.io.Serializable; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior; -import org.apache.wicket.datetime.markup.html.basic.DateLabel; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.util.time.Duration; -import org.geoserver.platform.GeoServerExtensions; -import org.geoserver.system.status.MetricValue; -import org.geoserver.system.status.Metrics; -import org.geoserver.system.status.SystemInfoCollector; -import org.geotools.util.logging.Logging; /** - * Panel to visualize system informations - * - *

Retrieves and updates system information metrics every second - * - * @author sandr + * Container for system status refreshable values, this isolates the periodicity refreshed panel + * from the rest of the page components, this will make the auto-refresh stop if the refreshed panel + * is hidden, e.g. when a new tab is selected. */ public class SystemStatusMonitorPanel extends Panel { - private static final long serialVersionUID = -5616622546856772557L; - - public static final String datePattern = "yyyy-MM-dd HH:mm:ss.SSS"; + private static final long serialVersionUID = -561663546856772557L; public SystemStatusMonitorPanel(String id) { super(id); - - /* - * Configure panel - */ - - final SystemInfoCollector systemInfoCollector = - GeoServerExtensions.bean(SystemInfoCollector.class); - final IModel timeMdl = Model.of(new Date()); - final IModel> metricMdl = Model.ofList(Collections.emptyList()); - - Label time = DateLabel.forDatePattern("time", timeMdl, datePattern); - time.setOutputMarkupId(true); - add(time); - - ListView list = - new ListView("metrics", metricMdl) { - private static final long serialVersionUID = -5654700538264617274L; - - private int counter; - - @Override - protected void onBeforeRender() { - super.onBeforeRender(); - counter = 0; - } - - @Override - protected void populateItem(ListItem item) { - item.add( - new Label( - "info", - new PropertyModel( - new MetricValueI18nDescriptionWrapper( - item.getModel().getObject(), this), - "description")), - new Label( - "value", - new PropertyModel( - item.getModel(), "valueUnit"))); - if (counter % 2 == 0) { - item.add(new AttributeModifier("class", "odd")); - } else { - item.add(new AttributeModifier("class", "even")); - } - counter++; - } - }; - list.setOutputMarkupId(true); - add(list); - - /* - * Refresh every seconds - */ - add( - new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)) { - private static final long serialVersionUID = -7009847252782601466L; - - @Override - public void onConfigure(org.apache.wicket.Component component) { - Metrics metrics = systemInfoCollector.retrieveAllSystemInfo(); - metricMdl.setObject(metrics.getMetrics()); - timeMdl.setObject(new Date()); - } - }); - } - - /** An internal wrapper for getting optional localization string on description values. */ - private static class MetricValueI18nDescriptionWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private static final Logger LOGGER = - Logging.getLogger(MetricValueI18nDescriptionWrapper.class); - - private final MetricValue value; - private final Component component; - - public MetricValueI18nDescriptionWrapper(MetricValue value, Component component) { - super(); - this.value = value; - this.component = component; - } - - public String getDescription() { - String keyValue = formatKeyValue(value); - LOGGER.log( - Level.FINE, - "Getting localized name for {0} -> {1}", - new Object[] {keyValue, value.getDescription()}); - final String localizedValue = - component.getString(keyValue, null, value.getDescription()); - return localizedValue; - } - - private String formatKeyValue(MetricValue value) { - StringBuilder keyBuilder = new StringBuilder(); - keyBuilder.append(scapeKeyString(value.getName().toLowerCase())); - keyBuilder.append("-"); - keyBuilder.append(scapeKeyString(value.getIdentifier().toLowerCase())); - return keyBuilder.toString(); - } - - private String scapeKeyString(String value) { - return value.replace(" ", "_").replace(":", "_").replace("=", "_"); - } + // adds the refreshable panel that will contain the system monitoring values + add(new RefreshedPanel("refreshed-values")); } } diff --git a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusTab.java b/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusTab.java deleted file mode 100644 index 521c7d7aa46..00000000000 --- a/src/web/core/src/main/java/org/geoserver/web/system/status/SystemStatusTab.java +++ /dev/null @@ -1,26 +0,0 @@ -/* (c) 2017 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.web.system.status; - -import java.io.Serializable; -import org.apache.wicket.Page; -import org.apache.wicket.markup.html.panel.Panel; -import org.geoserver.web.admin.AbstractStatusPage; - -/** Define the system monitoring tab that will appear on GeoServer status page. */ -public final class SystemStatusTab implements AbstractStatusPage.TabDefinition, Serializable { - - private static final long serialVersionUID = 1095048632943920726L; - - @Override - public String getTitleKey() { - return "MonitoringPanel.title"; - } - - @Override - public Panel createPanel(String panelId, Page containerPage) { - return new SystemStatusMonitorPanel(panelId); - } -} diff --git a/src/web/core/src/test/java/org/geoserver/web/admin/StatusPageTest.java b/src/web/core/src/test/java/org/geoserver/web/admin/StatusPageTest.java index d06f416a4a7..29c9e5685b4 100644 --- a/src/web/core/src/test/java/org/geoserver/web/admin/StatusPageTest.java +++ b/src/web/core/src/test/java/org/geoserver/web/admin/StatusPageTest.java @@ -175,14 +175,14 @@ public void testExtraTabExists() { // render the page, GeoServer status tab is show tester.assertRenderedPage(StatusPage.class); // click on the extra tab link - tester.clickLink("tabs:tabs-container:tabs:2:link", true); + tester.clickLink("tabs:tabs-container:tabs:3:link", true); // render extra tab content tester.assertRenderedPage(StatusPage.class); // check that extra tab content was rendered tester.assertContains("extra tab content"); // check that the tab has the correct title Component component = - tester.getComponentFromLastRenderedPage("tabs:tabs-container:tabs:2:link:title"); + tester.getComponentFromLastRenderedPage("tabs:tabs-container:tabs:3:link:title"); assertThat(component, instanceOf(Label.class)); Label label = (Label) component; assertThat(label.getDefaultModel(), notNullValue()); @@ -213,4 +213,22 @@ public void redirectUnauthorizedToLogin() throws Exception { assertEquals(HttpStatus.FOUND.value(), response.getStatus()); assertEquals("./org.geoserver.web.GeoServerLoginPage", response.getHeader("Location")); } + + @Test + public void testTabSwitch() { + // render the page, GeoServer status tab is show + tester.assertRenderedPage(StatusPage.class); + // click on the system status tab + tester.clickLink("tabs:tabs-container:tabs:2:link", true); + // render the system monitoring information + tester.assertRenderedPage(StatusPage.class); + // check that we have system monitoring tab expected content + tester.assertContains("CPUs"); + // now click on modules tab + tester.clickLink("tabs:tabs-container:tabs:1:link", true); + // no rendering error should happen + tester.assertRenderedPage(StatusPage.class); + // check that we have a valid content + tester.assertContains("gs-main"); + } } diff --git a/src/web/core/src/test/java/org/geoserver/web/system/status/SystemStatusMonitorPanelTest.java b/src/web/core/src/test/java/org/geoserver/web/system/status/SystemStatusMonitorPanelTest.java index 080a6387c04..f834c20e861 100644 --- a/src/web/core/src/test/java/org/geoserver/web/system/status/SystemStatusMonitorPanelTest.java +++ b/src/web/core/src/test/java/org/geoserver/web/system/status/SystemStatusMonitorPanelTest.java @@ -28,15 +28,15 @@ public void setupTests() { @Test public void testLoad() throws Exception { tester.assertRenderedPage(StatusPage.class); - tester.clickLink("tabs:tabs-container:tabs:3:link", true); - tester.assertContains("Updated at"); + tester.clickLink("tabs:tabs-container:tabs:2:link", true); + tester.assertContains("CPUs"); } @Test public void testUpdate() throws Exception { - SimpleDateFormat formatter = new SimpleDateFormat(SystemStatusMonitorPanel.datePattern); + SimpleDateFormat formatter = new SimpleDateFormat(RefreshedPanel.datePattern); tester.assertRenderedPage(StatusPage.class); - tester.clickLink("tabs:tabs-container:tabs:3:link", true); + tester.clickLink("tabs:tabs-container:tabs:2:link", true); TagTester time1 = tester.getTagByWicketId("time"); assertNotNull(time1); Date firstTime = formatter.parse(time1.getValue()); From 38fc4e9e595c86f426931b9473c72ea623929568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mi=C3=B1o?= Date: Tue, 10 Sep 2019 08:49:00 -0500 Subject: [PATCH 05/13] [GEOS-8982] GetCapabilities on a single layer fails if a style is (#3753) duplicated --- .../Capabilities_1_3_0_Transformer.java | 10 +- .../wms/capabilities/CapabilityUtil.java | 9 ++ .../GetCapabilitiesTransformer.java | 4 +- .../wms/LegendNonValidCapabilitiesTest.java | 120 ++++++++++++++++++ 4 files changed, 138 insertions(+), 5 deletions(-) create mode 100644 src/wms/src/test/java/org/geoserver/wms/LegendNonValidCapabilitiesTest.java diff --git a/src/wms/src/main/java/org/geoserver/wms/capabilities/Capabilities_1_3_0_Transformer.java b/src/wms/src/main/java/org/geoserver/wms/capabilities/Capabilities_1_3_0_Transformer.java index 7e45ac631a9..a5f45128987 100644 --- a/src/wms/src/main/java/org/geoserver/wms/capabilities/Capabilities_1_3_0_Transformer.java +++ b/src/wms/src/main/java/org/geoserver/wms/capabilities/Capabilities_1_3_0_Transformer.java @@ -13,6 +13,7 @@ import static org.geoserver.ows.util.ResponseUtils.buildSchemaURL; import static org.geoserver.ows.util.ResponseUtils.buildURL; import static org.geoserver.ows.util.ResponseUtils.params; +import static org.geoserver.wms.capabilities.CapabilityUtil.validateLegendInfo; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -1506,18 +1507,19 @@ protected void handleAttribution(PublishedInfo layer) { * Writes layer LegendURL pointing to the user supplied icon URL, if any, or to the proper * GetLegendGraphic operation if an URL was not supplied. * - *

It is common practice to supply a URL to a WMS accesible legend graphic when it is + *

It is common practice to supply a URL to a WMS accessible legend graphic when it is * difficult to create a dynamic legend for a layer. * * @param layer The layer. * @param legend The user specified legend url. If null a default url pointing back to the * GetLegendGraphic operation will be automatically created. - * @param style The styel for the layer. - * @param sampleStyle The styel to use for sample sizing. + * @param style The style for the layer. + * @param sampleStyle The style to use for sample sizing. */ protected void handleLegendURL( LayerInfo layer, LegendInfo legend, StyleInfo style, StyleInfo sampleStyle) { - if (legend != null) { + // if legend is valid, use it + if (validateLegendInfo(legend)) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("using user supplied legend URL"); } diff --git a/src/wms/src/main/java/org/geoserver/wms/capabilities/CapabilityUtil.java b/src/wms/src/main/java/org/geoserver/wms/capabilities/CapabilityUtil.java index 9de58d13497..18a3c321955 100644 --- a/src/wms/src/main/java/org/geoserver/wms/capabilities/CapabilityUtil.java +++ b/src/wms/src/main/java/org/geoserver/wms/capabilities/CapabilityUtil.java @@ -10,6 +10,7 @@ import java.util.Set; import org.geoserver.catalog.LayerGroupInfo; import org.geoserver.catalog.LayerInfo; +import org.geoserver.catalog.LegendInfo; import org.geoserver.catalog.PublishedInfo; import org.geoserver.catalog.StyleInfo; import org.geotools.styling.FeatureTypeStyle; @@ -177,4 +178,12 @@ public static Double computeScaleHint(final Double scaleDenominator) { return scaleHint; } + + /** Returns true if legend accomplish some rules to be a valid one. */ + public static boolean validateLegendInfo(LegendInfo legend) { + return legend != null + && legend.getOnlineResource() != null + && legend.getHeight() > 0 + && legend.getWidth() > 0; + } } diff --git a/src/wms/src/main/java/org/geoserver/wms/capabilities/GetCapabilitiesTransformer.java b/src/wms/src/main/java/org/geoserver/wms/capabilities/GetCapabilitiesTransformer.java index 21f5e141ea2..12f9a52e6ab 100644 --- a/src/wms/src/main/java/org/geoserver/wms/capabilities/GetCapabilitiesTransformer.java +++ b/src/wms/src/main/java/org/geoserver/wms/capabilities/GetCapabilitiesTransformer.java @@ -12,6 +12,7 @@ import static org.geoserver.ows.util.ResponseUtils.buildSchemaURL; import static org.geoserver.ows.util.ResponseUtils.buildURL; import static org.geoserver.ows.util.ResponseUtils.params; +import static org.geoserver.wms.capabilities.CapabilityUtil.validateLegendInfo; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -1487,7 +1488,8 @@ protected void handleAttribution(PublishedInfo layer) { */ protected void handleLegendURL( LayerInfo layer, LegendInfo legend, StyleInfo style, StyleInfo sampleStyle) { - if (legend != null) { + // add CapabilityUtil.validateLegendInfo + if (validateLegendInfo(legend)) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("using user supplied legend URL"); } diff --git a/src/wms/src/test/java/org/geoserver/wms/LegendNonValidCapabilitiesTest.java b/src/wms/src/test/java/org/geoserver/wms/LegendNonValidCapabilitiesTest.java new file mode 100644 index 00000000000..153c5662b47 --- /dev/null +++ b/src/wms/src/test/java/org/geoserver/wms/LegendNonValidCapabilitiesTest.java @@ -0,0 +1,120 @@ +/* (c) 2019 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.wms; + +import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo; + +import java.util.HashMap; +import java.util.Map; +import javax.xml.namespace.QName; +import org.custommonkey.xmlunit.SimpleNamespaceContext; +import org.custommonkey.xmlunit.XMLUnit; +import org.geoserver.catalog.LegendInfo; +import org.geoserver.catalog.impl.LegendInfoImpl; +import org.geoserver.config.GeoServerInfo; +import org.geoserver.data.test.MockData; +import org.geoserver.data.test.SystemTestData; +import org.geoserver.data.test.SystemTestData.LayerProperty; +import org.geoserver.platform.resource.Resource; +import org.junit.Test; +import org.w3c.dom.Document; + +/** Test setup for GEOS-8982. Does a check on Style capabilities using a non valid LegendInfo. */ +public class LegendNonValidCapabilitiesTest extends WMSTestSupport { + + private static final String CAPABILITIES_REQUEST_1_3_0 = + "wms?request=getCapabilities&version=1.3.0"; + private static final String CAPABILITIES_REQUEST_1_1_1 = + "wms?request=getCapabilities&version=1.1.1"; + + private static final String LAYER_NAME = "watertemp"; + private static final QName LAYER_QNAME = + new QName(MockData.DEFAULT_URI, LAYER_NAME, MockData.DEFAULT_PREFIX); + private static final String LAYER_FILE = "custwatertemp.zip"; + private static final String STYLE_NAME = "temperature"; + private static final String STYLE_FILE = "temperature.sld"; + private static final String LEGEND_FORMAT = "image/png"; + + private static final int LEGEND_WIDTH = 22; + private static final int LEGEND_HEIGHT = 121; + private static final String BASE = "http://127.0.0.1:8080/geoserver"; + + @Override + protected void onSetUp(SystemTestData testData) throws Exception { + super.onSetUp(testData); + + // create the non-valid legendInfo to test + LegendInfo legend = new LegendInfoImpl(); + legend.setWidth(0); + legend.setHeight(0); + legend.setFormat(LEGEND_FORMAT); + legend.setOnlineResource(null); + + // add legend.png to styles directory + Resource resource = getResourceLoader().get("styles/legend.png"); + getResourceLoader().copyFromClassPath("legend.png", resource.file(), getClass()); + + // add layer + testData.addStyle(null, STYLE_NAME, STYLE_FILE, getClass(), getCatalog(), legend); + Map propertyMap = + new HashMap(); + propertyMap.put(LayerProperty.STYLE, STYLE_NAME); + + testData.addRasterLayer( + LAYER_QNAME, LAYER_FILE, null, propertyMap, SystemTestData.class, getCatalog()); + + // For global set-up + GeoServerInfo global = getGeoServer().getGlobal(); + global.getSettings().setProxyBaseUrl(BASE); + getGeoServer().save(global); + + WMSInfo wms = getGeoServer().getService(WMSInfo.class); + wms.getSRS().add("EPSG:4326"); + getGeoServer().save(wms); + + Map namespaces = new HashMap(); + namespaces.put("xlink", "http://www.w3.org/1999/xlink"); + namespaces.put("", "http://www.opengis.net/wms"); + namespaces.put("wms", "http://www.opengis.net/wms"); + getTestData().registerNamespaces(namespaces); + XMLUnit.setXpathNamespaceContext(new SimpleNamespaceContext(namespaces)); + } + + @Test + public void testCapabilities_1_3_0() throws Exception { + Document dom = dom(get(CAPABILITIES_REQUEST_1_3_0), false); + + final String legendUrlPath = + "//wms:Layer[wms:Name='gs:" + LAYER_NAME + "']/wms:Style/wms:LegendURL"; + + // Ensure capabilities document reflects the specified legend info + assertXpathEvaluatesTo(String.valueOf(LEGEND_WIDTH), legendUrlPath + "/@width", dom); + assertXpathEvaluatesTo(String.valueOf(LEGEND_HEIGHT), legendUrlPath + "/@height", dom); + assertXpathEvaluatesTo(LEGEND_FORMAT, legendUrlPath + "/wms:Format", dom); + assertXpathEvaluatesTo( + BASE + + "/ows?service=WMS&request=GetLegendGraphic&format=image%2Fpng&width=20" + + "&height=20&layer=gs%3Awatertemp", + legendUrlPath + "/wms:OnlineResource/@xlink:href", + dom); + } + + @Test + public void testCapabilities_1_1_1() throws Exception { + Document dom = dom(get(CAPABILITIES_REQUEST_1_1_1), true); + final String legendUrlPath = "//Layer[Name='gs:" + LAYER_NAME + "']/Style/LegendURL"; + + // Ensure capabilities document reflects the specified legend info + assertXpathEvaluatesTo(String.valueOf(LEGEND_WIDTH), legendUrlPath + "/@width", dom); + assertXpathEvaluatesTo(String.valueOf(LEGEND_HEIGHT), legendUrlPath + "/@height", dom); + assertXpathEvaluatesTo(LEGEND_FORMAT, legendUrlPath + "/Format", dom); + assertXpathEvaluatesTo( + BASE + + "/wms?request=GetLegendGraphic&format=image%2Fpng&width=20" + + "&height=20&layer=gs%3Awatertemp", + legendUrlPath + "/OnlineResource/@xlink:href", + dom); + } +} From 04a6ab31d22ff50a917d5f212bdce8925f9d5ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mi=C3=B1o?= Date: Tue, 10 Sep 2019 08:57:33 -0500 Subject: [PATCH 06/13] [GEOS-9248] Allow setting Entity Expansion limit on WFS XML Readers. (#3755) --- doc/en/user/source/services/wfs/webadmin.rst | 15 +++++- .../org/geoserver/wfs/xml/WFSXmlUtils.java | 17 ++++++ .../wfs/xml/v1_0_0/WfsXmlReader.java | 4 ++ .../wfs/xml/v1_1_0/WfsXmlReader.java | 2 + .../geoserver/wfs/xml/v2_0/WfsXmlReader.java | 3 +- .../org/geoserver/wfs/TransactionTest.java | 47 ++++++++++++++++ .../geoserver/wfs/v1_1/TransactionTest.java | 47 ++++++++++++++++ .../geoserver/wfs/v2_0/TransactionTest.java | 53 +++++++++++++++++++ 8 files changed, 186 insertions(+), 2 deletions(-) diff --git a/doc/en/user/source/services/wfs/webadmin.rst b/doc/en/user/source/services/wfs/webadmin.rst index ed29e3f820c..47abfcbaddb 100644 --- a/doc/en/user/source/services/wfs/webadmin.rst +++ b/doc/en/user/source/services/wfs/webadmin.rst @@ -121,4 +121,17 @@ Option :guilabel:`Override MIME Type` allows the selection of the MIME type that .. figure:: img/services_WFS_mimetype.png -The available MIME types are: ``application/gml+xml; version=3.2``, ``text/xml; subtype=gml/3.2`` and ``text/xml``. \ No newline at end of file +The available MIME types are: ``application/gml+xml; version=3.2``, ``text/xml; subtype=gml/3.2`` and ``text/xml``. + +Configure XML Entity Expansion limit on WFS XML readers +------------------------------------------------------- + +By default WFS XML readers sets Entity Expansion limit to 100, but it can be configured via the ``org.geoserver.wfs.xml.entityExpansionLimit`` system property / web.xml init parameter / Environment variable. + +For example on command line we can adjust adding parameter: + + -Dorg.geoserver.wfs.xml.entityExpansionLimit=50 + +Or in Tomcat properties file (``{TOMCAT_HOME}/conf/catalina.properties``) adding the line: + + org.geoserver.wfs.xml.entityExpansionLimit=50 \ No newline at end of file diff --git a/src/wfs/src/main/java/org/geoserver/wfs/xml/WFSXmlUtils.java b/src/wfs/src/main/java/org/geoserver/wfs/xml/WFSXmlUtils.java index 0489f225f84..9763f85d3fb 100644 --- a/src/wfs/src/main/java/org/geoserver/wfs/xml/WFSXmlUtils.java +++ b/src/wfs/src/main/java/org/geoserver/wfs/xml/WFSXmlUtils.java @@ -10,17 +10,20 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.xml.namespace.QName; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.config.GeoServer; import org.geoserver.ows.XmlRequestReader; +import org.geoserver.platform.GeoServerExtensions; import org.geoserver.wfs.CatalogNamespaceSupport; import org.geoserver.wfs.WFSException; import org.geoserver.wfs.WFSInfo; import org.geoserver.wfs.xml.gml3.AbstractGeometryTypeBinding; import org.geotools.gml2.FeatureTypeCache; import org.geotools.gml2.SrsSyntax; +import org.geotools.util.Converters; import org.geotools.xsd.Configuration; import org.geotools.xsd.OptionalComponentParameter; import org.geotools.xsd.Parser; @@ -41,6 +44,9 @@ */ public class WFSXmlUtils { + public static final String ENTITY_EXPANSION_LIMIT = + "org.geoserver.wfs.xml.entityExpansionLimit"; + public static void initRequestParser(Parser parser, WFSInfo wfs, GeoServer geoServer, Map kvp) { // check the strict flag to determine if we should validate or not Boolean strict = (Boolean) kvp.get("strict"); @@ -158,6 +164,17 @@ public static void setSrsSyntax(Configuration obj, SrsSyntax srsSyntax) { } } + /** + * Returns the Entity Expansion Limit configuration from system property + * "org.geoserver.wfs.xml.entityExpansionLimit". Returns 100 as default if no system property is + * configured. + */ + public static Integer getEntityExpansionLimitConfiguration() { + return Optional.ofNullable(GeoServerExtensions.getProperty(ENTITY_EXPANSION_LIMIT)) + .map(p -> Converters.convert(p, Integer.class)) + .orElse(100); + } + static class DirectObjectParameter extends BasicComponentParameter { Object obj; Class clazz; diff --git a/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_0_0/WfsXmlReader.java b/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_0_0/WfsXmlReader.java index 4bf5fb720aa..302214503a8 100644 --- a/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_0_0/WfsXmlReader.java +++ b/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_0_0/WfsXmlReader.java @@ -16,6 +16,7 @@ import org.geoserver.wfs.CatalogNamespaceSupport; import org.geoserver.wfs.WFSException; import org.geoserver.wfs.xml.WFSURIHandler; +import org.geoserver.wfs.xml.WFSXmlUtils; import org.geotools.util.Version; import org.geotools.xsd.Configuration; import org.geotools.xsd.Parser; @@ -27,6 +28,7 @@ *

TODO: there is too much duplication with the 1.1.0 reader, factor it out. */ public class WfsXmlReader extends XmlRequestReader { + /** Xml Configuration */ Configuration configuration; /** geoserver configuration */ @@ -66,6 +68,8 @@ public Object read(Object request, Reader reader, Map kvp) throws Exception { // set validation based on strict or not parser.setValidating(strict.booleanValue()); WFSURIHandler.addToParser(geoServer, parser); + // set entity expansion limit + parser.setEntityExpansionLimit(WFSXmlUtils.getEntityExpansionLimitConfiguration()); // parse Object parsed = parser.parse(reader); diff --git a/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_1_0/WfsXmlReader.java b/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_1_0/WfsXmlReader.java index 8c49a2b9ff4..b3c1737cd1c 100644 --- a/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_1_0/WfsXmlReader.java +++ b/src/wfs/src/main/java/org/geoserver/wfs/xml/v1_1_0/WfsXmlReader.java @@ -55,6 +55,8 @@ public Object read(Object request, Reader reader, Map kvp) throws Exception { Parser parser = new Parser(configuration); parser.setStrict(false); parser.setEntityResolver(entityResolverProvider.getEntityResolver()); + // set entity expansion limit + parser.setEntityExpansionLimit(WFSXmlUtils.getEntityExpansionLimitConfiguration()); WFSXmlUtils.initRequestParser(parser, wfs, geoServer, kvp); Object parsed = WFSXmlUtils.parseRequest(parser, reader, wfs); diff --git a/src/wfs/src/main/java/org/geoserver/wfs/xml/v2_0/WfsXmlReader.java b/src/wfs/src/main/java/org/geoserver/wfs/xml/v2_0/WfsXmlReader.java index e0ca77c1f6b..2c3b6aee20d 100644 --- a/src/wfs/src/main/java/org/geoserver/wfs/xml/v2_0/WfsXmlReader.java +++ b/src/wfs/src/main/java/org/geoserver/wfs/xml/v2_0/WfsXmlReader.java @@ -43,7 +43,8 @@ public Object read(Object request, Reader reader, Map kvp) throws Exception { Parser parser = new Parser(config); parser.setEntityResolver(entityResolverProvider.getEntityResolver()); - + // set entity expansion limit + parser.setEntityExpansionLimit(WFSXmlUtils.getEntityExpansionLimitConfiguration()); WFSInfo wfs = wfs(); WFSXmlUtils.initRequestParser(parser, wfs, gs, kvp); diff --git a/src/wfs/src/test/java/org/geoserver/wfs/TransactionTest.java b/src/wfs/src/test/java/org/geoserver/wfs/TransactionTest.java index 7c8f345d0cf..e35f5a70663 100644 --- a/src/wfs/src/test/java/org/geoserver/wfs/TransactionTest.java +++ b/src/wfs/src/test/java/org/geoserver/wfs/TransactionTest.java @@ -22,6 +22,7 @@ import org.geoserver.security.impl.GeoServerUser; import org.geoserver.test.GeoServerSystemTestSupport; import org.geoserver.wfs.request.TransactionRequest; +import org.geoserver.wfs.xml.WFSXmlUtils; import org.geotools.data.DataStore; import org.geotools.data.simple.SimpleFeatureStore; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; @@ -35,6 +36,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextImpl; import org.w3c.dom.Document; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** @@ -672,4 +674,49 @@ private void testBuildGeotoolsTransaction( assertEquals(wfsReqHandle, gtTransaction.getProperty("VersioningCommitMessage")); assertEquals("extValue", gtTransaction.getProperty("extKey")); } + + /** Tests XML entity expansion limit on parsing with system property configuration. */ + @Test + public void testEntityExpansionLimitOnTransaction() throws Exception { + try { + System.getProperties().setProperty(WFSXmlUtils.ENTITY_EXPANSION_LIMIT, "1"); + Document dom = postAsDOM("wfs", xmlEntityExpansionLimitBody()); + NodeList serviceExceptionList = dom.getElementsByTagName("ServiceException"); + assertEquals(1, serviceExceptionList.getLength()); + Node serviceException = serviceExceptionList.item(0); + // the service exception should contain the JAXP00010001 error code, that means entity + // expansion limit is working. + assertTrue(serviceException.getTextContent().contains("JAXP00010001")); + } finally { + System.getProperties().remove(WFSXmlUtils.ENTITY_EXPANSION_LIMIT); + } + } + + private String xmlEntityExpansionLimitBody() { + return " ]>\n" + + "\n" + + " \n" + + " \n" + + " GENT PTEST1\n" + + " ptest1\n" + + " default\n" + + " upload service\n" + + " 2019-04-04Z\n" + + " City1ptest1\n" + + " RIAN\n" + + " TYPE.CITY\n" + + " 3\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " &lol1;\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""; + } } diff --git a/src/wfs/src/test/java/org/geoserver/wfs/v1_1/TransactionTest.java b/src/wfs/src/test/java/org/geoserver/wfs/v1_1/TransactionTest.java index affd02e3a23..e968b9be43c 100644 --- a/src/wfs/src/test/java/org/geoserver/wfs/v1_1/TransactionTest.java +++ b/src/wfs/src/test/java/org/geoserver/wfs/v1_1/TransactionTest.java @@ -22,6 +22,7 @@ import org.geoserver.data.test.CiteTestData; import org.geoserver.data.test.SystemTestData; import org.geoserver.wfs.WFSTestSupport; +import org.geoserver.wfs.xml.WFSXmlUtils; import org.geoserver.wfs.xml.v1_1_0.WFS; import org.geotools.data.DataStore; import org.geotools.data.FeatureSource; @@ -37,6 +38,7 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class TransactionTest extends WFSTestSupport { @@ -1032,4 +1034,49 @@ public void testInsertUnknownFeatureType() throws Exception { Document dom = dom(new ByteArrayInputStream(response.getContentAsByteArray())); checkOws10Exception(dom, "InvalidParameterValue"); } + + /** Tests XML entity expansion limit on parsing with system property configuration. */ + @Test + public void testEntityExpansionLimitOnTransaction() throws Exception { + try { + System.getProperties().setProperty(WFSXmlUtils.ENTITY_EXPANSION_LIMIT, "1"); + Document dom = postAsDOM("wfs", xmlEntityExpansionLimitBody()); + NodeList serviceExceptionList = dom.getElementsByTagName("ows:ExceptionText"); + assertEquals(1, serviceExceptionList.getLength()); + Node serviceException = serviceExceptionList.item(0); + // the service exception should contain the JAXP00010001 error code, that means entity + // expansion limit is working. + assertTrue(serviceException.getTextContent().contains("JAXP00010001")); + } finally { + System.getProperties().remove(WFSXmlUtils.ENTITY_EXPANSION_LIMIT); + } + } + + private String xmlEntityExpansionLimitBody() { + return " ]>\n" + + "\n" + + " \n" + + " \n" + + " GENT PTEST1\n" + + " ptest1\n" + + " default\n" + + " upload service\n" + + " 2019-04-04Z\n" + + " City1ptest1\n" + + " RIAN\n" + + " TYPE.CITY\n" + + " 3\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " &lol1;\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""; + } } diff --git a/src/wfs/src/test/java/org/geoserver/wfs/v2_0/TransactionTest.java b/src/wfs/src/test/java/org/geoserver/wfs/v2_0/TransactionTest.java index acf8bfc9f15..fe40c1a0a8e 100644 --- a/src/wfs/src/test/java/org/geoserver/wfs/v2_0/TransactionTest.java +++ b/src/wfs/src/test/java/org/geoserver/wfs/v2_0/TransactionTest.java @@ -26,6 +26,7 @@ import org.geoserver.wfs.StoredQuery; import org.geoserver.wfs.WFSException; import org.geoserver.wfs.WFSInfo; +import org.geoserver.wfs.xml.WFSXmlUtils; import org.geotools.data.DataStore; import org.geotools.data.simple.SimpleFeatureStore; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; @@ -38,6 +39,7 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class TransactionTest extends WFS20TestSupport { @@ -1297,4 +1299,55 @@ public void testInsertPreserveId() throws Exception { getGeoServer().save(wfs); } } + + /** Tests XML entity expansion limit on parsing with system property configuration. */ + @Test + public void testEntityExpansionLimitOnTransaction() throws Exception { + try { + System.getProperties().setProperty(WFSXmlUtils.ENTITY_EXPANSION_LIMIT, "1"); + Document dom = postAsDOM("wfs", xmlEntityExpansionLimitBody()); + NodeList serviceExceptionList = dom.getElementsByTagName("ows:ExceptionText"); + assertEquals(1, serviceExceptionList.getLength()); + Node serviceException = serviceExceptionList.item(0); + // the service exception should contain the JAXP00010001 error code, that means entity + // expansion limit is working. + assertTrue(serviceException.getTextContent().contains("JAXP00010001")); + } finally { + System.getProperties().remove(WFSXmlUtils.ENTITY_EXPANSION_LIMIT); + } + } + + private String xmlEntityExpansionLimitBody() { + return "" + + " ]>" + + "" + + "" + + " " + + " " + + "Fusce tellus ante, tempus nonummy, ornare sed, accumsan nec, leo." + + "Vivamus pulvinar molestie nisl." + + "" + + "Aliquam condimentum felis sit amet est." + + "PrimitiveGeoFeatureId.gmlsf0-f01" + // + "cite.gmlsf0-f01" + + "" + + " " + + " &lol1;" + + " " + + "" + + "1025" + + "7.405E2" + + "2006-06-23T12:43:12+01:00" + + "90.62" + + "" + + "" + + ""; + } } From 2eba6cc2678e2e69bc21543bba95b6791e77c0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mi=C3=B1o?= Date: Tue, 10 Sep 2019 08:59:37 -0500 Subject: [PATCH 07/13] [GEOS-8356] WMS GetFeatureInfo formats text/plain, GeoJSON don't handle (#3757) time correctly --- .../geoserver/data/util/TemporalUtils.java | 56 +++++++++ .../data/test/TemporalData.properties | 2 + .../wfs/json/GeoJSONGetFeatureResponse.java | 6 + .../TextFeatureInfoOutputFormat.java | 12 +- .../featureinfo/GetFeatureInfoJSONTest.java | 114 ++++++++++++++++++ .../TextFeatureInfoOutputFormatTest.java | 66 ++++++++++ 6 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 src/main/src/main/java/org/geoserver/data/util/TemporalUtils.java create mode 100644 src/main/src/test/java/org/geoserver/data/test/TemporalData.properties diff --git a/src/main/src/main/java/org/geoserver/data/util/TemporalUtils.java b/src/main/src/main/java/org/geoserver/data/util/TemporalUtils.java new file mode 100644 index 00000000000..b0a53a9dee1 --- /dev/null +++ b/src/main/src/main/java/org/geoserver/data/util/TemporalUtils.java @@ -0,0 +1,56 @@ +/* (c) 2019 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.data.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +import org.geotools.util.factory.Hints; +import org.geotools.xml.impl.DatatypeConverterImpl; + +/** + * Date and Time related util functions. + * + * @author Fernando Mino - Geosolutions + */ +public final class TemporalUtils { + + private TemporalUtils() {} + + /** + * Returns a print ready string representation for a Date value, handling timezone + * configurations and date/datetime difference. + */ + public static String printDate(Date date) { + if (date == null) return "null"; + Calendar calendar = toCalendar(date); + // if it's only a date, no time involved + if (date instanceof java.sql.Date) { + return DatatypeConverterImpl.getInstance().printDate(calendar); + } else { + // timestamp handling + return DatatypeConverterImpl.getInstance().printDateTime(calendar); + } + } + + private static Calendar toCalendar(Date date) { + Object hint = Hints.getSystemDefault(Hints.LOCAL_DATE_TIME_HANDLING); + Calendar calendar; + if (Boolean.TRUE.equals(hint)) { + calendar = Calendar.getInstance(); + } else { + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + } + calendar.clear(); + calendar.setTimeInMillis(date.getTime()); + return calendar; + } + + /** Return true if DateTime format configuration is enabled. */ + public static boolean isDateTimeFormatEnabled() { + Object hint = Hints.getSystemDefault(Hints.DATE_TIME_FORMAT_HANDLING); + return !Boolean.FALSE.equals(hint); + } +} diff --git a/src/main/src/test/java/org/geoserver/data/test/TemporalData.properties b/src/main/src/test/java/org/geoserver/data/test/TemporalData.properties new file mode 100644 index 00000000000..61b2babd4b4 --- /dev/null +++ b/src/main/src/test/java/org/geoserver/data/test/TemporalData.properties @@ -0,0 +1,2 @@ +_=id:String,altitude:int,pointProperty:Point:srid=4326,dateTimeProperty:java.sql.Timestamp,dateProperty:java.sql.Date +Points.0=t0000| 500| POINT(39.73245 2.00342)|2006-06-27 22:00:00|2006-12-12 diff --git a/src/wfs/src/main/java/org/geoserver/wfs/json/GeoJSONGetFeatureResponse.java b/src/wfs/src/main/java/org/geoserver/wfs/json/GeoJSONGetFeatureResponse.java index 9b953242dcb..aacfd2f9803 100644 --- a/src/wfs/src/main/java/org/geoserver/wfs/json/GeoJSONGetFeatureResponse.java +++ b/src/wfs/src/main/java/org/geoserver/wfs/json/GeoJSONGetFeatureResponse.java @@ -18,6 +18,7 @@ import java.util.logging.Logger; import net.sf.json.JSONException; import org.geoserver.config.GeoServer; +import org.geoserver.data.util.TemporalUtils; import org.geoserver.ows.Dispatcher; import org.geoserver.ows.Request; import org.geoserver.platform.GeoServerExtensions; @@ -460,6 +461,11 @@ private FeaturesInfo encodeSimpleFeatures( jsonWriter.writeGeom((Geometry) value); } } + } else if (Date.class.isAssignableFrom(ad.getType().getBinding()) + && TemporalUtils.isDateTimeFormatEnabled()) { + // Temporal types print handling + jsonWriter.key(ad.getLocalName()); + jsonWriter.value(TemporalUtils.printDate((Date) value)); } else { jsonWriter.key(ad.getLocalName()); jsonWriter.value(value); diff --git a/src/wms/src/main/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormat.java b/src/wms/src/main/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormat.java index 6a7591c9c09..af40631e4ed 100644 --- a/src/wms/src/main/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormat.java +++ b/src/wms/src/main/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormat.java @@ -10,9 +10,11 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.nio.charset.Charset; +import java.util.Date; import java.util.List; import java.util.logging.Level; import net.opengis.wfs.FeatureCollectionType; +import org.geoserver.data.util.TemporalUtils; import org.geoserver.platform.ServiceException; import org.geoserver.wms.GetFeatureInfoRequest; import org.geoserver.wms.WMS; @@ -102,8 +104,8 @@ public void write( for (AttributeDescriptor descriptor : types) { final Name name = descriptor.getName(); - if (Geometry.class.isAssignableFrom( - descriptor.getType().getBinding())) { + final Class binding = descriptor.getType().getBinding(); + if (Geometry.class.isAssignableFrom(binding)) { // writer.println(types[j].getName() + " = // [GEOMETRY]"); @@ -130,6 +132,12 @@ public void write( // GEOS-6829 writer.println(name + " = null"); } + } else if (Date.class.isAssignableFrom(binding) + && TemporalUtils.isDateTimeFormatEnabled()) { + // Temporal types print handling + String printValue = + TemporalUtils.printDate((Date) f.getAttribute(name)); + writer.println(name + " = " + printValue); } else { writer.println(name + " = " + f.getAttribute(name)); } diff --git a/src/wms/src/test/java/org/geoserver/wms/featureinfo/GetFeatureInfoJSONTest.java b/src/wms/src/test/java/org/geoserver/wms/featureinfo/GetFeatureInfoJSONTest.java index 4972b9c5e6c..0838e8d6f91 100644 --- a/src/wms/src/test/java/org/geoserver/wms/featureinfo/GetFeatureInfoJSONTest.java +++ b/src/wms/src/test/java/org/geoserver/wms/featureinfo/GetFeatureInfoJSONTest.java @@ -9,18 +9,38 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.Collections; +import java.util.TimeZone; +import javax.xml.namespace.QName; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.geoserver.catalog.FeatureTypeInfo; +import org.geoserver.data.test.CiteTestData; import org.geoserver.data.test.MockData; +import org.geoserver.data.test.SystemTestData; import org.geoserver.wfs.json.JSONType; import org.geoserver.wms.wms_1_1_1.GetFeatureInfoTest; import org.geotools.util.NumberRange; +import org.geotools.util.factory.Hints; import org.junit.Test; import org.springframework.mock.web.MockHttpServletResponse; public class GetFeatureInfoJSONTest extends GetFeatureInfoTest { + public static final QName TEMPORAL_DATA = + new QName(CiteTestData.CITE_URI, "TemporalData", CiteTestData.CITE_PREFIX); + + @Override + protected void onSetUp(SystemTestData testData) throws Exception { + super.onSetUp(testData); + testData.addVectorLayer( + TEMPORAL_DATA, + Collections.EMPTY_MAP, + "TemporalData.properties", + SystemTestData.class, + getCatalog()); + } + /** Tests JSONP outside of expected polygon */ @Test public void testSimpleJSONP() throws Exception { @@ -247,4 +267,98 @@ public void testCQLFilter() throws Exception { getCatalog().save(info); } } + + @Test + public void testDateTimeFormattingEnabled() throws Exception { + TimeZone defaultTimeZone = TimeZone.getDefault(); + TimeZone.setDefault(TimeZone.getTimeZone("GMT-05:00")); + try { + System.getProperties().remove("org.geotools.dateTimeFormatHandling"); + System.setProperty("org.geotools.localDateTimeHandling", "true"); + Hints.scanSystemProperties(); + String layer = getLayerId(TEMPORAL_DATA); + String request = + "wms?version=1.1.1&bbox=39.73245,2.00342,39.732451,2.003421&styles=&format=jpeg" + + "&request=GetFeatureInfo&layers=" + + layer + + "&query_layers=" + + layer + + "&width=10&height=10&x=5&y=5" + + "&info_format=" + + JSONType.json; + + // JSON + MockHttpServletResponse response = getAsServletResponse(request, ""); + + // MimeType + assertEquals(JSONType.json, response.getContentType()); + + // Check if the character encoding is the one expected + assertTrue("UTF-8".equals(response.getCharacterEncoding())); + + // Content + String result = response.getContentAsString(); + assertNotNull(result); + + JSONObject rootObject = JSONObject.fromObject(result); + assertEquals(rootObject.get("type"), "FeatureCollection"); + JSONArray featureCol = rootObject.getJSONArray("features"); + JSONObject aFeature = featureCol.getJSONObject(0); + JSONObject properties = aFeature.getJSONObject("properties"); + assertNotNull(properties); + assertEquals("2006-06-27T22:00:00-05:00", properties.getString("dateTimeProperty")); + assertEquals("2006-12-12", properties.getString("dateProperty")); + } finally { + TimeZone.setDefault(defaultTimeZone); + System.getProperties().remove("org.geotools.localDateTimeHandling"); + } + } + + @Test + public void testDateTimeFormattingDisabled() throws Exception { + TimeZone defaultTimeZone = TimeZone.getDefault(); + try { + TimeZone.setDefault(TimeZone.getTimeZone("GMT-05:00")); + System.setProperty("org.geotools.dateTimeFormatHandling", "false"); + System.setProperty("org.geotools.localDateTimeHandling", "true"); + Hints.scanSystemProperties(); + String layer = getLayerId(TEMPORAL_DATA); + String request = + "wms?version=1.1.1&bbox=39.73245,2.00342,39.732451,2.003421&styles=&format=jpeg" + + "&request=GetFeatureInfo&layers=" + + layer + + "&query_layers=" + + layer + + "&width=10&height=10&x=5&y=5" + + "&info_format=" + + JSONType.json; + + // JSON + MockHttpServletResponse response = getAsServletResponse(request, ""); + + // MimeType + assertEquals(JSONType.json, response.getContentType()); + + // Check if the character encoding is the one expected + assertTrue("UTF-8".equals(response.getCharacterEncoding())); + + // Content + String result = response.getContentAsString(); + assertNotNull(result); + + JSONObject rootObject = JSONObject.fromObject(result); + assertEquals(rootObject.get("type"), "FeatureCollection"); + JSONArray featureCol = rootObject.getJSONArray("features"); + JSONObject aFeature = featureCol.getJSONObject(0); + JSONObject properties = aFeature.getJSONObject("properties"); + assertNotNull(properties); + assertEquals("2006-06-28T03:00:00Z", properties.getString("dateTimeProperty")); + assertEquals("2006-12-12", properties.getString("dateProperty")); + } finally { + System.getProperties().remove("org.geotools.dateTimeFormatHandling"); + System.getProperties().remove("org.geotools.localDateTimeHandling"); + Hints.scanSystemProperties(); + TimeZone.setDefault(defaultTimeZone); + } + } } diff --git a/src/wms/src/test/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormatTest.java b/src/wms/src/test/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormatTest.java index 06ed8f051fe..888f9b39373 100644 --- a/src/wms/src/test/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormatTest.java +++ b/src/wms/src/test/java/org/geoserver/wms/featureinfo/TextFeatureInfoOutputFormatTest.java @@ -15,6 +15,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TimeZone; import net.opengis.wfs.FeatureCollectionType; import net.opengis.wfs.WfsFactory; import org.geoserver.catalog.FeatureTypeInfo; @@ -31,11 +32,16 @@ import org.geoserver.wms.GetFeatureInfoRequest; import org.geoserver.wms.MapLayerInfo; import org.geoserver.wms.WMSTestSupport; +import org.geotools.util.factory.Hints; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; public class TextFeatureInfoOutputFormatTest extends WMSTestSupport { + public static TimeZone defaultTimeZone; + private TextFeatureInfoOutputFormat outputFormat; private FeatureCollectionType fcType; @@ -44,6 +50,22 @@ public class TextFeatureInfoOutputFormatTest extends WMSTestSupport { GetFeatureInfoRequest getFeatureInfoRequest; + @BeforeClass + public static void beforeClass() { + System.setProperty("org.geotools.localDateTimeHandling", "true"); + System.getProperties().remove("org.geotools.dateTimeFormatHandling"); + Hints.scanSystemProperties(); + defaultTimeZone = TimeZone.getDefault(); + TimeZone.setDefault(TimeZone.getTimeZone("GMT-05:00")); + } + + @AfterClass + public static void afterClass() { + System.getProperties().remove("org.geotools.dateTimeFormatHandling"); + Hints.scanSystemProperties(); + TimeZone.setDefault(defaultTimeZone); + } + @Before public void setUp() throws URISyntaxException, IOException { outputFormat = new TextFeatureInfoOutputFormat(getWMS()); @@ -95,4 +117,48 @@ public void testNullGeometry() throws IOException { assertFalse(result.contains("java.lang.NullPointerException")); assertTrue(result.contains("pointProperty = null")); } + + @Test + public void testDateTimeFormattingEnabled() throws Exception { + TimeZone defaultTimeZone = TimeZone.getDefault(); + TimeZone.setDefault(TimeZone.getTimeZone("GMT-05:00")); + try { + System.setProperty("org.geotools.dateTimeFormatHandling", "true"); + Hints.scanSystemProperties(); + final FeatureTypeInfo featureType = getFeatureTypeInfo(MockData.PRIMITIVEGEOFEATURE); + fcType = WfsFactory.eINSTANCE.createFeatureCollectionType(); + fcType.getFeature().add(featureType.getFeatureSource(null, null).getFeatures()); + + getFeatureInfoRequest.setFeatureCount(10); + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + outputFormat.write(fcType, getFeatureInfoRequest, outStream); + String result = new String(outStream.toByteArray()); + assertTrue(result.contains("dateTimeProperty = 2006-06-26T19:00:00-05:00")); + + } finally { + getFeatureInfoRequest.setFeatureCount(1); + TimeZone.setDefault(defaultTimeZone); + } + } + + @Test + public void testDateTimeFormattingDisabled() throws Exception { + System.setProperty("org.geotools.dateTimeFormatHandling", "false"); + Hints.scanSystemProperties(); + try { + final FeatureTypeInfo featureType = getFeatureTypeInfo(MockData.PRIMITIVEGEOFEATURE); + fcType = WfsFactory.eINSTANCE.createFeatureCollectionType(); + fcType.getFeature().add(featureType.getFeatureSource(null, null).getFeatures()); + + getFeatureInfoRequest.setFeatureCount(10); + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + outputFormat.write(fcType, getFeatureInfoRequest, outStream); + String result = new String(outStream.toByteArray()); + assertTrue(result.contains("dateTimeProperty = 2006-06-26 19:00:00.0")); + } finally { + getFeatureInfoRequest.setFeatureCount(1); + System.getProperties().remove("org.geotools.dateTimeFormatHandling"); + Hints.scanSystemProperties(); + } + } } From 735052e147f9ad1279159ac5efe02e04c66cd4d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mi=C3=B1o?= Date: Tue, 10 Sep 2019 09:01:05 -0500 Subject: [PATCH 08/13] [GEOS-9133] Cannot configure hyperspectral image in "bin" package, form (#3761) too big --- src/release/jetty/etc/jetty.xml | 14 +++++++++++++- .../app/src/test/java/org/geoserver/web/Start.java | 4 +++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/release/jetty/etc/jetty.xml b/src/release/jetty/etc/jetty.xml index d8708ef4171..0e8e9bc0b38 100644 --- a/src/release/jetty/etc/jetty.xml +++ b/src/release/jetty/etc/jetty.xml @@ -94,7 +94,19 @@ --> - + + + + + + org.eclipse.jetty.server.Request.maxFormContentSize + 500000 + + + org.eclipse.jetty.server.Request.maxFormKeys + 2000 + + diff --git a/src/web/app/src/test/java/org/geoserver/web/Start.java b/src/web/app/src/test/java/org/geoserver/web/Start.java index 0f7047ede06..608b337a50c 100644 --- a/src/web/app/src/test/java/org/geoserver/web/Start.java +++ b/src/web/app/src/test/java/org/geoserver/web/Start.java @@ -112,7 +112,9 @@ public static void main(String[] args) { jettyServer.setHandler(wah); wah.setTempDirectory(new File("target/work")); // this allows to send large SLD's from the styles form - wah.getServletContext().getContextHandler().setMaxFormContentSize(1024 * 1024 * 2); + wah.getServletContext().getContextHandler().setMaxFormContentSize(1024 * 1024 * 5); + // this allows to configure hyperspectral images + wah.getServletContext().getContextHandler().setMaxFormKeys(2000); String jettyConfigFile = System.getProperty("jetty.config.file"); if (jettyConfigFile != null) { From 401664cf6223ea8091f423b711ffc3630d4de3b0 Mon Sep 17 00:00:00 2001 From: "backporting[bot]" <42222807+backporting[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2019 15:02:29 +0100 Subject: [PATCH 09/13] [GEOS-8982] GetCapabilities on a single layer fails if a style is (#3763) duplicated From 8ed9f1a5998274efee292f1de4dae690bc81d0a0 Mon Sep 17 00:00:00 2001 From: Daniele Romagnoli Date: Mon, 16 Sep 2019 09:18:34 +0000 Subject: [PATCH 10/13] fixing gdal bindings jar name --- src/release/ext-gdal.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/release/ext-gdal.xml b/src/release/ext-gdal.xml index 902e85eb6f5..b873fa51d41 100644 --- a/src/release/ext-gdal.xml +++ b/src/release/ext-gdal.xml @@ -21,6 +21,7 @@ *imageio-ext-geocore*.jar *imageio-ext-imagereadmt*.jar gs-gdal-*.jar + gdal-*.jar *arcgrid*.jar From fecea476d3009d721aa33b042e87f523b735c5a4 Mon Sep 17 00:00:00 2001 From: "devops@boundlessgeo.com" Date: Wed, 18 Sep 2019 10:47:28 +0000 Subject: [PATCH 11/13] updating version numbers and release notes for 2.16.0 --- doc/en/developer/source/conf.py | 2 +- doc/en/docguide/source/conf.py | 2 +- doc/en/user/source/conf.py | 2 +- src/community/app-schema/pom.xml | 2 +- .../app-schema/webservice-test/pom.xml | 2 +- src/community/backup-restore/core/pom.xml | 2 +- .../backup-restore/extension/pom.xml | 2 +- src/community/backup-restore/pom.xml | 2 +- src/community/backup-restore/rest/pom.xml | 2 +- src/community/backup-restore/web/pom.xml | 2 +- src/community/colormap/pom.xml | 2 +- src/community/csw-iso/pom.xml | 2 +- src/community/dds/pom.xml | 4 ++-- src/community/dyndimension/pom.xml | 2 +- src/community/gdal/gdal-wcs/pom.xml | 2 +- src/community/gdal/gdal-wps/pom.xml | 2 +- src/community/gdal/pom.xml | 2 +- src/community/geogig/pom.xml | 2 +- src/community/geomesa/pom.xml | 4 ++-- src/community/geopkg/pom.xml | 2 +- src/community/geostyler/pom.xml | 2 +- src/community/gpxppio/pom.xml | 4 ++-- src/community/gwc-azure-blob/pom.xml | 4 ++-- src/community/gwc-distributed/pom.xml | 2 +- src/community/gwc-s3/pom.xml | 4 ++-- src/community/gwc-sqlite/pom.xml | 4 ++-- src/community/hello/pom.xml | 4 ++-- src/community/hello_web/pom.xml | 4 ++-- src/community/hz-cluster/pom.xml | 2 +- src/community/importer-fgdb/pom.xml | 2 +- src/community/jdbc-metrics/pom.xml | 4 ++-- src/community/jdbcconfig/pom.xml | 4 ++-- src/community/jdbcstore/pom.xml | 4 ++-- .../jms-cluster/activemqBroker/pom.xml | 4 ++-- src/community/jms-cluster/jms-commons/pom.xml | 4 ++-- .../jms-cluster/jms-geoserver/pom.xml | 4 ++-- src/community/jms-cluster/pom.xml | 4 ++-- src/community/kmlppio/pom.xml | 4 ++-- src/community/mapml/pom.xml | 2 +- src/community/mbstyle/pom.xml | 4 ++-- src/community/mbtiles/pom.xml | 2 +- src/community/monitor-hibernate/pom.xml | 2 +- src/community/ncwms/pom.xml | 4 ++-- src/community/netcdf-ghrsst/pom.xml | 4 ++-- src/community/notification-common/pom.xml | 2 +- src/community/notification-geonode/pom.xml | 2 +- src/community/notification/pom.xml | 2 +- .../nsg-profiles/nsg-wfs-profile/pom.xml | 4 ++-- .../nsg-profiles/nsg-wmts-profile/pom.xml | 4 ++-- src/community/nsg-profiles/pom.xml | 4 ++-- src/community/ogcapi/ogcapi-core/pom.xml | 2 +- src/community/ogcapi/ogcapi-features/pom.xml | 2 +- src/community/ogcapi/ogcapi-styles/pom.xml | 2 +- src/community/ogcapi/pom.xml | 2 +- src/community/oseo/oseo-core/pom.xml | 4 ++-- src/community/oseo/oseo-rest/pom.xml | 4 ++-- src/community/oseo/pom.xml | 2 +- src/community/oseo/web-oseo/pom.xml | 4 ++-- src/community/ows-simulate/pom.xml | 4 ++-- src/community/params-extractor/pom.xml | 2 +- src/community/pgraster/pom.xml | 2 +- src/community/pom.xml | 2 +- src/community/programming-guide/pom.xml | 6 +++--- src/community/qos/pom.xml | 4 ++-- src/community/release/pom.xml | 2 +- src/community/rest-ext/pom.xml | 4 ++-- src/community/rest-upload/pom.xml | 4 ++-- src/community/s3-geotiff/pom.xml | 2 +- src/community/saml/pom.xml | 2 +- src/community/script/bsh/pom.xml | 2 +- src/community/script/core/pom.xml | 2 +- src/community/script/groovy/pom.xml | 2 +- src/community/script/js/pom.xml | 2 +- src/community/script/pom.xml | 2 +- src/community/script/py/pom.xml | 2 +- src/community/script/rb/pom.xml | 2 +- src/community/script/web/pom.xml | 6 +++--- src/community/security/keycloak/pom.xml | 4 ++-- src/community/security/oauth2-core/pom.xml | 4 ++-- src/community/security/oauth2-geonode/pom.xml | 4 ++-- src/community/security/oauth2-github/pom.xml | 4 ++-- src/community/security/oauth2-google/pom.xml | 4 ++-- .../security/oauth2-openid-connect/pom.xml | 4 ++-- src/community/security/pom.xml | 4 ++-- src/community/solr/pom.xml | 4 ++-- src/community/spatialite/pom.xml | 8 ++++---- src/community/taskmanager/core/pom.xml | 4 ++-- src/community/taskmanager/pom.xml | 4 ++-- src/community/taskmanager/s3/pom.xml | 4 ++-- src/community/web-ogr/pom.xml | 4 ++-- src/community/web-resource/pom.xml | 2 +- src/community/wfs3/pom.xml | 2 +- src/community/wms-eo/pom.xml | 2 +- src/community/wmts-multi-dimensional/pom.xml | 4 ++-- src/community/wmts-styles/pom.xml | 4 ++-- src/community/wps-download/pom.xml | 4 ++-- src/community/wps-jdbc/pom.xml | 2 +- src/community/wps-remote/pom.xml | 2 +- src/community/wps-sextante/pom.xml | 2 +- .../app-schema-indexes-test/pom.xml | 2 +- .../app-schema/app-schema-mongo-test/pom.xml | 2 +- .../app-schema/app-schema-oracle-test/pom.xml | 2 +- .../app-schema-postgis-test/pom.xml | 2 +- .../app-schema/app-schema-solr-test/pom.xml | 2 +- .../app-schema/app-schema-test/pom.xml | 2 +- src/extension/app-schema/pom.xml | 2 +- .../sample-data-access-test/pom.xml | 2 +- src/extension/arcsde/pom.xml | 2 +- src/extension/authkey/pom.xml | 2 +- src/extension/charts/pom.xml | 2 +- src/extension/control-flow/pom.xml | 4 ++-- src/extension/css/pom.xml | 4 ++-- src/extension/csw/api/pom.xml | 2 +- src/extension/csw/core/pom.xml | 2 +- src/extension/csw/pom.xml | 4 ++-- src/extension/csw/simple-store/pom.xml | 2 +- src/extension/csw/web-csw/pom.xml | 4 ++-- src/extension/db2/pom.xml | 2 +- src/extension/dxf/core/pom.xml | 4 ++-- src/extension/dxf/pom.xml | 4 ++-- src/extension/dxf/wps/pom.xml | 4 ++-- src/extension/excel/pom.xml | 2 +- src/extension/feature-pregeneralized/pom.xml | 4 ++-- src/extension/gdal/pom.xml | 2 +- src/extension/geofence-server/pom.xml | 4 ++-- src/extension/geofence/pom.xml | 4 ++-- src/extension/grib/pom.xml | 2 +- src/extension/h2/pom.xml | 2 +- src/extension/imagemap/pom.xml | 2 +- src/extension/imagemosaic-jdbc/pom.xml | 2 +- src/extension/importer/bdb/pom.xml | 2 +- src/extension/importer/core/pom.xml | 2 +- src/extension/importer/pom.xml | 2 +- src/extension/importer/rest/pom.xml | 2 +- src/extension/importer/web/pom.xml | 2 +- src/extension/inspire/pom.xml | 4 ++-- src/extension/jp2k/pom.xml | 2 +- src/extension/libjpeg-turbo/pom.xml | 4 ++-- src/extension/mongodb/pom.xml | 4 ++-- src/extension/monitor/core/pom.xml | 10 +++++----- src/extension/monitor/pom.xml | 10 +++++----- src/extension/mysql/pom.xml | 2 +- src/extension/netcdf-out/pom.xml | 2 +- src/extension/netcdf/pom.xml | 2 +- src/extension/ogr/ogr-core/pom.xml | 2 +- src/extension/ogr/ogr-wfs/pom.xml | 2 +- src/extension/ogr/ogr-wps/pom.xml | 2 +- src/extension/ogr/pom.xml | 2 +- src/extension/oracle/pom.xml | 2 +- src/extension/pom.xml | 2 +- src/extension/printing/pom.xml | 4 ++-- src/extension/querylayer/pom.xml | 2 +- src/extension/security/cas/pom.xml | 4 ++-- src/extension/security/pom.xml | 4 ++-- src/extension/security/web/pom.xml | 4 ++-- src/extension/security/web/web-cas/pom.xml | 4 ++-- src/extension/sldService/pom.xml | 10 +++++----- src/extension/sqlserver/pom.xml | 2 +- src/extension/teradata/pom.xml | 2 +- src/extension/vectortiles/pom.xml | 2 +- src/extension/wcs2_0-eo/core/pom.xml | 2 +- src/extension/wcs2_0-eo/pom.xml | 2 +- src/extension/wcs2_0-eo/web/pom.xml | 2 +- src/extension/wps/pom.xml | 2 +- src/extension/wps/web-wps/pom.xml | 2 +- .../wps/wps-cluster-hazelcast/pom.xml | 2 +- src/extension/wps/wps-core/pom.xml | 2 +- src/extension/xslt/pom.xml | 2 +- src/extension/ysld/pom.xml | 4 ++-- src/gwc/pom.xml | 2 +- src/kml/pom.xml | 2 +- src/main/pom.xml | 2 +- src/maven/archetype/pom.xml | 2 +- src/maven/archetype/webPlugin/pom.xml | 2 +- .../resources/archetype-resources/pom.xml | 6 +++--- src/maven/archetype/wfsOutputFormat/pom.xml | 2 +- .../resources/archetype-resources/pom.xml | 6 +++--- src/maven/config/pom.xml | 2 +- src/maven/pom.xml | 2 +- src/ows/pom.xml | 2 +- src/platform/pom.xml | 2 +- src/pom.xml | 10 +++++----- src/release/bin.xml | 20 +++++++++---------- src/release/installer/mac/console/pom.xml | 2 +- src/release/installer/win/GeoServerEXE.nsi | 2 +- src/release/installer/win/wrapper.conf | 4 ++-- src/release/pom.xml | 2 +- src/rest/pom.xml | 2 +- src/restconfig-wcs/pom.xml | 2 +- src/restconfig-wfs/pom.xml | 2 +- src/restconfig-wms/pom.xml | 2 +- src/restconfig/pom.xml | 2 +- src/security/jdbc/pom.xml | 4 ++-- src/security/ldap/pom.xml | 4 ++-- src/security/pom.xml | 4 ++-- src/security/security-tests/pom.xml | 4 ++-- src/wcs/pom.xml | 2 +- src/wcs1_0/pom.xml | 2 +- src/wcs1_1/pom.xml | 2 +- src/wcs2_0/pom.xml | 2 +- src/web/app/pom.xml | 14 ++++++------- src/web/core/pom.xml | 4 ++-- src/web/demo/pom.xml | 4 ++-- src/web/gwc/pom.xml | 4 ++-- src/web/pom.xml | 4 ++-- src/web/rest/pom.xml | 4 ++-- src/web/security/core/pom.xml | 4 ++-- src/web/security/jdbc/pom.xml | 4 ++-- src/web/security/ldap/pom.xml | 4 ++-- src/web/security/pom.xml | 4 ++-- src/web/wcs/pom.xml | 4 ++-- src/web/wfs/pom.xml | 4 ++-- src/web/wms/pom.xml | 4 ++-- src/wfs/pom.xml | 2 +- src/wms/pom.xml | 2 +- 215 files changed, 337 insertions(+), 337 deletions(-) diff --git a/doc/en/developer/source/conf.py b/doc/en/developer/source/conf.py index e71bf25b2cf..4830ff91804 100644 --- a/doc/en/developer/source/conf.py +++ b/doc/en/developer/source/conf.py @@ -50,7 +50,7 @@ # The short X.Y version. version = '2.16' # The full version, including alpha/beta/rc tags. -release = '2.16-SNAPSHOT' +release = '2.16.0' # Users don't need to see the "SNAPSHOT" notation when it's there if release.find('SNAPSHOT') != -1: release = '2.16.x' diff --git a/doc/en/docguide/source/conf.py b/doc/en/docguide/source/conf.py index c7508ca71b7..2a881886079 100644 --- a/doc/en/docguide/source/conf.py +++ b/doc/en/docguide/source/conf.py @@ -50,7 +50,7 @@ # The short X.Y version. version = '2.16' # The full version, including alpha/beta/rc tags. -release = '2.16-SNAPSHOT' +release = '2.16.0' # Users don't need to see the "SNAPSHOT" notation when it's there if release.find('SNAPSHOT') != -1: release = '2.16.x' diff --git a/doc/en/user/source/conf.py b/doc/en/user/source/conf.py index e7e75a9ae61..e5e5c660abd 100644 --- a/doc/en/user/source/conf.py +++ b/doc/en/user/source/conf.py @@ -50,7 +50,7 @@ # The short X.Y version. version = '2.16' # The full version, including alpha/beta/rc tags. -release = '2.16-SNAPSHOT' +release = '2.16.0' # Users don't need to see the "SNAPSHOT" notation when it's there if release.find('SNAPSHOT') != -1: release = '2.16.x' diff --git a/src/community/app-schema/pom.xml b/src/community/app-schema/pom.xml index a9627845fc2..779bd7322ad 100644 --- a/src/community/app-schema/pom.xml +++ b/src/community/app-schema/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/app-schema/webservice-test/pom.xml b/src/community/app-schema/webservice-test/pom.xml index 92e4ae23d14..a8cfa3d71ca 100644 --- a/src/community/app-schema/webservice-test/pom.xml +++ b/src/community/app-schema/webservice-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.community gs-app-schema-community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/backup-restore/core/pom.xml b/src/community/backup-restore/core/pom.xml index a60c01a1230..f619225e175 100644 --- a/src/community/backup-restore/core/pom.xml +++ b/src/community/backup-restore/core/pom.xml @@ -7,7 +7,7 @@ org.geoserver.community gs-backup-restore - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community.backuprestore diff --git a/src/community/backup-restore/extension/pom.xml b/src/community/backup-restore/extension/pom.xml index 27f7e85d5fc..f1f6fcc5bc1 100644 --- a/src/community/backup-restore/extension/pom.xml +++ b/src/community/backup-restore/extension/pom.xml @@ -7,7 +7,7 @@ org.geoserver.community gs-backup-restore - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community.backuprestore diff --git a/src/community/backup-restore/pom.xml b/src/community/backup-restore/pom.xml index 58c6d8edf64..d3597159e0f 100644 --- a/src/community/backup-restore/pom.xml +++ b/src/community/backup-restore/pom.xml @@ -7,7 +7,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/backup-restore/rest/pom.xml b/src/community/backup-restore/rest/pom.xml index 7151b759761..5426aa36f61 100644 --- a/src/community/backup-restore/rest/pom.xml +++ b/src/community/backup-restore/rest/pom.xml @@ -7,7 +7,7 @@ org.geoserver.community gs-backup-restore - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community.backuprestore diff --git a/src/community/backup-restore/web/pom.xml b/src/community/backup-restore/web/pom.xml index 7ee7be916ff..66359b4f81c 100644 --- a/src/community/backup-restore/web/pom.xml +++ b/src/community/backup-restore/web/pom.xml @@ -7,7 +7,7 @@ org.geoserver.community gs-backup-restore - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community.backuprestore diff --git a/src/community/colormap/pom.xml b/src/community/colormap/pom.xml index 26d0ca24739..a0a5d440d2c 100644 --- a/src/community/colormap/pom.xml +++ b/src/community/colormap/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/csw-iso/pom.xml b/src/community/csw-iso/pom.xml index 8d4e9d5c762..62327251237 100644 --- a/src/community/csw-iso/pom.xml +++ b/src/community/csw-iso/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.csw diff --git a/src/community/dds/pom.xml b/src/community/dds/pom.xml index c4a8a44d8fb..62e9a6d2ba0 100755 --- a/src/community/dds/pom.xml +++ b/src/community/dds/pom.xml @@ -14,13 +14,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-dds jar - 2.16-SNAPSHOT + 2.16.0 WorldWind Format Module diff --git a/src/community/dyndimension/pom.xml b/src/community/dyndimension/pom.xml index 51f931aa80e..9fb42994a6e 100644 --- a/src/community/dyndimension/pom.xml +++ b/src/community/dyndimension/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/gdal/gdal-wcs/pom.xml b/src/community/gdal/gdal-wcs/pom.xml index ca55dcd5309..0201adc5e09 100644 --- a/src/community/gdal/gdal-wcs/pom.xml +++ b/src/community/gdal/gdal-wcs/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-gdal - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/gdal/gdal-wps/pom.xml b/src/community/gdal/gdal-wps/pom.xml index 0dfb52034d3..74204058686 100644 --- a/src/community/gdal/gdal-wps/pom.xml +++ b/src/community/gdal/gdal-wps/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-gdal - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/gdal/pom.xml b/src/community/gdal/pom.xml index b0d33d723c1..41633cc3f16 100644 --- a/src/community/gdal/pom.xml +++ b/src/community/gdal/pom.xml @@ -11,7 +11,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/geogig/pom.xml b/src/community/geogig/pom.xml index 0853de0fae8..6b1e2c7cbbe 100644 --- a/src/community/geogig/pom.xml +++ b/src/community/geogig/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/geomesa/pom.xml b/src/community/geomesa/pom.xml index f919aedbbb2..1cffacf1a0f 100644 --- a/src/community/geomesa/pom.xml +++ b/src/community/geomesa/pom.xml @@ -12,13 +12,13 @@ application directory. org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-web-geomesa jar - 2.16-SNAPSHOT + 2.16.0 GeoMesa Web Module GeoMesa GeoServer extensions diff --git a/src/community/geopkg/pom.xml b/src/community/geopkg/pom.xml index 3c6c277a9c0..e516ff9ab4f 100644 --- a/src/community/geopkg/pom.xml +++ b/src/community/geopkg/pom.xml @@ -9,7 +9,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-geopkg diff --git a/src/community/geostyler/pom.xml b/src/community/geostyler/pom.xml index 7084488a003..e01c48bce2e 100644 --- a/src/community/geostyler/pom.xml +++ b/src/community/geostyler/pom.xml @@ -8,7 +8,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/gpxppio/pom.xml b/src/community/gpxppio/pom.xml index d222e56e11c..56a26fc8f07 100644 --- a/src/community/gpxppio/pom.xml +++ b/src/community/gpxppio/pom.xml @@ -11,12 +11,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-gpxppio jar - 2.16-SNAPSHOT + 2.16.0 GPX PPIO for WPS diff --git a/src/community/gwc-azure-blob/pom.xml b/src/community/gwc-azure-blob/pom.xml index 10ef2d582a0..57a6968dd47 100644 --- a/src/community/gwc-azure-blob/pom.xml +++ b/src/community/gwc-azure-blob/pom.xml @@ -7,13 +7,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-gwc-azure-blob jar - 2.16-SNAPSHOT + 2.16.0 GeoWebCache Azure blob GeoWebCache Azure BLOB support plugin diff --git a/src/community/gwc-distributed/pom.xml b/src/community/gwc-distributed/pom.xml index 7388eefc7eb..3f462d1d4a2 100644 --- a/src/community/gwc-distributed/pom.xml +++ b/src/community/gwc-distributed/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-gwc-distributed diff --git a/src/community/gwc-s3/pom.xml b/src/community/gwc-s3/pom.xml index 8359516071d..5a269a19ea3 100644 --- a/src/community/gwc-s3/pom.xml +++ b/src/community/gwc-s3/pom.xml @@ -7,13 +7,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-gwc-s3 jar - 2.16-SNAPSHOT + 2.16.0 GeoWebCache S3 GeoWebCache S3 support plugin diff --git a/src/community/gwc-sqlite/pom.xml b/src/community/gwc-sqlite/pom.xml index 18eeaf91095..75e2b4ad018 100644 --- a/src/community/gwc-sqlite/pom.xml +++ b/src/community/gwc-sqlite/pom.xml @@ -5,12 +5,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-gwc-sqlite jar - 2.16-SNAPSHOT + 2.16.0 GeoWebCache SQLite diff --git a/src/community/hello/pom.xml b/src/community/hello/pom.xml index 84e68083804..abd717c7afc 100644 --- a/src/community/hello/pom.xml +++ b/src/community/hello/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver @@ -25,7 +25,7 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/hello_web/pom.xml b/src/community/hello_web/pom.xml index c70652d7205..fcd1385d58e 100644 --- a/src/community/hello_web/pom.xml +++ b/src/community/hello_web/pom.xml @@ -6,7 +6,7 @@ org.geoserver gs-web2 - 2.16-SNAPSHOT + 2.16.0 org.geoserver @@ -19,7 +19,7 @@ org.geoserver.web gs-web-core - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/hz-cluster/pom.xml b/src/community/hz-cluster/pom.xml index a6ed31f3a4b..6325b56831f 100644 --- a/src/community/hz-cluster/pom.xml +++ b/src/community/hz-cluster/pom.xml @@ -5,7 +5,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/importer-fgdb/pom.xml b/src/community/importer-fgdb/pom.xml index f2839342731..60783506627 100644 --- a/src/community/importer-fgdb/pom.xml +++ b/src/community/importer-fgdb/pom.xml @@ -7,7 +7,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/jdbc-metrics/pom.xml b/src/community/jdbc-metrics/pom.xml index 96b7aed3ed6..55f544803b4 100644 --- a/src/community/jdbc-metrics/pom.xml +++ b/src/community/jdbc-metrics/pom.xml @@ -7,14 +7,14 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jdbc-metrics JDBC Metrics Plugin jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/jdbcconfig/pom.xml b/src/community/jdbcconfig/pom.xml index 6337ac9a375..c294dd4d4d7 100644 --- a/src/community/jdbcconfig/pom.xml +++ b/src/community/jdbcconfig/pom.xml @@ -3,12 +3,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jdbcconfig jar - 2.16-SNAPSHOT + 2.16.0 GeoServer JDBC KV Catalog true diff --git a/src/community/jdbcstore/pom.xml b/src/community/jdbcstore/pom.xml index af6c9e57a2a..f7c01fa2619 100644 --- a/src/community/jdbcstore/pom.xml +++ b/src/community/jdbcstore/pom.xml @@ -3,12 +3,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jdbcstore jar - 2.16-SNAPSHOT + 2.16.0 GeoServer JDBC Configuration Resource Store diff --git a/src/community/jms-cluster/activemqBroker/pom.xml b/src/community/jms-cluster/activemqBroker/pom.xml index 000a0c08f00..6be0ac35740 100644 --- a/src/community/jms-cluster/activemqBroker/pom.xml +++ b/src/community/jms-cluster/activemqBroker/pom.xml @@ -7,12 +7,12 @@ org.geoserver.community gs-jms-cluster-container - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community activemqBroker - 2.16-SNAPSHOT + 2.16.0 war ActiveMQ diff --git a/src/community/jms-cluster/jms-commons/pom.xml b/src/community/jms-cluster/jms-commons/pom.xml index a47dfee2eb4..31d91db5a9d 100644 --- a/src/community/jms-cluster/jms-commons/pom.xml +++ b/src/community/jms-cluster/jms-commons/pom.xml @@ -7,12 +7,12 @@ org.geoserver.community gs-jms-cluster-container - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jms-commons - 2.16-SNAPSHOT + 2.16.0 jar GeoServer JMS clustering Commons module diff --git a/src/community/jms-cluster/jms-geoserver/pom.xml b/src/community/jms-cluster/jms-geoserver/pom.xml index 0b2f5c52405..e4dc63dd0ab 100644 --- a/src/community/jms-cluster/jms-geoserver/pom.xml +++ b/src/community/jms-cluster/jms-geoserver/pom.xml @@ -7,12 +7,12 @@ org.geoserver.community gs-jms-cluster-container - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jms-geoserver - 2.16-SNAPSHOT + 2.16.0 jar GeoServer JMS clustering module diff --git a/src/community/jms-cluster/pom.xml b/src/community/jms-cluster/pom.xml index c675bb51a61..7f89107e2cb 100644 --- a/src/community/jms-cluster/pom.xml +++ b/src/community/jms-cluster/pom.xml @@ -5,13 +5,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-jms-cluster-container - 2.16-SNAPSHOT + 2.16.0 pom GeoServer JMS based clustering modules diff --git a/src/community/kmlppio/pom.xml b/src/community/kmlppio/pom.xml index ca46f0ef87a..5c7751efb5b 100644 --- a/src/community/kmlppio/pom.xml +++ b/src/community/kmlppio/pom.xml @@ -12,12 +12,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-kmlppio jar - 2.16-SNAPSHOT + 2.16.0 KML PPIO for WPS diff --git a/src/community/mapml/pom.xml b/src/community/mapml/pom.xml index 54c741d4c2c..7f0571ee535 100644 --- a/src/community/mapml/pom.xml +++ b/src/community/mapml/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/mbstyle/pom.xml b/src/community/mbstyle/pom.xml index a01fc76910f..208f03094d4 100644 --- a/src/community/mbstyle/pom.xml +++ b/src/community/mbstyle/pom.xml @@ -5,14 +5,14 @@ community org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 org.geoserver.community gs-mbstyle jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Mapbox Styling diff --git a/src/community/mbtiles/pom.xml b/src/community/mbtiles/pom.xml index 2669af9c4f1..8768654c82d 100644 --- a/src/community/mbtiles/pom.xml +++ b/src/community/mbtiles/pom.xml @@ -9,7 +9,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-mbtiles diff --git a/src/community/monitor-hibernate/pom.xml b/src/community/monitor-hibernate/pom.xml index d24a5e1e1a5..f10333de2df 100644 --- a/src/community/monitor-hibernate/pom.xml +++ b/src/community/monitor-hibernate/pom.xml @@ -8,7 +8,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-monitor-hibernate diff --git a/src/community/ncwms/pom.xml b/src/community/ncwms/pom.xml index 74fed0478ac..05e1daefa9b 100755 --- a/src/community/ncwms/pom.xml +++ b/src/community/ncwms/pom.xml @@ -10,13 +10,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-ncwms jar - 2.16-SNAPSHOT + 2.16.0 ncWMS compatibility extension diff --git a/src/community/netcdf-ghrsst/pom.xml b/src/community/netcdf-ghrsst/pom.xml index 6f5c961454d..6a61296f973 100755 --- a/src/community/netcdf-ghrsst/pom.xml +++ b/src/community/netcdf-ghrsst/pom.xml @@ -10,13 +10,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-netcdf-ghrsst jar - 2.16-SNAPSHOT + 2.16.0 NetCDF GHRSST encoder diff --git a/src/community/notification-common/pom.xml b/src/community/notification-common/pom.xml index 766d1e10616..e64674fc324 100644 --- a/src/community/notification-common/pom.xml +++ b/src/community/notification-common/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-notification-common diff --git a/src/community/notification-geonode/pom.xml b/src/community/notification-geonode/pom.xml index 5cc86c41571..4d9168f016c 100644 --- a/src/community/notification-geonode/pom.xml +++ b/src/community/notification-geonode/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-notification-geonode diff --git a/src/community/notification/pom.xml b/src/community/notification/pom.xml index e5d2b0f6c21..b519c3c65fd 100644 --- a/src/community/notification/pom.xml +++ b/src/community/notification/pom.xml @@ -5,7 +5,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/nsg-profiles/nsg-wfs-profile/pom.xml b/src/community/nsg-profiles/nsg-wfs-profile/pom.xml index 0c4d54c3722..d06bfbcf9c9 100644 --- a/src/community/nsg-profiles/nsg-wfs-profile/pom.xml +++ b/src/community/nsg-profiles/nsg-wfs-profile/pom.xml @@ -5,12 +5,12 @@ org.geoserver.community gs-nsg-profiles - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-nsg-wfs-profile jar - 2.16-SNAPSHOT + 2.16.0 NSG WFS 2.0 Profile diff --git a/src/community/nsg-profiles/nsg-wmts-profile/pom.xml b/src/community/nsg-profiles/nsg-wmts-profile/pom.xml index d091cb672f8..a7aaa8ad912 100644 --- a/src/community/nsg-profiles/nsg-wmts-profile/pom.xml +++ b/src/community/nsg-profiles/nsg-wmts-profile/pom.xml @@ -5,12 +5,12 @@ org.geoserver.community gs-nsg-profiles - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-nsg-wmts-profile jar - 2.16-SNAPSHOT + 2.16.0 NSG WMTS 1.0 Profile diff --git a/src/community/nsg-profiles/pom.xml b/src/community/nsg-profiles/pom.xml index 3d9429e934a..f582264d9a9 100644 --- a/src/community/nsg-profiles/pom.xml +++ b/src/community/nsg-profiles/pom.xml @@ -5,12 +5,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-nsg-profiles pom - 2.16-SNAPSHOT + 2.16.0 NSG Profiles diff --git a/src/community/ogcapi/ogcapi-core/pom.xml b/src/community/ogcapi/ogcapi-core/pom.xml index 81153fc3a7e..da3d26f4b77 100644 --- a/src/community/ogcapi/ogcapi-core/pom.xml +++ b/src/community/ogcapi/ogcapi-core/pom.xml @@ -11,7 +11,7 @@ org.geoserver.community gs-ogcapi - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/community/ogcapi/ogcapi-features/pom.xml b/src/community/ogcapi/ogcapi-features/pom.xml index f0ab108fd19..13e1e88012d 100644 --- a/src/community/ogcapi/ogcapi-features/pom.xml +++ b/src/community/ogcapi/ogcapi-features/pom.xml @@ -11,7 +11,7 @@ org.geoserver.community gs-ogcapi - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/community/ogcapi/ogcapi-styles/pom.xml b/src/community/ogcapi/ogcapi-styles/pom.xml index 6e4df0025b2..c5cce958060 100644 --- a/src/community/ogcapi/ogcapi-styles/pom.xml +++ b/src/community/ogcapi/ogcapi-styles/pom.xml @@ -11,7 +11,7 @@ org.geoserver.community gs-ogcapi - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/community/ogcapi/pom.xml b/src/community/ogcapi/pom.xml index 337a82fd2aa..02b01e2d152 100644 --- a/src/community/ogcapi/pom.xml +++ b/src/community/ogcapi/pom.xml @@ -11,7 +11,7 @@ community org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/community/oseo/oseo-core/pom.xml b/src/community/oseo/oseo-core/pom.xml index 2739018788f..5ee98cc9f81 100644 --- a/src/community/oseo/oseo-core/pom.xml +++ b/src/community/oseo/oseo-core/pom.xml @@ -8,14 +8,14 @@ org.geoserver.community gs-oseo - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-oseo-core OpenSearch for EO jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/oseo/oseo-rest/pom.xml b/src/community/oseo/oseo-rest/pom.xml index 240e9c8de25..7fee8cccd24 100644 --- a/src/community/oseo/oseo-rest/pom.xml +++ b/src/community/oseo/oseo-rest/pom.xml @@ -8,14 +8,14 @@ org.geoserver.community gs-oseo - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-oseo-rest OpenSearch for EO REST configuration API jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/oseo/pom.xml b/src/community/oseo/pom.xml index 3e255416666..ea68843b87a 100644 --- a/src/community/oseo/pom.xml +++ b/src/community/oseo/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/oseo/web-oseo/pom.xml b/src/community/oseo/web-oseo/pom.xml index 79c38893712..90c8477e0a8 100644 --- a/src/community/oseo/web-oseo/pom.xml +++ b/src/community/oseo/web-oseo/pom.xml @@ -8,14 +8,14 @@ org.geoserver.community gs-oseo - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-web-oseo OpenSearch for EO web UI jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/ows-simulate/pom.xml b/src/community/ows-simulate/pom.xml index 254b727daed..7688b477181 100644 --- a/src/community/ows-simulate/pom.xml +++ b/src/community/ows-simulate/pom.xml @@ -7,14 +7,14 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-ows-simulate OWS Dispatcher Simulate Plugin jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/params-extractor/pom.xml b/src/community/params-extractor/pom.xml index 42afa143ada..90780b328ee 100644 --- a/src/community/params-extractor/pom.xml +++ b/src/community/params-extractor/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/pgraster/pom.xml b/src/community/pgraster/pom.xml index 5687983c16d..017300c34c1 100644 --- a/src/community/pgraster/pom.xml +++ b/src/community/pgraster/pom.xml @@ -11,7 +11,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/pom.xml b/src/community/pom.xml index f0ec0a912ca..1c5dbc5ed79 100644 --- a/src/community/pom.xml +++ b/src/community/pom.xml @@ -8,7 +8,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/community/programming-guide/pom.xml b/src/community/programming-guide/pom.xml index b1968086ab0..c9bb6ff3fe7 100644 --- a/src/community/programming-guide/pom.xml +++ b/src/community/programming-guide/pom.xml @@ -12,13 +12,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-programming-guide jar - 2.16-SNAPSHOT + 2.16.0 Programming Guide Empty module for use with the Programming Guide examples @@ -26,7 +26,7 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/qos/pom.xml b/src/community/qos/pom.xml index 08ac7b505a6..c5fae45b4c5 100644 --- a/src/community/qos/pom.xml +++ b/src/community/qos/pom.xml @@ -10,13 +10,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-qos jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Quality of Service GetCapabilities module diff --git a/src/community/release/pom.xml b/src/community/release/pom.xml index 14f3f115927..fd42d5af4c4 100644 --- a/src/community/release/pom.xml +++ b/src/community/release/pom.xml @@ -11,7 +11,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-release diff --git a/src/community/rest-ext/pom.xml b/src/community/rest-ext/pom.xml index c6f3930cd1a..388ff5bb9d9 100644 --- a/src/community/rest-ext/pom.xml +++ b/src/community/rest-ext/pom.xml @@ -6,11 +6,11 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-rest-ext - 2.16-SNAPSHOT + 2.16.0 REST plugin community module http://maven.apache.org diff --git a/src/community/rest-upload/pom.xml b/src/community/rest-upload/pom.xml index a47e923375a..0d8463be7a0 100644 --- a/src/community/rest-upload/pom.xml +++ b/src/community/rest-upload/pom.xml @@ -10,13 +10,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-rest-upload jar - 2.16-SNAPSHOT + 2.16.0 Resumable REST Upload module diff --git a/src/community/s3-geotiff/pom.xml b/src/community/s3-geotiff/pom.xml index 8834bdff5f9..5c18a62da7e 100644 --- a/src/community/s3-geotiff/pom.xml +++ b/src/community/s3-geotiff/pom.xml @@ -5,7 +5,7 @@ community org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/community/saml/pom.xml b/src/community/saml/pom.xml index 990dc5ac0bb..37133f89e71 100644 --- a/src/community/saml/pom.xml +++ b/src/community/saml/pom.xml @@ -10,7 +10,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/script/bsh/pom.xml b/src/community/script/bsh/pom.xml index c536f6ef9fe..5c32810c8fa 100644 --- a/src/community/script/bsh/pom.xml +++ b/src/community/script/bsh/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-bsh diff --git a/src/community/script/core/pom.xml b/src/community/script/core/pom.xml index 26099d820cd..ad850f890ce 100644 --- a/src/community/script/core/pom.xml +++ b/src/community/script/core/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-core diff --git a/src/community/script/groovy/pom.xml b/src/community/script/groovy/pom.xml index 924dfa021e0..b1a725e4879 100644 --- a/src/community/script/groovy/pom.xml +++ b/src/community/script/groovy/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-groovy diff --git a/src/community/script/js/pom.xml b/src/community/script/js/pom.xml index 71753039288..1fb6e8d3053 100644 --- a/src/community/script/js/pom.xml +++ b/src/community/script/js/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-js diff --git a/src/community/script/pom.xml b/src/community/script/pom.xml index 60eb945ebde..ac6fa0931a3 100644 --- a/src/community/script/pom.xml +++ b/src/community/script/pom.xml @@ -9,7 +9,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-script diff --git a/src/community/script/py/pom.xml b/src/community/script/py/pom.xml index 1febc8f7b4f..59b743bddcf 100644 --- a/src/community/script/py/pom.xml +++ b/src/community/script/py/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-py diff --git a/src/community/script/rb/pom.xml b/src/community/script/rb/pom.xml index a1b550de046..a9165f9e6a7 100644 --- a/src/community/script/rb/pom.xml +++ b/src/community/script/rb/pom.xml @@ -9,7 +9,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-rb diff --git a/src/community/script/web/pom.xml b/src/community/script/web/pom.xml index e6a33b66f6a..07ad5c46413 100644 --- a/src/community/script/web/pom.xml +++ b/src/community/script/web/pom.xml @@ -10,7 +10,7 @@ org.geoserver.community gs-script - 2.16-SNAPSHOT + 2.16.0 org.geoserver.script gs-script-web @@ -20,7 +20,7 @@ org.geoserver.script gs-script-core - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web @@ -29,7 +29,7 @@ org.geoserver.web gs-web-core - 2.16-SNAPSHOT + 2.16.0 tests test diff --git a/src/community/security/keycloak/pom.xml b/src/community/security/keycloak/pom.xml index 36f7bce7079..222be076318 100644 --- a/src/community/security/keycloak/pom.xml +++ b/src/community/security/keycloak/pom.xml @@ -12,13 +12,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-keycloak jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Keycloak Security Plugin diff --git a/src/community/security/oauth2-core/pom.xml b/src/community/security/oauth2-core/pom.xml index a9d59174534..fd68a9eeea4 100644 --- a/src/community/security/oauth2-core/pom.xml +++ b/src/community/security/oauth2-core/pom.xml @@ -10,13 +10,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-oauth2-core jar - 2.16-SNAPSHOT + 2.16.0 GeoServer OAuth2 Connect Security Module - Core diff --git a/src/community/security/oauth2-geonode/pom.xml b/src/community/security/oauth2-geonode/pom.xml index d3c33f6af14..947b5cd2d40 100644 --- a/src/community/security/oauth2-geonode/pom.xml +++ b/src/community/security/oauth2-geonode/pom.xml @@ -10,13 +10,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-oauth2-geonode jar - 2.16-SNAPSHOT + 2.16.0 GeoServer OAuth2 Connect Security Module - GeoNode Token Service diff --git a/src/community/security/oauth2-github/pom.xml b/src/community/security/oauth2-github/pom.xml index 5a1732b11a5..bfbf345b064 100644 --- a/src/community/security/oauth2-github/pom.xml +++ b/src/community/security/oauth2-github/pom.xml @@ -10,13 +10,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-oauth2-github jar - 2.16-SNAPSHOT + 2.16.0 GeoServer OAuth2 Connect Security Module - GitHub Token Service diff --git a/src/community/security/oauth2-google/pom.xml b/src/community/security/oauth2-google/pom.xml index 6b8b1d8f12f..dedd9a01437 100644 --- a/src/community/security/oauth2-google/pom.xml +++ b/src/community/security/oauth2-google/pom.xml @@ -10,13 +10,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-oauth2-google jar - 2.16-SNAPSHOT + 2.16.0 GeoServer OAuth2 Connect Security Module - Google Token Service diff --git a/src/community/security/oauth2-openid-connect/pom.xml b/src/community/security/oauth2-openid-connect/pom.xml index 108fc3883ec..6c0753d794c 100644 --- a/src/community/security/oauth2-openid-connect/pom.xml +++ b/src/community/security/oauth2-openid-connect/pom.xml @@ -13,13 +13,13 @@ org.geoserver.community gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-sec-oauth2-openid-connect jar - 2.16-SNAPSHOT + 2.16.0 GeoServer OAuth2 Connect Security Module - OpenId Connect diff --git a/src/community/security/pom.xml b/src/community/security/pom.xml index 5b38029ce4e..d283bf53150 100644 --- a/src/community/security/pom.xml +++ b/src/community/security/pom.xml @@ -12,13 +12,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-security pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Security Community Modules diff --git a/src/community/solr/pom.xml b/src/community/solr/pom.xml index fed9df99d8f..4ea3c1b8c17 100644 --- a/src/community/solr/pom.xml +++ b/src/community/solr/pom.xml @@ -10,13 +10,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-web-solr jar - 2.16-SNAPSHOT + 2.16.0 Solr Module diff --git a/src/community/spatialite/pom.xml b/src/community/spatialite/pom.xml index 18ef8716ecd..4e445ad183b 100644 --- a/src/community/spatialite/pom.xml +++ b/src/community/spatialite/pom.xml @@ -11,7 +11,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community @@ -25,7 +25,7 @@ org.geoserver gs-wfs - 2.16-SNAPSHOT + 2.16.0 junit @@ -35,14 +35,14 @@ org.geoserver gs-wfs - 2.16-SNAPSHOT + 2.16.0 tests test org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 tests test diff --git a/src/community/taskmanager/core/pom.xml b/src/community/taskmanager/core/pom.xml index 74b4f93ef83..a63b56e646b 100644 --- a/src/community/taskmanager/core/pom.xml +++ b/src/community/taskmanager/core/pom.xml @@ -7,13 +7,13 @@ org.geoserver.community gs-taskmanager - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-taskmanager-core jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Task Manager Core diff --git a/src/community/taskmanager/pom.xml b/src/community/taskmanager/pom.xml index f53c5ba6543..fca5bfeeca9 100644 --- a/src/community/taskmanager/pom.xml +++ b/src/community/taskmanager/pom.xml @@ -7,13 +7,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-taskmanager pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Task Manager diff --git a/src/community/taskmanager/s3/pom.xml b/src/community/taskmanager/s3/pom.xml index 4c4c7c369bb..cd12fb3ef6a 100644 --- a/src/community/taskmanager/s3/pom.xml +++ b/src/community/taskmanager/s3/pom.xml @@ -7,13 +7,13 @@ org.geoserver.community gs-taskmanager - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-taskmanager-s3 jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Task Manager S3 diff --git a/src/community/web-ogr/pom.xml b/src/community/web-ogr/pom.xml index 4a2a54048f0..3d6a102dcc6 100644 --- a/src/community/web-ogr/pom.xml +++ b/src/community/web-ogr/pom.xml @@ -5,12 +5,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-web-ogr jar - 2.16-SNAPSHOT + 2.16.0 OGR datastore panel diff --git a/src/community/web-resource/pom.xml b/src/community/web-resource/pom.xml index d32010feaa3..c66f38d7a78 100644 --- a/src/community/web-resource/pom.xml +++ b/src/community/web-resource/pom.xml @@ -3,7 +3,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-web-resource diff --git a/src/community/wfs3/pom.xml b/src/community/wfs3/pom.xml index 72baa046c1f..0d54cb7dc97 100644 --- a/src/community/wfs3/pom.xml +++ b/src/community/wfs3/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/wms-eo/pom.xml b/src/community/wms-eo/pom.xml index 4444cf7860d..2a9d5554a31 100644 --- a/src/community/wms-eo/pom.xml +++ b/src/community/wms-eo/pom.xml @@ -6,7 +6,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/wmts-multi-dimensional/pom.xml b/src/community/wmts-multi-dimensional/pom.xml index 91c1dadf1c3..137f74d445e 100644 --- a/src/community/wmts-multi-dimensional/pom.xml +++ b/src/community/wmts-multi-dimensional/pom.xml @@ -5,12 +5,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-wmts-multi-dimensional jar - 2.16-SNAPSHOT + 2.16.0 WMTS Multi Dimensional diff --git a/src/community/wmts-styles/pom.xml b/src/community/wmts-styles/pom.xml index 61022843c75..534f9df386c 100644 --- a/src/community/wmts-styles/pom.xml +++ b/src/community/wmts-styles/pom.xml @@ -5,12 +5,12 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-wmts-styles jar - 2.16-SNAPSHOT + 2.16.0 WMTS Style editing extension diff --git a/src/community/wps-download/pom.xml b/src/community/wps-download/pom.xml index bb756e96e2a..17b794ee103 100644 --- a/src/community/wps-download/pom.xml +++ b/src/community/wps-download/pom.xml @@ -6,13 +6,13 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community gs-wps-download jar - 2.16-SNAPSHOT + 2.16.0 DownloadProcess diff --git a/src/community/wps-jdbc/pom.xml b/src/community/wps-jdbc/pom.xml index 44f1c40115b..3bab6a7017f 100644 --- a/src/community/wps-jdbc/pom.xml +++ b/src/community/wps-jdbc/pom.xml @@ -8,7 +8,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/community/wps-remote/pom.xml b/src/community/wps-remote/pom.xml index 3ca53e3357c..499324ba1aa 100644 --- a/src/community/wps-remote/pom.xml +++ b/src/community/wps-remote/pom.xml @@ -9,7 +9,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/community/wps-sextante/pom.xml b/src/community/wps-sextante/pom.xml index 79e1cf2a3c1..631adbdf06d 100644 --- a/src/community/wps-sextante/pom.xml +++ b/src/community/wps-sextante/pom.xml @@ -12,7 +12,7 @@ org.geoserver community - 2.16-SNAPSHOT + 2.16.0 org.geoserver.community diff --git a/src/extension/app-schema/app-schema-indexes-test/pom.xml b/src/extension/app-schema/app-schema-indexes-test/pom.xml index 360edcf7c6d..abe26fc13bc 100644 --- a/src/extension/app-schema/app-schema-indexes-test/pom.xml +++ b/src/extension/app-schema/app-schema-indexes-test/pom.xml @@ -7,7 +7,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 gs-app-schema-indexes-test diff --git a/src/extension/app-schema/app-schema-mongo-test/pom.xml b/src/extension/app-schema/app-schema-mongo-test/pom.xml index 46d93f8059a..284624e6d03 100644 --- a/src/extension/app-schema/app-schema-mongo-test/pom.xml +++ b/src/extension/app-schema/app-schema-mongo-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/app-schema/app-schema-oracle-test/pom.xml b/src/extension/app-schema/app-schema-oracle-test/pom.xml index 4c1291b2a73..95048e3981e 100644 --- a/src/extension/app-schema/app-schema-oracle-test/pom.xml +++ b/src/extension/app-schema/app-schema-oracle-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/app-schema/app-schema-postgis-test/pom.xml b/src/extension/app-schema/app-schema-postgis-test/pom.xml index 3b87c841209..d540e6ac90a 100644 --- a/src/extension/app-schema/app-schema-postgis-test/pom.xml +++ b/src/extension/app-schema/app-schema-postgis-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/app-schema/app-schema-solr-test/pom.xml b/src/extension/app-schema/app-schema-solr-test/pom.xml index 9e2d0fc4a69..c0863fd12b3 100644 --- a/src/extension/app-schema/app-schema-solr-test/pom.xml +++ b/src/extension/app-schema/app-schema-solr-test/pom.xml @@ -7,7 +7,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 gs-app-schema-solr-test diff --git a/src/extension/app-schema/app-schema-test/pom.xml b/src/extension/app-schema/app-schema-test/pom.xml index 7978ec4a47a..7f0fc570b83 100644 --- a/src/extension/app-schema/app-schema-test/pom.xml +++ b/src/extension/app-schema/app-schema-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/app-schema/pom.xml b/src/extension/app-schema/pom.xml index 269854d4feb..f51ac6e59e2 100644 --- a/src/extension/app-schema/pom.xml +++ b/src/extension/app-schema/pom.xml @@ -12,7 +12,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/app-schema/sample-data-access-test/pom.xml b/src/extension/app-schema/sample-data-access-test/pom.xml index f7df9a5eea9..df86186ca83 100644 --- a/src/extension/app-schema/sample-data-access-test/pom.xml +++ b/src/extension/app-schema/sample-data-access-test/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-app-schema - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/arcsde/pom.xml b/src/extension/arcsde/pom.xml index c80c57640a6..1057aea5a12 100644 --- a/src/extension/arcsde/pom.xml +++ b/src/extension/arcsde/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/authkey/pom.xml b/src/extension/authkey/pom.xml index a278e3cf76d..4570847a518 100644 --- a/src/extension/authkey/pom.xml +++ b/src/extension/authkey/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/charts/pom.xml b/src/extension/charts/pom.xml index 785ff047540..de87e7a66a4 100644 --- a/src/extension/charts/pom.xml +++ b/src/extension/charts/pom.xml @@ -3,7 +3,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/extension/control-flow/pom.xml b/src/extension/control-flow/pom.xml index 5df3b8c68f1..384f5a09b95 100644 --- a/src/extension/control-flow/pom.xml +++ b/src/extension/control-flow/pom.xml @@ -10,11 +10,11 @@ extension org.geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-control-flow - 2.16-SNAPSHOT + 2.16.0 OWS request flow controller diff --git a/src/extension/css/pom.xml b/src/extension/css/pom.xml index f433aad3c75..461e8dd7be5 100644 --- a/src/extension/css/pom.xml +++ b/src/extension/css/pom.xml @@ -3,12 +3,12 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-css jar - 2.16-SNAPSHOT + 2.16.0 GeoServer CSS Styling diff --git a/src/extension/csw/api/pom.xml b/src/extension/csw/api/pom.xml index e4e93f3a735..7f07221b89d 100644 --- a/src/extension/csw/api/pom.xml +++ b/src/extension/csw/api/pom.xml @@ -12,7 +12,7 @@ org.geoserver gs-csw - 2.16-SNAPSHOT + 2.16.0 org.geoserver.csw diff --git a/src/extension/csw/core/pom.xml b/src/extension/csw/core/pom.xml index 02fabe57ffa..13cf45048de 100644 --- a/src/extension/csw/core/pom.xml +++ b/src/extension/csw/core/pom.xml @@ -12,7 +12,7 @@ org.geoserver gs-csw - 2.16-SNAPSHOT + 2.16.0 org.geoserver.csw diff --git a/src/extension/csw/pom.xml b/src/extension/csw/pom.xml index 399c3bd0ee1..47f9084adc6 100644 --- a/src/extension/csw/pom.xml +++ b/src/extension/csw/pom.xml @@ -12,7 +12,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver @@ -24,7 +24,7 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/extension/csw/simple-store/pom.xml b/src/extension/csw/simple-store/pom.xml index 9599f02fae1..f912068b4d6 100644 --- a/src/extension/csw/simple-store/pom.xml +++ b/src/extension/csw/simple-store/pom.xml @@ -12,7 +12,7 @@ org.geoserver gs-csw - 2.16-SNAPSHOT + 2.16.0 org.geoserver.csw diff --git a/src/extension/csw/web-csw/pom.xml b/src/extension/csw/web-csw/pom.xml index e67316bf15b..f4711d5139c 100644 --- a/src/extension/csw/web-csw/pom.xml +++ b/src/extension/csw/web-csw/pom.xml @@ -12,13 +12,13 @@ org.geoserver gs-csw - 2.16-SNAPSHOT + 2.16.0 org.geoserver.csw gs-web-csw jar - 2.16-SNAPSHOT + 2.16.0 CSW UI Module diff --git a/src/extension/db2/pom.xml b/src/extension/db2/pom.xml index cd06493ecfc..061a7b6224a 100644 --- a/src/extension/db2/pom.xml +++ b/src/extension/db2/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/dxf/core/pom.xml b/src/extension/dxf/core/pom.xml index 095b45474fb..c262a32283f 100644 --- a/src/extension/dxf/core/pom.xml +++ b/src/extension/dxf/core/pom.xml @@ -13,13 +13,13 @@ org.geoserver.extension gs-dxf - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-dxf-core jar - 2.16-SNAPSHOT + 2.16.0 DXF WFS output format diff --git a/src/extension/dxf/pom.xml b/src/extension/dxf/pom.xml index f06b12f04f1..63ea0bc8293 100644 --- a/src/extension/dxf/pom.xml +++ b/src/extension/dxf/pom.xml @@ -13,13 +13,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-dxf pom - 2.16-SNAPSHOT + 2.16.0 DXF WFS output format and WPS PPIO diff --git a/src/extension/dxf/wps/pom.xml b/src/extension/dxf/wps/pom.xml index c72e80d853e..017bdef0caf 100644 --- a/src/extension/dxf/wps/pom.xml +++ b/src/extension/dxf/wps/pom.xml @@ -13,13 +13,13 @@ org.geoserver.extension gs-dxf - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-dxf-wps jar - 2.16-SNAPSHOT + 2.16.0 DXF WPS PPIO diff --git a/src/extension/excel/pom.xml b/src/extension/excel/pom.xml index 3893992d22c..ed030e63987 100644 --- a/src/extension/excel/pom.xml +++ b/src/extension/excel/pom.xml @@ -9,7 +9,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/extension/feature-pregeneralized/pom.xml b/src/extension/feature-pregeneralized/pom.xml index 46392cc8c72..bc420251691 100644 --- a/src/extension/feature-pregeneralized/pom.xml +++ b/src/extension/feature-pregeneralized/pom.xml @@ -12,13 +12,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-feature-pregeneralized jar - 2.16-SNAPSHOT + 2.16.0 Feature Generalization Extension diff --git a/src/extension/gdal/pom.xml b/src/extension/gdal/pom.xml index 8f2f5855639..5bf97a953be 100644 --- a/src/extension/gdal/pom.xml +++ b/src/extension/gdal/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/geofence-server/pom.xml b/src/extension/geofence-server/pom.xml index 68d755267c4..78446deb3ee 100644 --- a/src/extension/geofence-server/pom.xml +++ b/src/extension/geofence-server/pom.xml @@ -6,13 +6,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-geofence-server jar - 2.16-SNAPSHOT + 2.16.0 GeoFence Server GeoFence security internal server diff --git a/src/extension/geofence/pom.xml b/src/extension/geofence/pom.xml index dd0b29fdfea..d9acaaaa044 100644 --- a/src/extension/geofence/pom.xml +++ b/src/extension/geofence/pom.xml @@ -7,13 +7,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-geofence jar - 2.16-SNAPSHOT + 2.16.0 GeoFence security integration diff --git a/src/extension/grib/pom.xml b/src/extension/grib/pom.xml index 04ac1206918..7cfe577fe93 100644 --- a/src/extension/grib/pom.xml +++ b/src/extension/grib/pom.xml @@ -4,7 +4,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/h2/pom.xml b/src/extension/h2/pom.xml index 8f72e672950..951aa83339d 100644 --- a/src/extension/h2/pom.xml +++ b/src/extension/h2/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/imagemap/pom.xml b/src/extension/imagemap/pom.xml index fd674b17a4f..4aa9f1cf453 100644 --- a/src/extension/imagemap/pom.xml +++ b/src/extension/imagemap/pom.xml @@ -12,7 +12,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/imagemosaic-jdbc/pom.xml b/src/extension/imagemosaic-jdbc/pom.xml index 7cf345460fc..fe2aa08a1a8 100644 --- a/src/extension/imagemosaic-jdbc/pom.xml +++ b/src/extension/imagemosaic-jdbc/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/importer/bdb/pom.xml b/src/extension/importer/bdb/pom.xml index 7921c55dce7..10954edaf8f 100644 --- a/src/extension/importer/bdb/pom.xml +++ b/src/extension/importer/bdb/pom.xml @@ -7,7 +7,7 @@ org.geoserver gs-importer - 2.16-SNAPSHOT + 2.16.0 org.geoserver.importer diff --git a/src/extension/importer/core/pom.xml b/src/extension/importer/core/pom.xml index 989bbf6fb39..f56abb91c87 100644 --- a/src/extension/importer/core/pom.xml +++ b/src/extension/importer/core/pom.xml @@ -7,7 +7,7 @@ org.geoserver gs-importer - 2.16-SNAPSHOT + 2.16.0 org.geoserver.importer diff --git a/src/extension/importer/pom.xml b/src/extension/importer/pom.xml index baab5365618..8dd9a336481 100644 --- a/src/extension/importer/pom.xml +++ b/src/extension/importer/pom.xml @@ -7,7 +7,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/extension/importer/rest/pom.xml b/src/extension/importer/rest/pom.xml index 47094b51bb1..34d28902a11 100644 --- a/src/extension/importer/rest/pom.xml +++ b/src/extension/importer/rest/pom.xml @@ -3,7 +3,7 @@ org.geoserver gs-importer - 2.16-SNAPSHOT + 2.16.0 org.geoserver.importer gs-importer-rest diff --git a/src/extension/importer/web/pom.xml b/src/extension/importer/web/pom.xml index 5f9e255964d..2f0c73e5e16 100644 --- a/src/extension/importer/web/pom.xml +++ b/src/extension/importer/web/pom.xml @@ -7,7 +7,7 @@ org.geoserver gs-importer - 2.16-SNAPSHOT + 2.16.0 org.geoserver.importer diff --git a/src/extension/inspire/pom.xml b/src/extension/inspire/pom.xml index 5e885ec3e62..823c51f3c2e 100644 --- a/src/extension/inspire/pom.xml +++ b/src/extension/inspire/pom.xml @@ -10,13 +10,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-inspire jar - 2.16-SNAPSHOT + 2.16.0 GeoServer INSPIRE Extensions diff --git a/src/extension/jp2k/pom.xml b/src/extension/jp2k/pom.xml index d9988513671..b066bbfe8da 100644 --- a/src/extension/jp2k/pom.xml +++ b/src/extension/jp2k/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/libjpeg-turbo/pom.xml b/src/extension/libjpeg-turbo/pom.xml index 4e0c68d7fd0..6c5f3a20aae 100644 --- a/src/extension/libjpeg-turbo/pom.xml +++ b/src/extension/libjpeg-turbo/pom.xml @@ -7,13 +7,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-libjpeg-turbo jar - 2.16-SNAPSHOT + 2.16.0 GeoServer libjpeg-turbo Module diff --git a/src/extension/mongodb/pom.xml b/src/extension/mongodb/pom.xml index 2b7fdb1a3be..1383a954ce0 100644 --- a/src/extension/mongodb/pom.xml +++ b/src/extension/mongodb/pom.xml @@ -4,12 +4,12 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-mongodb jar - 2.16-SNAPSHOT + 2.16.0 MongoDB Data Store diff --git a/src/extension/monitor/core/pom.xml b/src/extension/monitor/core/pom.xml index 7220b37b983..e4678ca3c0f 100644 --- a/src/extension/monitor/core/pom.xml +++ b/src/extension/monitor/core/pom.xml @@ -9,7 +9,7 @@ org.geoserver.extension gs-monitor - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-monitor-core @@ -20,22 +20,22 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-restconfig - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-core - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-wms - 2.16-SNAPSHOT + 2.16.0 com.maxmind diff --git a/src/extension/monitor/pom.xml b/src/extension/monitor/pom.xml index f3e36f35be2..b2541774192 100644 --- a/src/extension/monitor/pom.xml +++ b/src/extension/monitor/pom.xml @@ -9,7 +9,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-monitor @@ -25,26 +25,26 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 test tests org.geoserver gs-wfs - 2.16-SNAPSHOT + 2.16.0 test org.geoserver gs-wcs1_0 - 2.16-SNAPSHOT + 2.16.0 test org.geoserver gs-wcs1_1 - 2.16-SNAPSHOT + 2.16.0 test diff --git a/src/extension/mysql/pom.xml b/src/extension/mysql/pom.xml index 4533922bc41..91af01ed783 100644 --- a/src/extension/mysql/pom.xml +++ b/src/extension/mysql/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/netcdf-out/pom.xml b/src/extension/netcdf-out/pom.xml index 81c356137e2..6456d2e2279 100644 --- a/src/extension/netcdf-out/pom.xml +++ b/src/extension/netcdf-out/pom.xml @@ -26,7 +26,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/netcdf/pom.xml b/src/extension/netcdf/pom.xml index 58acac68e60..0d7c8ce8470 100644 --- a/src/extension/netcdf/pom.xml +++ b/src/extension/netcdf/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/ogr/ogr-core/pom.xml b/src/extension/ogr/ogr-core/pom.xml index 471d20b15d3..9887de851c5 100644 --- a/src/extension/ogr/ogr-core/pom.xml +++ b/src/extension/ogr/ogr-core/pom.xml @@ -11,7 +11,7 @@ org.geoserver.extension gs-ogr - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/ogr/ogr-wfs/pom.xml b/src/extension/ogr/ogr-wfs/pom.xml index f0da39122ca..590dd6a79fa 100644 --- a/src/extension/ogr/ogr-wfs/pom.xml +++ b/src/extension/ogr/ogr-wfs/pom.xml @@ -11,7 +11,7 @@ org.geoserver.extension gs-ogr - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/ogr/ogr-wps/pom.xml b/src/extension/ogr/ogr-wps/pom.xml index e27dbe2725a..71825cb6a49 100644 --- a/src/extension/ogr/ogr-wps/pom.xml +++ b/src/extension/ogr/ogr-wps/pom.xml @@ -9,7 +9,7 @@ org.geoserver.extension gs-ogr - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/ogr/pom.xml b/src/extension/ogr/pom.xml index 821ef497702..ec44a3300fe 100644 --- a/src/extension/ogr/pom.xml +++ b/src/extension/ogr/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/oracle/pom.xml b/src/extension/oracle/pom.xml index a6c7b8e01e6..8574697331a 100644 --- a/src/extension/oracle/pom.xml +++ b/src/extension/oracle/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/pom.xml b/src/extension/pom.xml index 927aa5713a1..f1d0cbd200c 100644 --- a/src/extension/pom.xml +++ b/src/extension/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/extension/printing/pom.xml b/src/extension/printing/pom.xml index c33ccea10b6..a9186434df1 100644 --- a/src/extension/printing/pom.xml +++ b/src/extension/printing/pom.xml @@ -12,13 +12,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-printing jar - 2.16-SNAPSHOT + 2.16.0 Printing Module diff --git a/src/extension/querylayer/pom.xml b/src/extension/querylayer/pom.xml index f49e7c38ffc..93c144b6484 100644 --- a/src/extension/querylayer/pom.xml +++ b/src/extension/querylayer/pom.xml @@ -10,7 +10,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-querylayer diff --git a/src/extension/security/cas/pom.xml b/src/extension/security/cas/pom.xml index 8cca17bcb1d..0fd6e85c798 100644 --- a/src/extension/security/cas/pom.xml +++ b/src/extension/security/cas/pom.xml @@ -12,13 +12,13 @@ org.geoserver.extension gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.security gs-sec-cas jar - 2.16-SNAPSHOT + 2.16.0 GeoServer CAS Security Module diff --git a/src/extension/security/pom.xml b/src/extension/security/pom.xml index 7094b1b5d00..96c53e082b7 100644 --- a/src/extension/security/pom.xml +++ b/src/extension/security/pom.xml @@ -12,13 +12,13 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-security pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Security Extension Modules diff --git a/src/extension/security/web/pom.xml b/src/extension/security/web/pom.xml index f18f744b7ad..385832a4dd0 100644 --- a/src/extension/security/web/pom.xml +++ b/src/extension/security/web/pom.xml @@ -12,13 +12,13 @@ org.geoserver.extension gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-web-sec pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Security Extension Web Modules diff --git a/src/extension/security/web/web-cas/pom.xml b/src/extension/security/web/web-cas/pom.xml index 21cfb7f9342..03db9201e19 100644 --- a/src/extension/security/web/web-cas/pom.xml +++ b/src/extension/security/web/web-cas/pom.xml @@ -12,13 +12,13 @@ org.geoserver.extension gs-web-sec - 2.16-SNAPSHOT + 2.16.0 org.geoserver.security gs-web-sec-cas jar - 2.16-SNAPSHOT + 2.16.0 GeoServer CAS Security Web Module diff --git a/src/extension/sldService/pom.xml b/src/extension/sldService/pom.xml index 5e57f959760..21274c01a47 100644 --- a/src/extension/sldService/pom.xml +++ b/src/extension/sldService/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension @@ -22,22 +22,22 @@ org.geoserver gs-main - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-rest - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-restconfig - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-wms - 2.16-SNAPSHOT + 2.16.0 jdom diff --git a/src/extension/sqlserver/pom.xml b/src/extension/sqlserver/pom.xml index e32bfe8858e..f0b3f796060 100644 --- a/src/extension/sqlserver/pom.xml +++ b/src/extension/sqlserver/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/teradata/pom.xml b/src/extension/teradata/pom.xml index b1bf1558c8b..101da219d08 100644 --- a/src/extension/teradata/pom.xml +++ b/src/extension/teradata/pom.xml @@ -11,7 +11,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/vectortiles/pom.xml b/src/extension/vectortiles/pom.xml index 96b06536985..8508644a7a4 100644 --- a/src/extension/vectortiles/pom.xml +++ b/src/extension/vectortiles/pom.xml @@ -6,7 +6,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wcs2_0-eo/core/pom.xml b/src/extension/wcs2_0-eo/core/pom.xml index e1d397403ac..33e7953aefd 100644 --- a/src/extension/wcs2_0-eo/core/pom.xml +++ b/src/extension/wcs2_0-eo/core/pom.xml @@ -12,7 +12,7 @@ application directory. org.geoserver.extension gs-wcs2_0-eo - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wcs2_0-eo/pom.xml b/src/extension/wcs2_0-eo/pom.xml index 6cfad7d4a70..cd2f59da0d4 100644 --- a/src/extension/wcs2_0-eo/pom.xml +++ b/src/extension/wcs2_0-eo/pom.xml @@ -9,7 +9,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-wcs2_0-eo diff --git a/src/extension/wcs2_0-eo/web/pom.xml b/src/extension/wcs2_0-eo/web/pom.xml index c951d93c058..3338c8bde14 100644 --- a/src/extension/wcs2_0-eo/web/pom.xml +++ b/src/extension/wcs2_0-eo/web/pom.xml @@ -12,7 +12,7 @@ application directory. org.geoserver.extension gs-wcs2_0-eo - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wps/pom.xml b/src/extension/wps/pom.xml index 1d449c37f87..ba47b327c6e 100644 --- a/src/extension/wps/pom.xml +++ b/src/extension/wps/pom.xml @@ -12,7 +12,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wps/web-wps/pom.xml b/src/extension/wps/web-wps/pom.xml index 13782c3ab20..1a57e8a60c1 100644 --- a/src/extension/wps/web-wps/pom.xml +++ b/src/extension/wps/web-wps/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-wps - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wps/wps-cluster-hazelcast/pom.xml b/src/extension/wps/wps-cluster-hazelcast/pom.xml index 085aed55bcf..e47e4614b94 100644 --- a/src/extension/wps/wps-cluster-hazelcast/pom.xml +++ b/src/extension/wps/wps-cluster-hazelcast/pom.xml @@ -10,7 +10,7 @@ org.geoserver.extension gs-wps - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/wps/wps-core/pom.xml b/src/extension/wps/wps-core/pom.xml index 5db2d61f287..1f7d6ece5f7 100644 --- a/src/extension/wps/wps-core/pom.xml +++ b/src/extension/wps/wps-core/pom.xml @@ -12,7 +12,7 @@ org.geoserver.extension gs-wps - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension diff --git a/src/extension/xslt/pom.xml b/src/extension/xslt/pom.xml index d2eea5aaf65..47156067a51 100644 --- a/src/extension/xslt/pom.xml +++ b/src/extension/xslt/pom.xml @@ -6,7 +6,7 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/extension/ysld/pom.xml b/src/extension/ysld/pom.xml index 86ba4bb049a..386b8ae3fea 100644 --- a/src/extension/ysld/pom.xml +++ b/src/extension/ysld/pom.xml @@ -7,14 +7,14 @@ org.geoserver extension - 2.16-SNAPSHOT + 2.16.0 org.geoserver.extension gs-ysld Ysld GeoServer Plugin jar - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/gwc/pom.xml b/src/gwc/pom.xml index b7e90f98bad..f58eebb1d3c 100644 --- a/src/gwc/pom.xml +++ b/src/gwc/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/kml/pom.xml b/src/kml/pom.xml index 2d2182f0acb..b20f5aeb081 100644 --- a/src/kml/pom.xml +++ b/src/kml/pom.xml @@ -9,7 +9,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/main/pom.xml b/src/main/pom.xml index 4ebc67bc5b7..882cbf7e274 100644 --- a/src/main/pom.xml +++ b/src/main/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/maven/archetype/pom.xml b/src/maven/archetype/pom.xml index a2973b52e07..1c7a0cb6acd 100644 --- a/src/maven/archetype/pom.xml +++ b/src/maven/archetype/pom.xml @@ -11,7 +11,7 @@ txsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/m org.geoserver gs-maven - 2.16-SNAPSHOT + 2.16.0 org.geoserver.maven diff --git a/src/maven/archetype/webPlugin/pom.xml b/src/maven/archetype/webPlugin/pom.xml index 35df9c38187..6341260ef4c 100644 --- a/src/maven/archetype/webPlugin/pom.xml +++ b/src/maven/archetype/webPlugin/pom.xml @@ -5,7 +5,7 @@ org.geoserver.maven gs-archetype - 2.16-SNAPSHOT + 2.16.0 org.geoserver.maven diff --git a/src/maven/archetype/webPlugin/src/main/resources/archetype-resources/pom.xml b/src/maven/archetype/webPlugin/src/main/resources/archetype-resources/pom.xml index b357eaf3ac9..2c8f2e4cc5f 100644 --- a/src/maven/archetype/webPlugin/src/main/resources/archetype-resources/pom.xml +++ b/src/maven/archetype/webPlugin/src/main/resources/archetype-resources/pom.xml @@ -24,12 +24,12 @@ org.geoserver.web web-core - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web web-core - 2.16-SNAPSHOT + 2.16.0 tests test @@ -42,7 +42,7 @@ org.geoserver main - 2.16-SNAPSHOT + 2.16.0 tests test diff --git a/src/maven/archetype/wfsOutputFormat/pom.xml b/src/maven/archetype/wfsOutputFormat/pom.xml index 6d962d4f585..0c1d6d0d059 100644 --- a/src/maven/archetype/wfsOutputFormat/pom.xml +++ b/src/maven/archetype/wfsOutputFormat/pom.xml @@ -5,7 +5,7 @@ org.geoserver.maven gs-archetype - 2.16-SNAPSHOT + 2.16.0 org.geoserver.maven diff --git a/src/maven/archetype/wfsOutputFormat/src/main/resources/archetype-resources/pom.xml b/src/maven/archetype/wfsOutputFormat/src/main/resources/archetype-resources/pom.xml index 67ea16b66b9..af3f577e751 100644 --- a/src/maven/archetype/wfsOutputFormat/src/main/resources/archetype-resources/pom.xml +++ b/src/maven/archetype/wfsOutputFormat/src/main/resources/archetype-resources/pom.xml @@ -11,7 +11,7 @@ org.geoserver wfs - 2.16-SNAPSHOT + 2.16.0 junit @@ -22,14 +22,14 @@ org.geoserver wfs - 2.16-SNAPSHOT + 2.16.0 tests test org.geoserver main - 2.16-SNAPSHOT + 2.16.0 tests test diff --git a/src/maven/config/pom.xml b/src/maven/config/pom.xml index a2ceda7435c..42403b50107 100644 --- a/src/maven/config/pom.xml +++ b/src/maven/config/pom.xml @@ -11,7 +11,7 @@ org.geoserver gs-maven - 2.16-SNAPSHOT + 2.16.0 org.geoserver.maven diff --git a/src/maven/pom.xml b/src/maven/pom.xml index 3858b2e4423..1ed4c33e8cd 100644 --- a/src/maven/pom.xml +++ b/src/maven/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/ows/pom.xml b/src/ows/pom.xml index 3a1d19f9647..0b20215c58f 100644 --- a/src/ows/pom.xml +++ b/src/ows/pom.xml @@ -10,7 +10,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/platform/pom.xml b/src/platform/pom.xml index 62b0cfc6524..76743d313f5 100644 --- a/src/platform/pom.xml +++ b/src/platform/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/pom.xml b/src/pom.xml index 96d84fdf6ad..bff9f06b3fe 100644 --- a/src/pom.xml +++ b/src/pom.xml @@ -13,7 +13,7 @@ org.geoserver geoserver pom - 2.16-SNAPSHOT + 2.16.0 GeoServer @@ -1571,7 +1571,7 @@ release/ext-geofence-server.xml release/ext-authkey.xml - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 ${project.build.directory}/release @@ -1949,9 +1949,9 @@ - 2.16-SNAPSHOT - 22-SNAPSHOT - 1.16-SNAPSHOT + 2.16.0 + 22.0 + 1.16.0 1.16.1 5.1.1.RELEASE 5.1.5.RELEASE diff --git a/src/release/bin.xml b/src/release/bin.xml index c043d6b6f32..bb472cbb733 100644 --- a/src/release/bin.xml +++ b/src/release/bin.xml @@ -8,7 +8,7 @@ web/app/target/geoserver - geoserver-2.16-SNAPSHOT/webapps/geoserver + geoserver-2.16.0/webapps/geoserver **/* @@ -22,7 +22,7 @@ web/app/target/geoserver/data - geoserver-2.16-SNAPSHOT/data_dir + geoserver-2.16.0/data_dir **/* @@ -30,7 +30,7 @@ release/target/dependency - geoserver-2.16-SNAPSHOT/lib + geoserver-2.16.0/lib ant-*.jar commons-el-*.jar @@ -53,7 +53,7 @@ release/bin keep - geoserver-2.16-SNAPSHOT/bin + geoserver-2.16.0/bin *.bat @@ -62,7 +62,7 @@ release/bin unix - geoserver-2.16-SNAPSHOT/bin + geoserver-2.16.0/bin 0755 0755 @@ -72,7 +72,7 @@ release - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 GPL.txt RUNNING.txt @@ -83,14 +83,14 @@ ../ - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 LICENSE.txt target - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 VERSION.txt @@ -98,7 +98,7 @@ release/jetty - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 **/* @@ -106,7 +106,7 @@ release/logs - geoserver-2.16-SNAPSHOT + geoserver-2.16.0 diff --git a/src/release/installer/mac/console/pom.xml b/src/release/installer/mac/console/pom.xml index 4c9890fc1f1..c7d63f15f3e 100644 --- a/src/release/installer/mac/console/pom.xml +++ b/src/release/installer/mac/console/pom.xml @@ -11,7 +11,7 @@ 4.0.0 org.geoserver console - 2.16-SNAPSHOT + 2.16.0 GeoServer Console Monitor GeoServer Console diff --git a/src/release/installer/win/GeoServerEXE.nsi b/src/release/installer/win/GeoServerEXE.nsi index 2cab1e66f3c..89d1c560e4d 100644 --- a/src/release/installer/win/GeoServerEXE.nsi +++ b/src/release/installer/win/GeoServerEXE.nsi @@ -7,7 +7,7 @@ ; Define your application name !define APPNAME "GeoServer" -!define VERSION "2.16-SNAPSHOT" +!define VERSION "2.16.0" ;!define LONGVERSION "2.0.0.0" !define APPNAMEANDVERSION "${APPNAME} ${VERSION}" diff --git a/src/release/installer/win/wrapper.conf b/src/release/installer/win/wrapper.conf index 938d7339cb0..512d03e465e 100644 --- a/src/release/installer/win/wrapper.conf +++ b/src/release/installer/win/wrapper.conf @@ -80,10 +80,10 @@ wrapper.syslog.loglevel=NONE # service can then be reinstalled. # Name of the service -wrapper.ntservice.name=GeoServer 2.16-SNAPSHOT +wrapper.ntservice.name=GeoServer 2.16.0 # Display name of the service -wrapper.ntservice.displayname=GeoServer 2.16-SNAPSHOT +wrapper.ntservice.displayname=GeoServer 2.16.0 # Description of the service wrapper.ntservice.description=GeoServer is an open source software server written in Java that allows users to share and edit geospatial data. diff --git a/src/release/pom.xml b/src/release/pom.xml index 898c2a2fc21..e9a46e9b67c 100644 --- a/src/release/pom.xml +++ b/src/release/pom.xml @@ -11,7 +11,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-release diff --git a/src/rest/pom.xml b/src/rest/pom.xml index c5a334cfb29..8769c4cfe2c 100644 --- a/src/rest/pom.xml +++ b/src/rest/pom.xml @@ -5,7 +5,7 @@ geoserver org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/restconfig-wcs/pom.xml b/src/restconfig-wcs/pom.xml index 3e94e3502c5..d2f7c9c6656 100644 --- a/src/restconfig-wcs/pom.xml +++ b/src/restconfig-wcs/pom.xml @@ -5,7 +5,7 @@ geoserver org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/restconfig-wfs/pom.xml b/src/restconfig-wfs/pom.xml index 29edb7e83cc..c62445d4591 100644 --- a/src/restconfig-wfs/pom.xml +++ b/src/restconfig-wfs/pom.xml @@ -5,7 +5,7 @@ geoserver org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/restconfig-wms/pom.xml b/src/restconfig-wms/pom.xml index a6cd5b71eb1..b261b7d34ad 100644 --- a/src/restconfig-wms/pom.xml +++ b/src/restconfig-wms/pom.xml @@ -5,7 +5,7 @@ geoserver org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/restconfig/pom.xml b/src/restconfig/pom.xml index 52f79ab37e9..15359537916 100644 --- a/src/restconfig/pom.xml +++ b/src/restconfig/pom.xml @@ -5,7 +5,7 @@ geoserver org.geoserver - 2.16-SNAPSHOT + 2.16.0 4.0.0 diff --git a/src/security/jdbc/pom.xml b/src/security/jdbc/pom.xml index 0ff9da0be7b..24b008f9364 100644 --- a/src/security/jdbc/pom.xml +++ b/src/security/jdbc/pom.xml @@ -12,12 +12,12 @@ org.geoserver gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.security gs-sec-jdbc jar - 2.16-SNAPSHOT + 2.16.0 GeoServer JDBC Security Module diff --git a/src/security/ldap/pom.xml b/src/security/ldap/pom.xml index 83713cbe4e7..302cbb55692 100644 --- a/src/security/ldap/pom.xml +++ b/src/security/ldap/pom.xml @@ -12,13 +12,13 @@ org.geoserver gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.security gs-sec-ldap jar - 2.16-SNAPSHOT + 2.16.0 GeoServer LDAP Security Module diff --git a/src/security/pom.xml b/src/security/pom.xml index ddb2fe69208..64bf9d642cc 100644 --- a/src/security/pom.xml +++ b/src/security/pom.xml @@ -12,13 +12,13 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver gs-security pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Security Modules diff --git a/src/security/security-tests/pom.xml b/src/security/security-tests/pom.xml index ef182a39d30..5c8b7c21d93 100644 --- a/src/security/security-tests/pom.xml +++ b/src/security/security-tests/pom.xml @@ -12,12 +12,12 @@ org.geoserver gs-security - 2.16-SNAPSHOT + 2.16.0 org.geoserver.security gs-security-tests jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Security Tests Module diff --git a/src/wcs/pom.xml b/src/wcs/pom.xml index 24a51cd51db..e51a290e150 100644 --- a/src/wcs/pom.xml +++ b/src/wcs/pom.xml @@ -12,7 +12,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/wcs1_0/pom.xml b/src/wcs1_0/pom.xml index 4df07838ba3..577efdc5566 100644 --- a/src/wcs1_0/pom.xml +++ b/src/wcs1_0/pom.xml @@ -12,7 +12,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/wcs1_1/pom.xml b/src/wcs1_1/pom.xml index 57f4f868d26..1a0a0348906 100644 --- a/src/wcs1_1/pom.xml +++ b/src/wcs1_1/pom.xml @@ -12,7 +12,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/wcs2_0/pom.xml b/src/wcs2_0/pom.xml index 868f3619c30..453c48abeb8 100644 --- a/src/wcs2_0/pom.xml +++ b/src/wcs2_0/pom.xml @@ -12,7 +12,7 @@ application directory. org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/web/app/pom.xml b/src/web/app/pom.xml index 06bdde2f915..da379783364 100644 --- a/src/web/app/pom.xml +++ b/src/web/app/pom.xml @@ -10,12 +10,12 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-app jar - 2.16-SNAPSHOT + 2.16.0 GeoServer Web Application @@ -416,7 +416,7 @@ org.geoserver.extension gs-arcsde - 2.16-SNAPSHOT + 2.16.0 @@ -445,7 +445,7 @@ org.geoserver.extension gs-sqlserver - 2.16-SNAPSHOT + 2.16.0 @@ -455,7 +455,7 @@ org.geoserver.extension gs-oracle - 2.16-SNAPSHOT + 2.16.0 @@ -465,7 +465,7 @@ org.geoserver.extension gs-oracle - 2.16-SNAPSHOT + 2.16.0 com.oracle @@ -479,7 +479,7 @@ org.geoserver.extension gs-mysql - 2.16-SNAPSHOT + 2.16.0 diff --git a/src/web/core/pom.xml b/src/web/core/pom.xml index e0b3320830e..ce732d58543 100644 --- a/src/web/core/pom.xml +++ b/src/web/core/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-core jar - 2.16-SNAPSHOT + 2.16.0 Core UI Module diff --git a/src/web/demo/pom.xml b/src/web/demo/pom.xml index ef373d6a4b8..587e0d3d1e7 100644 --- a/src/web/demo/pom.xml +++ b/src/web/demo/pom.xml @@ -15,13 +15,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-demo jar - 2.16-SNAPSHOT + 2.16.0 Demos Module diff --git a/src/web/gwc/pom.xml b/src/web/gwc/pom.xml index 92dc7257667..860fa5a88ff 100644 --- a/src/web/gwc/pom.xml +++ b/src/web/gwc/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-gwc jar - 2.16-SNAPSHOT + 2.16.0 GWC UI Module diff --git a/src/web/pom.xml b/src/web/pom.xml index 68e90d32a10..bb6271d564d 100644 --- a/src/web/pom.xml +++ b/src/web/pom.xml @@ -10,13 +10,13 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver web pom - 2.16-SNAPSHOT + 2.16.0 GeoServer Web Modules diff --git a/src/web/rest/pom.xml b/src/web/rest/pom.xml index a37742f13ce..47786e0b4f6 100644 --- a/src/web/rest/pom.xml +++ b/src/web/rest/pom.xml @@ -6,11 +6,11 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-rest - 2.16-SNAPSHOT + 2.16.0 REST UI Module http://maven.apache.org diff --git a/src/web/security/core/pom.xml b/src/web/security/core/pom.xml index 0282910bde3..0bfd0934199 100644 --- a/src/web/security/core/pom.xml +++ b/src/web/security/core/pom.xml @@ -12,13 +12,13 @@ org.geoserver.web gs-web-sec - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-sec-core jar - 2.16-SNAPSHOT + 2.16.0 Security UI Core Module diff --git a/src/web/security/jdbc/pom.xml b/src/web/security/jdbc/pom.xml index e125b165ddd..5071485747b 100644 --- a/src/web/security/jdbc/pom.xml +++ b/src/web/security/jdbc/pom.xml @@ -12,13 +12,13 @@ org.geoserver.web gs-web-sec - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-sec-jdbc jar - 2.16-SNAPSHOT + 2.16.0 Security UI JDBC Module diff --git a/src/web/security/ldap/pom.xml b/src/web/security/ldap/pom.xml index e58d5f62f28..5227d687995 100644 --- a/src/web/security/ldap/pom.xml +++ b/src/web/security/ldap/pom.xml @@ -12,13 +12,13 @@ org.geoserver.web gs-web-sec - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-sec-ldap jar - 2.16-SNAPSHOT + 2.16.0 Security UI LDAP Module diff --git a/src/web/security/pom.xml b/src/web/security/pom.xml index 3e47ada9687..4c7d3458dd9 100644 --- a/src/web/security/pom.xml +++ b/src/web/security/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-sec pom - 2.16-SNAPSHOT + 2.16.0 Security UI Modules diff --git a/src/web/wcs/pom.xml b/src/web/wcs/pom.xml index 33610b94011..94dd98c9c96 100644 --- a/src/web/wcs/pom.xml +++ b/src/web/wcs/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-wcs jar - 2.16-SNAPSHOT + 2.16.0 WCS UI Module diff --git a/src/web/wfs/pom.xml b/src/web/wfs/pom.xml index c417614f8a0..38fcd6eae43 100644 --- a/src/web/wfs/pom.xml +++ b/src/web/wfs/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-wfs jar - 2.16-SNAPSHOT + 2.16.0 WFS UI Module diff --git a/src/web/wms/pom.xml b/src/web/wms/pom.xml index 65ff0d3b00a..20b1562a453 100644 --- a/src/web/wms/pom.xml +++ b/src/web/wms/pom.xml @@ -12,13 +12,13 @@ org.geoserver web - 2.16-SNAPSHOT + 2.16.0 org.geoserver.web gs-web-wms jar - 2.16-SNAPSHOT + 2.16.0 WMS UI Module diff --git a/src/wfs/pom.xml b/src/wfs/pom.xml index c78e2a96769..b98e27c9eea 100644 --- a/src/wfs/pom.xml +++ b/src/wfs/pom.xml @@ -12,7 +12,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver diff --git a/src/wms/pom.xml b/src/wms/pom.xml index 86cceeb9824..1693677e2ec 100644 --- a/src/wms/pom.xml +++ b/src/wms/pom.xml @@ -12,7 +12,7 @@ org.geoserver geoserver - 2.16-SNAPSHOT + 2.16.0 org.geoserver From 76f4afd39e465a7e9cc584516a65d7e15b088d04 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 27 Nov 2019 16:30:06 +1100 Subject: [PATCH 12/13] change animation method to SequenceMuxer (cherry picked from commit 4268b33) --- .../wps/gs/download/DownloadAnimationProcess.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java b/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java index e9736081eb5..4a6723b3a8e 100644 --- a/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java +++ b/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java @@ -6,6 +6,7 @@ import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; +import java.io.File; import java.math.BigDecimal; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -21,6 +22,7 @@ import java.util.concurrent.Future; import java.util.logging.Level; import java.util.logging.Logger; +import javax.imageio.ImageIO; import javax.media.jai.PlanarImage; import org.geoserver.ows.kvp.TimeParser; import org.geoserver.platform.resource.Resource; @@ -40,6 +42,7 @@ import org.geotools.util.SimpleInternationalString; import org.geotools.util.logging.Logging; import org.jcodec.api.awt.AWTSequenceEncoder; +import org.jcodec.api.awt.SequenceMuxer; import org.jcodec.common.io.NIOUtils; import org.jcodec.common.model.Rational; import org.opengis.util.ProgressListener; @@ -146,8 +149,8 @@ public RawData execute( final Resource output = resourceManager.getTemporaryResource("mp4"); Rational frameRate = getFrameRate(fps); - AWTSequenceEncoder enc = - new AWTSequenceEncoder(NIOUtils.writableChannel(output.file()), frameRate); + SequenceMuxer enc = + new SequenceMuxer(output.file()); DownloadServiceConfiguration configuration = confiGenerator.getConfiguration(); TimeParser timeParser = new TimeParser(configuration.getMaxAnimationFrames()); @@ -178,10 +181,12 @@ public RawData execute( serverCache); BufferedImage frame = toBufferedImage(image); LOGGER.log(Level.FINE, "Got frame %s", frame); + File outputFile = new File(System.getProperty("java.io.tmpdir"), "saved.png"); + ImageIO.write(frame, "png", outputFile); Future future = executor.submit( () -> { - enc.encodeImage(frame); + enc.encodeImage(outputFile); return (Void) null; }); futures.add(future); From 378f377344e6be10a253b6a6c9c68e954cc44ea3 Mon Sep 17 00:00:00 2001 From: Darren Reid Date: Mon, 24 Feb 2020 15:11:45 +1100 Subject: [PATCH 13/13] Change to use unique temp file. --- .../gs/download/DownloadAnimationProcess.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java b/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java index 4a6723b3a8e..f3637fe8f77 100644 --- a/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java +++ b/src/community/wps-download/src/main/java/org/geoserver/wps/gs/download/DownloadAnimationProcess.java @@ -4,19 +4,15 @@ */ package org.geoserver.wps.gs.download; +import static java.util.UUID.randomUUID; + import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.math.BigDecimal; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -41,9 +37,7 @@ import org.geotools.util.DateRange; import org.geotools.util.SimpleInternationalString; import org.geotools.util.logging.Logging; -import org.jcodec.api.awt.AWTSequenceEncoder; import org.jcodec.api.awt.SequenceMuxer; -import org.jcodec.common.io.NIOUtils; import org.jcodec.common.model.Rational; import org.opengis.util.ProgressListener; @@ -149,8 +143,7 @@ public RawData execute( final Resource output = resourceManager.getTemporaryResource("mp4"); Rational frameRate = getFrameRate(fps); - SequenceMuxer enc = - new SequenceMuxer(output.file()); + SequenceMuxer enc = new SequenceMuxer(output.file()); DownloadServiceConfiguration configuration = confiGenerator.getConfiguration(); TimeParser timeParser = new TimeParser(configuration.getMaxAnimationFrames()); @@ -163,6 +156,7 @@ public RawData execute( try { List> futures = new ArrayList<>(); int totalTimes = parsedTimes.size(); + UUID uniqueFileName = randomUUID(); for (Object parsedTime : parsedTimes) { // turn parsed time into a specification and generate a "WMS" like request based on // it @@ -181,7 +175,8 @@ public RawData execute( serverCache); BufferedImage frame = toBufferedImage(image); LOGGER.log(Level.FINE, "Got frame %s", frame); - File outputFile = new File(System.getProperty("java.io.tmpdir"), "saved.png"); + File outputFile = + new File(System.getProperty("java.io.tmpdir"), uniqueFileName + ".png"); ImageIO.write(frame, "png", outputFile); Future future = executor.submit(