[Geoserver-devel] Layer Virtual Service Issues

I noticed two issues with specifying a layer name as part of a virtual
service that both seemed to be caused by line 63 in
org.geoserver.ows.OWSHandlerMapping not providing a workspace qualified
layer name:
if (catalog.getLayerByName(first) != null) {

Adding the workspace to the layer name seemed to fix both problems:
if (catalog.getLayerByName(wsName + ":" + first) != null) {

1. When JDBC Configuration is enabled, the request will return a 404
response if the layer name is used in more than one workspace. This is
because DefaultCatalogFacade returns the first layer if there is more than
one layer with the same name so this check still passes but
JDBCCatalogFacade returns null in that situation so it doesn't pass this
check.

2. If a layer name exists but is not in the specified workspace, the request
will be handled as if a layer was not provided in the request (e.g.,
"test/missing/wms" will be handled as "test/wms" if the layer "missing"
exists but not in the "test" workspace). This is because
LocalWorkspaceCallback uses the workspace qualified layer name when setting
the LocalPublished value and just ignores the layer name if it doesn't
exist, allowing the request to continue with only the LocalWorkspace set.

Steve Ikeoka

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Layer-Virtual-Service-Issues-tp5311443.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.

Hi Steve,
yep, I checked quickly and agree with your analysis.
I see you created the ticket, can you follow up with a pull request including a test?

Cheers
Andrea

···

On Wed, Mar 8, 2017 at 6:56 PM, sikeoka <steve.ikeoka@anonymised.com…2903…> wrote:

I noticed two issues with specifying a layer name as part of a virtual
service that both seemed to be caused by line 63 in
org.geoserver.ows.OWSHandlerMapping not providing a workspace qualified
layer name:
if (catalog.getLayerByName(first) != null) {

Adding the workspace to the layer name seemed to fix both problems:
if (catalog.getLayerByName(wsName + “:” + first) != null) {

  1. When JDBC Configuration is enabled, the request will return a 404
    response if the layer name is used in more than one workspace. This is
    because DefaultCatalogFacade returns the first layer if there is more than
    one layer with the same name so this check still passes but
    JDBCCatalogFacade returns null in that situation so it doesn’t pass this
    check.

  2. If a layer name exists but is not in the specified workspace, the request
    will be handled as if a layer was not provided in the request (e.g.,
    “test/missing/wms” will be handled as “test/wms” if the layer “missing”
    exists but not in the “test” workspace). This is because
    LocalWorkspaceCallback uses the workspace qualified layer name when setting
    the LocalPublished value and just ignores the layer name if it doesn’t
    exist, allowing the request to continue with only the LocalWorkspace set.

Steve Ikeoka


View this message in context: http://osgeo-org.1560.x6.nabble.com/Layer-Virtual-Service-Issues-tp5311443.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.


Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford


Geoserver-devel mailing list
Geoserver-devel@anonymised.com.366…sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via di Montramito 3/A
55054 Massarosa (LU)
phone: +39 0584 962313

fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.