Fix catalog facade's getStyleByName(String name) #264
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
RepositoryCatalogFacade.getStyleByName(String name)
had a bugthat made it not match the behavior of upstream's
DefaultCatalogFacade.getStyleByName(String name)
.As a consequence,
GetLegendGraphic
requests with JSON output formatproduced kml icon urls with missing workspace path
(e.g.
/kml/icon/<stylename>?...
instead of/kml/icon/<workspace>/<stylename>?...
, when the GetLegendGraphicrequest itself did not contain the workspace in the URLi and the
StyleInfo
does belong to a workspace).That said, the way
JSONLegendGraphicBuilder.processGraphic(...)
resolves the icon URL is WRONG, as it uses the unqualified style
name to call
Catalog.getStyleByName(String name)
, relying inDefaultCatalogFacade.getStyleByName(String name)
, which willlook for a global style with that name, if none exists will look
for one in the "default workspace", and eventually for one in
any workspace, with no order guarantee. This is on itself a buggy
behaviour and only works by accident sometimes, but can easily
lead to returning a URL for a style named the same that belongs
to a different workspace than the layer for which the request
is being performed.