Hi Jukka,
thanks for the quick answer.
Regarding user/password of WMS, I can see that the code comes from
SelectUrlWithAuthPanel.class but I don't see where these datas are stored
on WMS classes ( or maybe not, they are only asked at the beginning of the
WMS request process).


This plugin is relatively simple. If you have time you can see the code on
class org.openjump.core.ui.plugin.wms.WMSLegendPlugIn.

The core of legend request is Line 71, the String
getLegendUrl(PlugInContext context, String names).
The String is divided into 3 parts:
a) PlugInContext refers to WMS layer where to extract the URL calling
layer.getService().getServerUrl().
b) while String "names" is the name of the WMS layer.
c) the rest of the code calls GetLegendGraphic, Version, etc, including
some graphical components for the legend.

I don't have experience with WMS. I understood from your code (
https://username:pas...@site.fi/cgi-bin/service1?) that that user/password
should before the the server URL string (part a of String getLegendUrl) .
If so, and if OJ memorize somewhere those datas, it should be easy to
modify this String to get Legends from WMS withcredentials.
Otherwhise I should build "ad hoc" another panel where users have to enter
those info again.

Regarding ChangeWMSStyleDialogPlugIn, I gave a look to it thinking to port
to OpenJUMP.  While GetLegend is relatively easy as it is shown a new image
on a separate panel, for the Style it should redraw the workbench. Which I
still don't know how to do.

I really appreciate any comment or help on the code from you.

Best Regards

Peppe


2015-06-04 17:56 GMT+02:00 Rahkonen Jukka (MML) <
jukka.rahko...@maanmittauslaitos.fi>:

>  Hi Peppe,
>
>
>
> Seems to work with Geoserver and it generates also a correct URL for
> Mapserver so it should work. However, there is some little issue with sites
> using basic authentication. I think that the plugin is sending the request
> without credentials or something like that. Note that the error log shows
> URL as
>
> URL: https://username:pas...@site.fi/cgi-bin/service1? and if I copy the
> whole URL into browser I get the legend graphics. However, OpenJUMP gets an
> http 401 “not authorized” response.
>
>
>
>
>
> javax.imageio.IIOException: Can't get input stream from URL!
>
>                              at javax.imageio.ImageIO.read(Unknown Source)
>
>                              at
> org.openjump.core.ui.plugin.wms.WMSLegendPlugIn.getLegendPanel(WMSLegendPlugIn.java:150)
>
>                              at
> org.openjump.core.ui.plugin.wms.WMSLegendPlugIn.execute(WMSLegendPlugIn.java:48)
>
>                              at
> com.vividsolutions.jump.workbench.plugin.AbstractPlugIn$1.actionPerformed(AbstractPlugIn.java:342)
>
>                              at
> javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
>
>                              at
> javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
>
>                              at
> javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
>
>                              at
> javax.swing.DefaultButtonModel.setPressed(Unknown Source)
>
>                              at javax.swing.AbstractButton.doClick(Unknown
> Source)
>
>                              at
> javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
>
>                              at
> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
>
>                              at
> java.awt.Component.processMouseEvent(Unknown Source)
>
>                              at
> javax.swing.JComponent.processMouseEvent(Unknown Source)
>
>                              at java.awt.Component.processEvent(Unknown
> Source)
>
>                              at java.awt.Container.processEvent(Unknown
> Source)
>
>                              at
> java.awt.Component.dispatchEventImpl(Unknown Source)
>
>                              at
> java.awt.Container.dispatchEventImpl(Unknown Source)
>
>                              at java.awt.Component.dispatchEvent(Unknown
> Source)
>
>                              at
> java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
>
>                              at
> java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
>
>                              at
> java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
>
>                              at
> java.awt.Container.dispatchEventImpl(Unknown Source)
>
>                              at java.awt.Window.dispatchEventImpl(Unknown
> Source)
>
>                              at java.awt.Component.dispatchEvent(Unknown
> Source)
>
>                              at
> java.awt.EventQueue.dispatchEventImpl(Unknown Source)
>
>                              at java.awt.EventQueue.access$200(Unknown
> Source)
>
>                              at java.awt.EventQueue$3.run(Unknown Source)
>
>                              at java.awt.EventQueue$3.run(Unknown Source)
>
>                              at
> java.security.AccessController.doPrivileged(Native Method)
>
>                              at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
>
>                              at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
>
>                              at java.awt.EventQueue$4.run(Unknown Source)
>
>                              at java.awt.EventQueue$4.run(Unknown Source)
>
>                              at
> java.security.AccessController.doPrivileged(Native Method)
>
>                              at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
>
>                              at java.awt.EventQueue.dispatchEvent(Unknown
> Source)
>
>                              at
> java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
>
>                              at
> java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
>
>                              at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>
>                              at
> java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>                              at
> java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>
>                              at java.awt.EventDispatchThread.run(Unknown
> Source)
>
> Caused by: java.io.IOException: Server returned HTTP response code: 401
> for URL:
> https://username:pas...@site.fi/cgi-bin/service1?&SERVICE=WMS&REQUEST=GetLegendGraphic&VERSION=1.1.1&FORMAT=image/png&WIDTH=16&HEIGHT=16&legend_options=bgColor:0xFFFFEE;dpi:100;fontAntiAliasing:true;forceLabels:on&LAYER=tukialueet
>
>                              at
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
>
>                              at
> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown
> Source)
>
>                              at java.net.URL.openStream(Unknown Source)
>
>                              ... 42 more
>
>
>
> -Jukka Rahkonen-
>
>
>
>
>
> Giuseppe Aruta wrote:
>
>
>
> The plugin will be available on OJ 4474 Night Snapshot
>
>
>
> 2015-06-04 15:24 GMT+02:00 Giuseppe Aruta <giuseppe.ar...@gmail.com>:
>
> Dear Jumpers,
>
> I added on OpenJUMP a new plugin that displays WMS layer(s) legend (if
> available) on a Dialog.
>
> This plugin is located on WMS Layer tree context menu, as "Show WMS Layer
> Legend".
>
> The code originally came from Kosmo SAIG and it was completely rewritten
> in order to adapt WMS GetLegendGraphic and GetStyle operators without
> modifing OJ WMS classes.
>
> Best Regards
>
> Peppe
>
>
>
>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> 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