diff gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java @ 9755:0834c2591e14 3.2.x

Route MapServer through wiki container This reduces the need for local configuration changes to get a working Docker-based setup.
author Tom Gottfried <tom@intevation.de>
date Wed, 12 Oct 2022 12:53:36 +0200
parents 0a5239a1e46e
children 2a78ac6c8045
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java	Wed Oct 12 10:45:13 2022 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java	Wed Oct 12 12:53:36 2022 +0200
@@ -24,6 +24,8 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -76,7 +78,7 @@
         public Layer() {
         }
 
-        public boolean setup(Element element) {
+        public boolean setup(Element element, HttpServletRequest req) {
 
             Element parent = (Element)element.getParentNode();
             String parentName = parent.getAttribute("name");
@@ -94,7 +96,15 @@
                 return false;
             }
 
-            url         = element.getAttributeNS(ns, "url");
+            url = element.getAttributeNS(ns, "url");
+            try {
+                // if given URL is not absolute, complement it
+                url = new URL(new URL(req.getRequestURL().toString()),
+                    url).toString();
+            } catch (MalformedURLException mue) {
+                log.error("Failed to complement layer URL: "
+                    + mue.getMessage());
+            }
             layers      = element.getAttributeNS(ns, "layers");
             description = element.getAttributeNS(ns, "description");
 
@@ -134,6 +144,7 @@
     } // class Layer
 
     protected static String generateSpec(
+        HttpServletRequest req,
         Document descDocument,
         MapConfig mapConfig,
         Double minX, Double minY,
@@ -162,7 +173,7 @@
 
         for (int i = 0, N = facets.getLength(); i < N; ++i) {
             Element element = (Element)facets.item(i);
-            if (l.setup(element)) {
+            if (l.setup(element, req)) {
                 ls.add(l);
                 l = new Layer();
             }
@@ -378,6 +389,7 @@
         }
 
         String spec = generateSpec(
+            req,
             descDocument,
             mapConfig,
             minX, minY,

http://dive4elements.wald.intevation.org