Hi.

@Ede
1) that is something added by eclipse (
http://stackoverflow.com/questions/654037/what-does-non-nls-1-mean). I took
it away from the WMS-related files, but you will find it in several other
files.

2) yes, changing the API of TaskFrame wasn't brilliant... I reverted to
it's original state. For the neat implementation of InfoRequest, it will be
done, but I need some more time.

@Jukka
I changed the method used to retrieve the url as you suggested. I added the
FEATURE_COUNT=10 parameter, and I limited the WMS info to the visible
layers. Not visible and selected, just visible, to make it consistent with
vector layers.

Alberto

On 24 December 2015 at 13:02, <edgar.sol...@web.de> wrote:

> hey Alberto,
>
> i have some questions/comments
>
> 1.
> in several files eg. Parser.java you added lines ending with
> '//$NON-NLS-1$' . why?
>
> 2.
> you insert wms code (url appending) directly into the featureinfotool up
> to the point that it even runs the web request.
> why don't you use the wms package? i see you added the info url to the
> capabilities already. would you mind implementing that cleanly with a
> InfoRequest object along the lines of existing MapRequest.java . this way
> you can reuse all the magic there is already including auth/proxy usage.
> changing the API of TaskFrame to an IOException throwing getInfoFrame() is
> an absolute no go from my point of view.
>
> how long would it take for you to fix it? keep in mind, we can easily slip
> in a clean version with the first maintenance release. so no hurry.
>
> ..ede
>
>
> On 24.12.2015 00:18, Alberto De Luca wrote:
> > Right sorry,
> >
> > I think Parser.java was the culprit. I had deleted it locally, but not on
> > the server. It is no longer needed actually, but instead of deleting it I
> > edited to make it compatible with the modified WMS classes (so we can
> keep
> > it, you never know...).
> >
> > Apparently it builds now, let me know.
> > Alberto
> >
> > On 23 December 2015 at 22:00, <edgar.sol...@web.de> wrote:
> >
> >> Alberto,
> >>
> >> your commit seems incomplete.. ede
> >>
> >>
> >> On 23.12.2015 18:28, Rahkonen Jukka (MML) wrote:
> >>> Hi,
> >>>
> >>> r4663 did not build
> >>>
> >>
> http://sourceforge.net/projects/jump-pilot/files/OpenJUMP_snapshots/OpenJUMP-20151223-r4663.log/download
> >>>
> >>> -Jukka Rahkonen-
> >>>
> >>>
> >>> -----Alkuperäinen viesti-----
> >>> Lähettäjä: jump-pilot-...@lists.sourceforge.net [mailto:
> >> jump-pilot-...@lists.sourceforge.net]
> >>> Lähetetty: 23. joulukuuta 2015 18:27
> >>> Vastaanottaja: jump-pilot-devel@lists.sourceforge.net
> >>> Aihe: [JPP-Devel] SVN: [4663] core/trunk
> >>>
> >>> Revision: 4663
> >>>           http://sourceforge.net/p/jump-pilot/code/4663
> >>> Author:   bertazza
> >>> Date:     2015-12-23 16:26:41 +0000 (Wed, 23 Dec 2015)
> >>> Log Message:
> >>> -----------
> >>> Info feature tool: added a pane to show WMS info.
> >>>
> >>> Modified Paths:
> >>> --------------
> >>>     core/trunk/ChangeLog
> >>>     core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java
> >>>
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java
> >>>     core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java
> >>>
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java
> >>>     core/trunk/src/com/vividsolutions/wms/AbstractParser.java
> >>>     core/trunk/src/com/vividsolutions/wms/Capabilities.java
> >>>     core/trunk/src/com/vividsolutions/wms/MapLayer.java
> >>>     core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java
> >>>     core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java
> >>>     core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java
> >>>     core/trunk/src/com/vividsolutions/wms/WMService.java
> >>>     core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java
> >>>
> >>> Added Paths:
> >>> -----------
> >>>
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl
> >>>     core/trunk/src/com/vividsolutions/wms/MapStyle.java
> >>>
> >>> Modified: core/trunk/ChangeLog
> >>> ===================================================================
> >>> --- core/trunk/ChangeLog      2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/ChangeLog      2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -3,6 +3,8 @@
> >>>  # 2. make sure that lines break at 80 chars for constricted display
> >> situations
> >>>  #<-------------------------------- 80 chars
> >> ---------------------------------->#
> >>>
> >>> +2015-12-23 bertazza
> >>> +  * Info feature tool: added a pane to show WMS info.
> >>>
> >>>  <----------------------------------------------- Changes.txt updated
> >> 'til here
> >>>  2015-12-21 bertazza
> >>>
> >>> Modified:
> >> core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java
> >>       2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/InfoFrame.java
> >>       2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -61,6 +61,8 @@
> >>>  import com.vividsolutions.jump.workbench.ui.images.IconLoader;
> >>>  import
> >> com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
> >>>  import
> com.vividsolutions.jump.workbench.ui.plugin.ViewAttributesPlugIn;
> >>> +import java.io.IOException;
> >>> +import javax.swing.JEditorPane;
> >>>  import javax.swing.JScrollPane;
> >>>  import javax.swing.JTable;
> >>>  import javax.swing.table.DefaultTableModel;
> >>> @@ -99,16 +101,18 @@
> >>>      private GeometryInfoTab geometryInfoTab;
> >>>      private JTabbedPane tabbedPane = new JTabbedPane();
> >>>      private RasterInfoTab rasterInfoTab;
> >>> +    private WMSInfoTab wmsInfoTab;
> >>>      private WorkbenchFrame workbenchFrame;
> >>>      private static ImageIcon ICON =
> >> IconLoader.icon("information_16x16.png");
> >>>
> >>>      public InfoFrame(
> >>>          WorkbenchContext workbenchContext,
> >>>          LayerManagerProxy layerManagerProxy,
> >>> -        final TaskFrame taskFrame) {
> >>> +        final TaskFrame taskFrame) throws IOException {
> >>>               blackboard =
> >> PersistentBlackboardPlugIn.get(workbenchContext);
> >>>          geometryInfoTab = new GeometryInfoTab(model,
> workbenchContext);
> >>>          rasterInfoTab = new RasterInfoTab(null, null);
> >>> +        wmsInfoTab = new WMSInfoTab();
> >>>          //Keep my own copy of LayerManager, because it will be nulled
> >> in TaskFrame
> >>>          //when TaskFrame closes (it may in fact already be closed,
> >> which is why
> >>>          //a LayerManagerProxy must be passed in too). But I have to @@
> >> -150,6 +154,7 @@
> >>>          tabbedPane.addTab("", IconLoader.icon("Table.gif"),
> >> attributeTab, TABLE_VIEW);
> >>>          tabbedPane.addTab("", IconLoader.icon("Paper.gif"),
> >> geometryInfoTab, HTML_VIEW);
> >>>          tabbedPane.addTab("R", null, rasterInfoTab, "Raster");
> >>> +        tabbedPane.addTab("WMS", null, wmsInfoTab, "WMS");
> >>>          updateTitle(taskFrame.getTask().getName());
> >>>          taskFrame.getTask().add(new Task.NameListener() {
> >>>              public void taskNameChanged(String name) { @@ -274,6
> >> +279,10 @@
> >>>          rasterInfoTab.setRasterValues(layerNames, cellValues);
> >>>      }
> >>>
> >>> +    public void setWmsInfo(String string) {
> >>> +        wmsInfoTab.setWmsInfoText(string);
> >>> +    }
> >>> +
> >>>      @Override
> >>>      public JFrame getFrame() {
> >>>        // our frame has to be all proxies InfoFrame is @@ -361,5
> +370,32
> >> @@
> >>>          }
> >>>
> >>>      }
> >>> +
> >>> +    protected class WMSInfoTab extends JPanel {
> >>> +
> >>> +        private final JEditorPane jEditorPane;
> >>> +
> >>> +        public WMSInfoTab() throws IOException {
> >>> +
> >>> +            setLayout(new BorderLayout());
> >>> +
> >>> +            jEditorPane = new JEditorPane();
> >>> +            jEditorPane.setEditable(false);
> >>> +            JScrollPane jScrollPane = new JScrollPane(
> >>> +                    jEditorPane,
> >>> +                    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
> >>> +                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
> >>> +
> >>> +            this.add(jScrollPane);
> >>> +
> >>> +        }
> >>> +
> >>> +        public void setWmsInfoText(String wmsInfo) {
> >>> +
> >>> +            jEditorPane.setText(wmsInfo);
> >>> +
> >>> +        }
> >>> +
> >>> +    }
> >>>
> >>>  }
> >>>
> >>> Modified:
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java
> >>> ===================================================================
> >>> ---
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java
> >> 2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/PrimaryInfoFrame.java
> >> 2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -34,6 +34,7 @@
> >>>
> >>>  import com.vividsolutions.jump.workbench.WorkbenchContext;
> >>>  import com.vividsolutions.jump.workbench.model.LayerManagerProxy;
> >>> +import java.io.IOException;
> >>>
> >>>
> >>>  /**
> >>> @@ -44,7 +45,7 @@
> >>>   * positions InfoFrames differently depending on whether or not they
> >> are primary.
> >>>   */
> >>>  public class PrimaryInfoFrame extends InfoFrame {
> >>> -    public PrimaryInfoFrame(WorkbenchContext workbenchContext,
> >> LayerManagerProxy layerManagerProxy, TaskFrame taskFrame) {
> >>> +    public PrimaryInfoFrame(WorkbenchContext workbenchContext,
> >>> + LayerManagerProxy layerManagerProxy, TaskFrame taskFrame) throws
> >>> + IOException {
> >>>          super(workbenchContext, layerManagerProxy, taskFrame);
> >>>      }
> >>>  }
> >>>
> >>> Modified:
> >> core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java
> >>       2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/TaskFrame.java
> >>       2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -53,6 +53,7 @@
> >>>  import com.vividsolutions.jump.workbench.ui.renderer.Renderer;
> >>>
> >>>  import com.vividsolutions.jump.workbench.ui.zoom.ZoomBar;
> >>> +import java.io.IOException;
> >>>
> >>>  public class TaskFrame extends JInternalFrame implements
> TaskFrameProxy,
> >>>          CloneableInternalFrame, LayerViewPanelProxy,
> >> LayerNamePanelProxy, @@ -223,7 +224,7 @@
> >>>          return task.getLayerManager();
> >>>      }
> >>>
> >>> -    public InfoFrame getInfoFrame() {
> >>> +    public InfoFrame getInfoFrame() throws IOException {
> >>>          if (infoFrame == null || infoFrame.isClosed()) {
> >>>              infoFrame = new PrimaryInfoFrame(workbenchContext, this,
> >> this);
> >>>          }
> >>>
> >>> Modified:
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java
> >>> ===================================================================
> >>> ---
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java
> >>      2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++
> >>
> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/FeatureInfoTool.java
> >>      2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -34,6 +34,7 @@
> >>>  package com.vividsolutions.jump.workbench.ui.cursortool;
> >>>
> >>>  import com.vividsolutions.jts.geom.Coordinate;
> >>> +import com.vividsolutions.jts.geom.Envelope;
> >>>  import java.awt.Color;
> >>>  import java.awt.Cursor;
> >>>  import java.awt.Image;
> >>> @@ -49,9 +50,27 @@
> >>>  import com.vividsolutions.jump.workbench.model.FenceLayerFinder;
> >>>  import com.vividsolutions.jump.workbench.model.Layer;
> >>>  import com.vividsolutions.jump.workbench.model.Layerable;
> >>> +import com.vividsolutions.jump.workbench.model.WMSLayer;
> >>>  import com.vividsolutions.jump.workbench.ui.InfoFrame;
> >>>  import com.vividsolutions.jump.workbench.ui.images.IconLoader;
> >>> +import com.vividsolutions.wms.WMService; import java.awt.geom.Point2D;
> >>> +import java.io.File; import java.io.FileOutputStream; import
> >>> +java.io.FileReader; import java.io.IOException; import
> >>> +java.net.HttpURLConnection; import java.net.URL; import
> >>> +java.net.URLEncoder;
> >>>  import java.util.List;
> >>> +import javax.swing.JDialog;
> >>> +import javax.swing.JEditorPane;
> >>> +import javax.swing.JScrollPane;
> >>> +import javax.xml.transform.Transformer; import
> >>> +javax.xml.transform.TransformerFactory;
> >>> +import javax.xml.transform.stream.StreamResult;
> >>> +import javax.xml.transform.stream.StreamSource;
> >>> +import org.apache.commons.io.IOUtils;
> >>>  import org.openjump.core.rasterimage.RasterImageLayer;
> >>>  import
> >>
> org.openjump.core.rasterimage.RasterImageLayer.RasterDataNotFoundException;
> >>>
> >>> @@ -90,8 +109,79 @@
> >>>              infoFrame.getModel().add(layer, features);
> >>>          }
> >>>
> >>> +        Coordinate coord =
> >>> + getPanel().getViewport().toModelCoordinate(getViewSource());
> >>> +
> >>> +        // WMS
> >>> +        List<Layerable> wmsLay_l =
> >>
> getWorkbench().getContext().getLayerManager().getLayerables(WMSLayer.class);
> >>> +        String response = "";
> >>> +        for(Layerable lay : wmsLay_l) {
> >>> +            WMSLayer wmsLayer = (WMSLayer) lay;
> >>> +
> >>> +            String featInfoUrl =
> >> wmsLayer.getService().getCapabilities().getFeatureInfoURL();
> >>> +            String names = getWmsLayeNames(wmsLayer);
> >>> +
> >>> +            Point2D point =
> getPanel().getViewport().toViewPoint(coord);
> >>> +            Envelope bbox =
> >>> + getPanel().getViewport().getEnvelopeInModelCoordinates();
> >>> +
> >>> +            if (featInfoUrl.contains("?")) {
> >>> +                featInfoUrl += "&";
> >>> +            } else {
> >>> +                featInfoUrl += "?";
> >>> +            }
> >>> +            String version = wmsLayer.getWmsVersion();
> >>> +            if (WMService.WMS_1_0_0.equals(version)) {
> >>> +                featInfoUrl += "REQUEST=feature_info&WMTVER=1.0.0";
> >>> +            } else if (WMService.WMS_1_1_0.equals(version) ||
> >>> +                    WMService.WMS_1_1_1.equals(version) ||
> >>> +                    WMService.WMS_1_3_0.equals(version)) {
> >>> +                featInfoUrl +=
> >> "REQUEST=GetFeatureInfo&SERVICE=WMS&VERSION=" + version;
> >>> +            }
> >>> +
> >>> +            featInfoUrl += "&QUERY_LAYERS=" + names + "&LAYERS=" +
> >> names;
> >>> +            if (WMService.WMS_1_3_0.equals(version)) {
> >>> +                featInfoUrl += "&CRS=" + wmsLayer.getSRS() +
> >>> +                        "&I=" + (int) point.getX() +
> >>> +                        "&J=" + (int) point.getY();
> >>> +            } else {
> >>> +                featInfoUrl += "&SRS=" + wmsLayer.getSRS() +
> >>> +                        "&X=" + (int) point.getX() +
> >>> +                        "&Y=" + (int) point.getY();
> >>> +            }
> >>> +
> >>> +            featInfoUrl += "&WIDTH=" + getPanel().getWidth() +
> >>> +                    "&HEIGHT=" + getPanel().getHeight() +
> >>> +                    "&BBOX=" + bbox.getMinX() + "," + bbox.getMinY() +
> >> "," + bbox.getMaxX() + "," + bbox.getMaxY() +
> >>> +                    "&STYLES=" +
> >>> +                    "&FORMAT=" + wmsLayer.getFormat();
> >>> +
> >>> +            if (!WMService.WMS_1_0_0.equals(version)) {
> >>> +                try {
> >>> +                    featInfoUrl += "&INFO_FORMAT=" +
> >> wmsLayer.getService().getCapabilities().getInfoFormat();
> >>> +                } catch (IOException e) {
> >>> +                    featInfoUrl += "&INFO_FORMAT=text/plain";
> >>> +                }
> >>> +            }
> >>> +
> >>> +            URL url = stripXhtmlTags(featInfoUrl);
> >>> +
> >>> +            String newLine = System.getProperty("line.separator");
> >>> +            response = response.concat("+
> >>> + ").concat(wmsLayer.getName()).concat(newLine);
> >>> +
> >>> +            String wmsResponse;
> >>> +            try {
> >>> +                wmsResponse = IOUtils.toString(url.openStream());
> >>> +                wmsResponse = cleanWmsResponse(wmsResponse);
> >>> +            } catch(Exception ex) {
> >>> +                wmsResponse = ex.toString();
> >>> +                wmsResponse = wmsResponse.concat(newLine);
> >>> +            }
> >>> +            response = response.concat(wmsResponse);
> >>> +            response = response.concat(newLine);
> >>> +
> >>> +        };
> >>> +        infoFrame.setWmsInfo(response);
> >>> +
> >>>          // Raster data
> >>> -        Coordinate coord =
> >> getPanel().getViewport().toModelCoordinate(getViewSource());
> >>>          List<Layerable> layerables_l =
> >>
> getWorkbench().getContext().getLayerManager().getLayerables(RasterImageLayer.class);
> >>>
> >>>          String[] layerNames = new String[layerables_l.size()]; @@
> >> -122,15 +212,78 @@
> >>>                      } catch(RasterDataNotFoundException ex) {
> >>>                          cellValues[l] = "???";
> >>>                      }
> >>> -
> >>> -
> >>> -
> >>>                  }
> >>>              }
> >>>          }
> >>>
> >>> -        infoFrame.setRasterValues(layerNames, cellValues);
> >>> -
> >>> +        infoFrame.setRasterValues(layerNames, cellValues);
> >>>          infoFrame.surface();
> >>>      }
> >>> +
> >>> +    private String getWmsLayeNames(WMSLayer selLayer) {
> >>> +        int i;
> >>> +        String names = "";
> >>> +        List<String> layerNames = selLayer.getLayerNames();
> >>> +        for (i=0; i< layerNames.size(); ++i) {
> >>> +            String name = (String) layerNames.get(i);
> >>> +            try {
> >>> +                name = URLEncoder.encode(name, "UTF-8");
> >>> +            } catch (Exception ignored) {
> >>> +            }
> >>> +            names += name;
> >>> +            if (i < layerNames.size() - 1) {
> >>> +                names += ",";
> >>> +            }
> >>> +        }
> >>> +
> >>> +        return names;
> >>> +    }
> >>> +
> >>> +    private URL stripXhtmlTags(String serverURL) throws Exception {
> >>> +
> >>> +        File tmpFile = File.createTempFile("wms", "q");
> >>> +        FileOutputStream cleanHtml = new FileOutputStream(tmpFile);
> >>> +        boolean resOk = true;
> >>> +        //String xsl =
> >> (String)getClass().getResource("clean.xsl").getContent();
> >>> +        //System.out.println("Ecco l'xsl: "+xsl);
> >>> +        Transformer pulizia =
> >> TransformerFactory.newInstance().newTransformer(
> >>> +                new
> >> StreamSource(getClass().getResourceAsStream("clean.xsl")));
> >>> +        try {
> >>> +            pulizia.transform(new StreamSource(serverURL),
> >>> +                    new StreamResult(cleanHtml));
> >>> +        } catch (Exception te) {
> >>> +            //System.out.println("XSLT Error: "+te.getMessage());
> >>> +            resOk = false;
> >>> +        } finally {
> >>> +            cleanHtml.close();
> >>> +        }
> >>> +        // [DR] gestione file vuoti
> >>> +        if (!resOk || !(new FileReader(tmpFile).ready())) {
> >>> +            /*
> >>> +            FileWriter noResponse = new FileWriter(tmpFile);
> >>> +            noResponse.write("<html><body><h2>Risultati
> >> interrogazione</h2>"+
> >>> +            "Il server non ha restituito alcun
> >> risultato.</body></html>");
> >>> +            noResponse.close();
> >>> +             */
> >>> +            //gestione risposte non html (testuali)
> >>> +            return new URL(serverURL);
> >>> +        }
> >>> +        return tmpFile.toURI().toURL();
> >>> +    }
> >>> +
> >>> +    private String cleanWmsResponse(String inputWms) {
> >>> +
> >>> +        String pattern = "GetFeatureInfo results:";
> >>> +        int index = inputWms.indexOf(pattern);
> >>> +        if(index != -1) {
> >>> +            int endIndex = index + pattern.length();
> >>> +            inputWms = inputWms.substring(endIndex);
> >>> +            if(inputWms.startsWith("\n\n")) {
> >>> +                inputWms = inputWms.replaceFirst("\n\n", "");
> >>> +            }
> >>> +        }
> >>> +
> >>> +        return inputWms;
> >>> +    }
> >>> +
> >>>  }
> >>>
> >>> Added:
> >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl
> >>> ===================================================================
> >>> ---
> >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl
> >>                       (rev 0)
> >>> +++
> >> core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/clean.xsl
> >> 2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -0,0 +1,39 @@
> >>> +<?xml version="1.0" encoding="UTF-8"?>
> >>> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >>> +    xmlns:xhtml="http://www.w3.org/1999/xhtml";
> >>> +    version="1.0">
> >>> +
> >>> +  <xsl:output method="html" version="3.2" />
> >>> +
> >>> +  <xsl:strip-space elements="*" />
> >>> +
> >>> +  <xsl:template match="/">
> >>> +    <xsl:if test="not(html)">
> >>> +        <html>
> >>> +            <head>
> >>> +            </head>
> >>> +            <body>
> >>> +                <xsl:apply-templates />
> >>> +            </body>
> >>> +        </html>
> >>> +    </xsl:if>
> >>> +  </xsl:template>
> >>> +
> >>> +  <xsl:template match="*">
> >>> +     <xsl:choose>
> >>> +     <xsl:when test="local-name()='img'" />
> >>> +     <xsl:otherwise>
> >>> +         <xsl:element name="{local-name()}">
> >>> +           <xsl:apply-templates select="@*|node()"/>
> >>> +         </xsl:element>
> >>> +     </xsl:otherwise>
> >>> +     </xsl:choose>
> >>> +  </xsl:template>
> >>> +
> >>> +  <xsl:template match="@*">
> >>> +    <xsl:attribute name="{local-name()}">
> >>> +      <xsl:value-of select="."/>
> >>> +    </xsl:attribute>
> >>> +  </xsl:template>
> >>> +
> >>> +</xsl:stylesheet>
> >>> \ No newline at end of file
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/AbstractParser.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/AbstractParser.java
> 2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/AbstractParser.java
> 2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -39,7 +39,6 @@
> >>>
> >>>  import java.io.IOException;
> >>>  import java.io.InputStream;
> >>> -import java.io.InputStreamReader;
> >>>  import java.util.ArrayList;
> >>>  import java.util.LinkedList;
> >>>  import java.util.List;
> >>> @@ -48,7 +47,6 @@
> >>>  import org.apache.xerces.parsers.DOMParser;
> >>>  import org.w3c.dom.CharacterData;
> >>>  import org.w3c.dom.Document;
> >>> -import org.w3c.dom.Element;
> >>>  import org.w3c.dom.NamedNodeMap;
> >>>  import org.w3c.dom.Node;
> >>>  import org.w3c.dom.NodeList;
> >>> @@ -155,9 +153,31 @@
> >>>                  }
> >>>              }
> >>>          }
> >>> +
> >>>          return formatList;
> >>>      }
> >>>
> >>> +    protected LinkedList<String> getInfoFormats(Document doc) {
> >>> +
> >>> +        // get the supported infoFormats
> >>> +        final Node formatNode = XMLTools.simpleXPath(doc,
> getRootPath()
> >> + "/Capability/Request/GetMap");
> >>> +        NodeList nl = formatNode.getChildNodes();
> >>> +
> >>> +        final Node infoFormatNode = XMLTools.simpleXPath(doc,
> >> "WMT_MS_Capabilities/Capability/Request/GetFeatureInfo");
> >>> +        LinkedList<String> infoFormatList = new LinkedList<String>();
> >>> +        if (infoFormatNode != null) {
> >>> +            nl = infoFormatNode.getChildNodes();
> >>> +            for (int i = 0; i < nl.getLength(); i++) {
> >>> +                Node n = nl.item(i);
> >>> +                if (n.getNodeType() == Node.ELEMENT_NODE &&
> >> "Format".equals(n.getNodeName())) {
> >>> +
> >> infoFormatList.add(n.getFirstChild().getNodeValue());
> >>> +                }
> >>> +            }
> >>> +        }
> >>> +
> >>> +        return infoFormatList;
> >>> +
> >>> +    }
> >>>
> >>>     /**
> >>>      * Traverses the DOM tree underneath the specified Node and
> >> generates @@ -174,6 +194,7 @@
> >>>          LinkedList<MapLayer> subLayers = new LinkedList<MapLayer>();
> >>>          BoundingBox geographicBBox = null;
> >>>          ArrayList<BoundingBox> boundingBoxList = new
> >> ArrayList<BoundingBox> ( );
> >>> +        List<MapStyle> styles = new ArrayList<MapStyle>();
> >>>
> >>>          NodeList nl = layerNode.getChildNodes();
> >>>
> >>> @@ -199,6 +220,44 @@
> >>>                          boundingBoxList.add ( new
> >> BoundingBox("Geographics", geographicBBox.getEnvelope()) );
> >>>                      } else if( n.getNodeName().equals( "Layer" ) ) {
> >>>                          subLayers.add( wmsLayerFromNode( n ) );
> >>> +                    } else if (n.getNodeName().equals("Style")) {
> >> //$NON-NLS-1$
> >>> +                        String styleName = ""; //$NON-NLS-1$
> >>> +                        String titleName = ""; //$NON-NLS-1$
> >>> +                        String legendFormat = ""; //$NON-NLS-1$
> >>> +                        String url = ""; //$NON-NLS-1$
> >>> +                        int h=0,w=0;
> >>> +                        NodeList nodeStyle = n.getChildNodes();
> >>> +                        for( int k = 0; k < nodeStyle.getLength(); k++
> >> ) {
> >>> +                            Node n1 = nodeStyle.item(k);
> >>> +                            if (n1.getNodeName().equals("Name")) {
> >> //$NON-NLS-1$
> >>> +                                styleName = ((CharacterData)
> >> n1.getFirstChild()).getData();
> >>> +                            } else if
> (n1.getNodeName().equals("Title")
> >> & n1.hasChildNodes()) { //$NON-NLS-1$
> >>> +                                titleName = ((CharacterData)
> >> n1.getFirstChild()).getData();
> >>> +                            } else if
> >> (n1.getNodeName().equals("LegendURL")) { //$NON-NLS-1$
> >>> +                                try {
> >>> +
> >>
> h=Integer.parseInt(n1.getAttributes().getNamedItem("height").getNodeValue());
> >>> +
> >>
> w=Integer.parseInt(n1.getAttributes().getNamedItem("width").getNodeValue());
> >>> +                                }
> >>> +                                catch (Exception e) {
> >>> +                                    e.printStackTrace();
> >>> +                                    throw new Exception(e.toString());
> >>> +                                }
> >>> +                                NodeList nodelegend =
> >> n1.getChildNodes();
> >>> +                                for( int k1 = 0; k1 <
> >> nodelegend.getLength(); k1++ ) {
> >>> +                                    Node n2 = nodelegend.item(k1);
> >>> +                                    if
> >> (n2.getNodeName().equals("Format")) { //$NON-NLS-1$
> >>> +                                        legendFormat =
> >>> +                                            ((CharacterData)
> >> n2.getFirstChild()).getData();
> >>> +                                    } else if
> >> (n2.getNodeName().equals("OnlineResource")) { //$NON-NLS-1$
> >>> +                                        url =
> >>> +                                            n2.getAttributes()
> >>> +
> >> .getNamedItem("xlink:href").getNodeValue(); //$NON-NLS-1$
> >>> +                                    }
> >>> +                                }
> >>> +
> >>> +                            }
> >>> +                        }
> >>> +                        styles.add(new MapStyle(styleName, titleName,
> >>> + url, legendFormat,w,h));
> >>>                      }
> >>>                  }
> >>>              } catch( Exception e ) {
> >>> @@ -208,7 +267,7 @@
> >>>          }
> >>>
> >>>          // call the new constructor with boundingBoxList in MapLayer
> >> [uwe dalluege]
> >>> -        return new MapLayer(name, title, srsList, subLayers,
> >> geographicBBox, boundingBoxList);
> >>> +        return new MapLayer(name, title, srsList, subLayers,
> >>> + geographicBBox, boundingBoxList, styles);
> >>>      }
> >>>
> >>>      protected void addSRSNode(Node n, List<String> srsList) throws
> >> Exception {
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/Capabilities.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/Capabilities.java
>  2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/Capabilities.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -51,8 +51,9 @@
> >>>    private String title;
> >>>    private ArrayList mapFormats;
> >>>    private WMService service;
> >>> -  private String getMapURL, getFeatureInfoURL;
> >>> -
> >>> +  private String getMapURL, featureInfoURL;  private ArrayList
> >>> + infoFormats;
> >>> +
> >>>    /**
> >>>     * Creates a new WMS Capabilities object. Should generally only be
> >> used by the Parser.
> >>>     * @param service the WMService to which these Capabilites belong @@
> >> -60,19 +61,22 @@
> >>>     * @param topLayer the top MapLayer of the entire layer tree
> >>>     * @param mapFormats the Collection of supported formats
> >>>     */
> >>> -  public Capabilities(WMService service, String title, MapLayer
> >> topLayer, Collection mapFormats) {
> >>> +  public Capabilities(WMService service, String title, MapLayer
> >> topLayer,
> >>> +          Collection mapFormats, Collection infoFormats) {
> >>>      this.service = service;
> >>>      this.title = title;
> >>>      this.topLayer = topLayer;
> >>>      this.mapFormats = new ArrayList( mapFormats );
> >>> +    this.infoFormats = new ArrayList(infoFormats);
> >>>      this.getMapURL = service.getServerUrl();
> >>> -    this.getFeatureInfoURL = service.getServerUrl();
> >>> +    this.featureInfoURL = service.getServerUrl();
> >>>    }
> >>>
> >>> -  public Capabilities(WMService service, String title, MapLayer
> >> topLayer, Collection mapFormats, String getMapURL, String
> >> getFeatureInfoURL) {
> >>> -      this(service, title, topLayer, mapFormats);
> >>> +  public Capabilities(WMService service, String title, MapLayer
> >> topLayer,
> >>> +          Collection mapFormats, Collection infoFormats, String
> >> getMapURL, String featureInfoURL) {
> >>> +      this(service, title, topLayer, mapFormats, infoFormats);
> >>>        this.getMapURL = getMapURL;
> >>> -      this.getFeatureInfoURL = getFeatureInfoURL;
> >>> +      this.featureInfoURL = featureInfoURL;
> >>>      }
> >>>
> >>>    /**
> >>> @@ -121,8 +125,8 @@
> >>>        return getMapURL;
> >>>    }
> >>>
> >>> -  public String getGetFeatureInfoURL() {
> >>> -      return getFeatureInfoURL;
> >>> +  public String getFeatureInfoURL() {
> >>> +      return featureInfoURL;
> >>>    }
> >>>
> >>>    public void setGetMapURL(String url) { @@ -142,5 +146,16 @@
> >>>      }
> >>>      return formats;
> >>>    }
> >>> +
> >>> +    public String getInfoFormat() {
> >>> +        String format = "text/plain";
> >>> +        if (!infoFormats.contains(format)) {
> >>> +            Iterator it = infoFormats.iterator();
> >>> +            if (it.hasNext()) {
> >>> +                format = (String) it.next();
> >>> +            }
> >>> +        }
> >>> +        return format;
> >>> +    }
> >>>
> >>>  }
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/MapLayer.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/MapLayer.java
>  2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/MapLayer.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -63,10 +63,13 @@
> >>>      // user modifiable members
> >>>      private boolean enabled = false;
> >>>
> >>> +    private List<MapStyle> styles;
> >>> +
> >>>      /**
> >>>       * Creates a new instance of MapLayer
> >>>       */
> >>> -    public MapLayer(String name, String title, Collection srsList,
> >> Collection subLayers, BoundingBox bbox) {
> >>> +    public MapLayer(String name, String title, Collection srsList,
> >>> +            Collection subLayers, BoundingBox bbox, List<MapStyle>
> >>> + styles) {
> >>>          this.parent = null;
> >>>          this.name = name;
> >>>          this.title = title;
> >>> @@ -77,15 +80,17 @@
> >>>            (it.next()).parent = this;
> >>>          }
> >>>          this.bbox = bbox;
> >>> +        setStyles(styles);
> >>>      }
> >>>
> >>>      /**
> >>>       * Creates a new instance of MapLayer with boundingBoxList [uwe
> >> dalluege]
> >>>       */
> >>> -    public MapLayer ( String name, String title, Collection srsList,
> >> Collection subLayers,
> >>> -             BoundingBox bbox, ArrayList<BoundingBox> boundingBoxList
> )
> >> {
> >>> -        this ( name, title, srsList, subLayers, bbox );
> >>> -         this.boundingBoxList = boundingBoxList;
> >>> +    public MapLayer
> >>> +     ( String name, String title, Collection srsList, Collection
> >> subLayers,
> >>> +             BoundingBox bbox, ArrayList
> boundingBoxList,List<MapStyle>
> >> styles ) {
> >>> +     this ( name, title, srsList, subLayers, bbox,styles );
> >>> +     this.boundingBoxList = boundingBoxList;
> >>>      }
> >>>
> >>>
> >>> @@ -297,8 +302,62 @@
> >>>          if (parent != null)
> fullSRSList.addAll(parent.getFullSRSList());
> >>>          return fullSRSList;
> >>>      }
> >>> +
> >>> +      /**
> >>> +     * Sets the selected WMS layer style
> >>> +     *
> >>> +     * @param selectedStyle
> >>> +     */
> >>> +    public void setSelectedStyle( MapStyle selectedStyle ) {
> >>> +        for( Iterator<MapStyle> iter = styles.iterator();
> >> iter.hasNext(); ) {
> >>> +            MapStyle element = iter.next();
> >>> +            element.setSelected(false, false);
> >>> +        }
> >>> +        selectedStyle.setSelected(true, false);
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * Gets the WMS layer style by name
> >>> +     *
> >>> +     * @param styleName
> >>> +     * @return
> >>> +     */
> >>> +    public MapStyle getStyle( String styleName ) {
> >>> +        for( Iterator<MapStyle> iter = styles.iterator();
> >> iter.hasNext(); ) {
> >>> +            MapStyle element = iter.next();
> >>> +            if (element.getName().equals(styleName))
> >>> +                return element;
> >>> +        }
> >>> +        return null;
> >>> +    }
> >>> +
> >>> +    public List<MapStyle> getStyles() {
> >>> +        return styles;
> >>> +    }
> >>>
> >>> +    /**
> >>> +     * @param sublayer
> >>> +     */
> >>> +    public void setSublayer(ArrayList sublayer) {
> >>> +        this.subLayers = sublayer;
> >>> +    }
> >>> +
> >>>      /**
> >>> +     * @param newStyles
> >>> +     */
> >>> +    public void setStyles( List<MapStyle> newStyles ) {
> >>> +        this.styles = newStyles;
> >>> +        for( Iterator<MapStyle> iter = styles.iterator();
> >> iter.hasNext(); ) {
> >>> +            MapStyle element = iter.next();
> >>> +            element.setLayer(this);
> >>> +        }
> >>> +
> >>> +        if (!styles.isEmpty()) {
> >>> +            styles.get(0).setSelected(true, true);
> >>> +        }
> >>> +    }
> >>> +
> >>> +    /**
> >>>       * Returns a somewhat nicely-formatted string representing all of
> >> the details of
> >>>       * this layer and its sub-layers (recursively).
> >>>       * @return a somewhat nicely-formatted string representing all of
> >> the details of
> >>>
> >>> Added: core/trunk/src/com/vividsolutions/wms/MapStyle.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/MapStyle.java
> >>              (rev 0)
> >>> +++ core/trunk/src/com/vividsolutions/wms/MapStyle.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -0,0 +1,239 @@
> >>> +package com.vividsolutions.wms;
> >>> +
> >>> +import java.awt.image.BufferedImage;
> >>> +import java.io.IOException;
> >>> +import java.net.MalformedURLException;
> >>> +import java.net.URL;
> >>> +import java.util.Iterator;
> >>> +
> >>> +import javax.imageio.ImageIO;
> >>> +import javax.swing.Icon;
> >>> +import javax.swing.ImageIcon;
> >>> +
> >>> +import org.apache.log4j.Logger;
> >>> +
> >>> +/*
> >>> + * Estilo asociado a una capa. Se caracteriza por tener asociado un
> >>> + * nombre, un estilo y una leyenda
> >>> + * @author Marco Antonio Fuentelsaz P?rez
> >>> + *
> >>> + */
> >>> +public class MapStyle {
> >>> +
> >>> +    /** Log */
> >>> +    private final static Logger LOGGER =
> >>> + Logger.getLogger(MapStyle.class);
> >>> +
> >>> +    /** Nombre asociado al estilo */
> >>> +    private String name;
> >>> +
> >>> +    /** Titulo asociado al estilo */
> >>> +    private String title;
> >>> +
> >>> +    /** URL asociado a la leyenda */
> >>> +    private String urlLegend;
> >>> +
> >>> +    /** Formato asociado a la leyenda */
> >>> +    private String formatLegend;
> >>> +
> >>> +    /** */
> >>> +    private boolean selected;
> >>> +
> >>> +    /** Legend icon */
> >>> +    private Icon legendIcon;
> >>> +
> >>> +    /** */
> >>> +    private MapLayer layer;
> >>> +
> >>> +    /** Flag to indicate if the legend icon have been loaded or not */
> >>> +    private boolean loadedIcon;
> >>> +
> >>> +    private int width;
> >>> +    private int height;
> >>> +
> >>> +    /**
> >>> +     * @param name
> >>> +     * @param title
> >>> +     * @param urlLegend
> >>> +     * @param formatLegend
> >>> +     */
> >>> +    public MapStyle( String name, String title, String urlLegend,
> >> String formatLegend ) {
> >>> +        this.name = name;
> >>> +        this.title = title;
> >>> +        setUrlLegend(urlLegend);
> >>> +        this.formatLegend = formatLegend;
> >>> +        this.selected = false;
> >>> +    }
> >>> +
> >>> +    public MapStyle( String name, String title, String urlLegend,
> >> String formatLegend, int w, int h  ) {
> >>> +        this.name = name;
> >>> +        this.title = title;
> >>> +        setUrlLegend(urlLegend);
> >>> +        this.formatLegend = formatLegend;
> >>> +        this.selected = false;
> >>> +        this.width = w;
> >>> +        this.height = h;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public int getWidth() {
> >>> +        return width;
> >>> +    }
> >>> +   /**
> >>> +     * @return
> >>> +     */
> >>> +    public int getHeight() {
> >>> +        return height;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public String getName() {
> >>> +        return name;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param name
> >>> +     */
> >>> +    public void setName( String name ) {
> >>> +        this.name = name;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public String getTitle() {
> >>> +        return title;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param title
> >>> +     */
> >>> +    public void setTitle( String title ) {
> >>> +        this.title = title;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public String getUrlLegend() {
> >>> +        return urlLegend;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param newURLLegend
> >>> +     */
> >>> +    public void setUrlLegend( String newURLLegend ) {
> >>> +        this.urlLegend = newURLLegend;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public String getFormatLegend() {
> >>> +        return formatLegend;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param formatLegend
> >>> +     */
> >>> +    public void setFormatLegend( String formatLegend ) {
> >>> +        this.formatLegend = formatLegend;
> >>> +    }
> >>> +
> >>> +    @Override
> >>> +    public String toString() {
> >>> +        return name;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * Load the legend icon at first request, not before
> >>> +     *
> >>> +     * @return
> >>> +     */
> >>> +    public Icon getLegendIcon() {
> >>> +        if (!loadedIcon) {
> >>> +            loadIconFromLegendURL();
> >>> +        }
> >>> +        return legendIcon;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * Loads the WMS style legend icon on request
> >>> +     */
> >>> +    private void loadIconFromLegendURL() {
> >>> +        URL selectedUrl = null;
> >>> +        try {
> >>> +            selectedUrl = new URL(urlLegend);
> >>> +        } catch (MalformedURLException e) {
> >>> +            LOGGER.error(e.getMessage());
> >>> +        }
> >>> +
> >>> +        if (selectedUrl != null) {
> >>> +            BufferedImage image;
> >>> +            try {
> >>> +                image = ImageIO.read(selectedUrl);
> >>> +                legendIcon = new ImageIcon(image);
> >>> +                loadedIcon = true;
> >>> +            } catch (IOException e) {
> >>> +                LOGGER.error(e.getMessage());
> >>> +            }
> >>> +
> >>> +        } else {
> >>> +            loadedIcon = false;
> >>> +        }
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @return
> >>> +     */
> >>> +    public boolean isSelected() {
> >>> +        return selected;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param selected
> >>> +     * @param check
> >>> +     */
> >>> +    public void setSelected( boolean selected, boolean check ) {
> >>> +        if (check) {
> >>> +            if (this.selected && !selected && layer.getStyles().size()
> >> == 1)
> >>> +                return;
> >>> +            if (this.selected && !selected) {
> >>> +                for( Iterator<MapStyle> iter =
> >> layer.getStyles().iterator(); iter.hasNext(); ) {
> >>> +                    MapStyle element = iter.next();
> >>> +                    if (!element.equals(this))
> >>> +                        element.setSelected(true, false);
> >>> +
> >>> +                }
> >>> +            }
> >>> +        }
> >>> +
> >>> +        this.selected = selected;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     *
> >>> +     */
> >>> +    public void fireStyleChanged() {
> >>> +        layer.setSelectedStyle(this);
> >>> +    }
> >>> +
> >>> +    @Override
> >>> +    public boolean equals( Object other ) {
> >>> +        if (other == this)
> >>> +            return true;
> >>> +        if (!(other instanceof MapStyle))
> >>> +            return false;
> >>> +        return getName().equals(((MapStyle) other).getName());
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * @param layer
> >>> +     */
> >>> +    public void setLayer( MapLayer layer ) {
> >>> +        this.layer = layer;
> >>> +    }
> >>> +}
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java
>  2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_0.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -78,11 +78,13 @@
> >>>      }
> >>>
> >>>
> >>> +    @Override
> >>>      protected Capabilities parseCapabilities(WMService service,
> >> Document doc) throws IOException {
> >>>          String title = getTitle(doc);
> >>>          MapLayer topLayer = wmsLayerFromNode(XMLTools.simpleXPath(doc,
> >> "WMT_MS_Capabilities/Capability/Layer"));
> >>>          LinkedList<String> formatList = getFormatList(doc);
> >>> -        return new Capabilities(service, title, topLayer, formatList);
> >>> +
> >>> +        return new Capabilities(service, title, topLayer, formatList,
> >>> + getInfoFormats(doc));
> >>>      }
> >>>
> >>>
> >>> @@ -90,4 +92,5 @@
> >>>          return "SRS";
> >>>      }
> >>>
> >>> +
> >>>  }
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java
>  2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_1.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -84,8 +84,8 @@
> >>>          MapLayer topLayer = wmsLayerFromNode(XMLTools.simpleXPath(doc,
> >> "WMT_MS_Capabilities/Capability/Layer"));
> >>>          LinkedList<String> formatList = getFormatList(doc);
> >>>          String getMapURL = getMapURL(doc);
> >>> -        String getFeatureInfoURL = getFeatureInfoURL(doc);
> >>> -        return new Capabilities(service, title, topLayer, formatList,
> >> getMapURL, getFeatureInfoURL );
> >>> +        String featureInfoURL = getFeatureInfoURL(doc);
> >>> +        return new Capabilities(service, title, topLayer, formatList,
> >>> + getInfoFormats(doc), getMapURL, featureInfoURL );
> >>>      }
> >>>
> >>>
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java
>  2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/ParserWMS1_3.java
>  2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -85,7 +85,7 @@
> >>>          LinkedList<String> formatList = getFormatList(doc);
> >>>          String getMapURL = getMapURL(doc);
> >>>          String getFeatureInfoURL = getFeatureInfoURL(doc);
> >>> -        return new Capabilities(service, title, topLayer, formatList,
> >> getMapURL, getFeatureInfoURL );
> >>> +        return new Capabilities(service, title, topLayer, formatList,
> >>> + getInfoFormats(doc), getMapURL, getFeatureInfoURL );
> >>>      }
> >>>
> >>>
> >>>
> >>> Modified: core/trunk/src/com/vividsolutions/wms/WMService.java
> >>> ===================================================================
> >>> --- core/trunk/src/com/vividsolutions/wms/WMService.java
> 2015-12-23
> >> 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/com/vividsolutions/wms/WMService.java
> 2015-12-23
> >> 16:26:41 UTC (rev 4663)
> >>> @@ -215,16 +215,16 @@
> >>>     * @return a MapRequest object which can be used to retrieve a map
> >> image
> >>>     *         from this service
> >>>     */
> >>> -     public MapRequest createMapRequest() {
> >>> -         // [UT] 04.02.2005 changed
> >>> -         MapRequest mr = new MapRequest( this );
> >>> -         mr.setVersion( this.wmsVersion );
> >>> -        return mr;
> >>> -     }
> >>> -
> >>> -     public String getVersion(){
> >>> -         return wmsVersion;
> >>> -     }
> >>> +    public MapRequest createMapRequest() {
> >>> +        // [UT] 04.02.2005 changed
> >>> +        MapRequest mr = new MapRequest( this );
> >>> +        mr.setVersion( this.wmsVersion );
> >>> +    return mr;
> >>> +    }
> >>> +
> >>> +    public String getVersion(){
> >>> +        return wmsVersion;
> >>> +    }
> >>>
> >>>      //
> >>>      // The WMService appends other parameters to the end of the URL @@
> >> -232,7 +232,7 @@
> >>>      public static String legalize(String url) {
> >>>        String fixedURL = url.trim();
> >>>
> >>> -      if (fixedURL.indexOf("?") == -1) {
> >>> +      if (!fixedURL.contains("?")) {
> >>>          fixedURL = fixedURL + "?";
> >>>        } else {
> >>>          if (fixedURL.endsWith("?")) {
> >>>
> >>> Modified:
> >> core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java
> >>> ===================================================================
> >>> --- core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java
> >>      2015-12-23 15:39:50 UTC (rev 4662)
> >>> +++ core/trunk/src/org/openjump/core/ui/plugin/queries/QueryDialog.java
> >>      2015-12-23 16:26:41 UTC (rev 4663)
> >>> @@ -22,6 +22,8 @@
> >>>  import java.text.SimpleDateFormat;
> >>>  import java.util.*;
> >>>  import java.util.List;
> >>> +import java.util.logging.Level;
> >>> +import java.util.logging.Logger;
> >>>  import java.util.regex.Matcher;
> >>>  import java.util.regex.Pattern;
> >>>
> >>> @@ -901,9 +903,13 @@
> >>>                  // initialization for infoframe
> >>>                  InfoFrame info = null;
> >>>                  if(display.getState()) {
> >>> -                    info = new
> InfoFrame(context.getWorkbenchContext(),
> >>> -                        (LayerManagerProxy)context,
> >>> -
> >> (TaskFrame)context.getWorkbenchFrame().getActiveInternalFrame());
> >>> +                    try {
> >>> +                        info = new
> >> InfoFrame(context.getWorkbenchContext(),
> >>> +                                (LayerManagerProxy)context,
> >>> +
> >> (TaskFrame)context.getWorkbenchFrame().getActiveInternalFrame());
> >>> +                    } catch (IOException ex) {
> >>> +                        ex.printStackTrace();
> >>> +                    }
> >>>                  }
> >>>
> >>>                  // Loop on the requested layers
> >>>
> >>>
> >>>
> >>
> ------------------------------------------------------------------------------
> >>> _______________________________________________
> >>> Jump-pilot-devel mailing list
> >>> Jump-pilot-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>>
> >>>
> >>
> ------------------------------------------------------------------------------
> >>> _______________________________________________
> >>> Jump-pilot-devel mailing list
> >>> Jump-pilot-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>>
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >> _______________________________________________
> >> Jump-pilot-devel mailing list
> >> Jump-pilot-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> >
> >
> >
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to