Storing OGC service configuration per workspace.
Current support for virtual services only allows one to create workspace specific views of the catalog. True virtual services requires that the server be able to store service configurations on a workspace by workspace basis.
This proposal is really a continuation of GSIP 44 - Virtual services with workspaces.
For the quick version see the current patch.
The main idea of the proposal is to allow a service instance to be contained as a workspace, as well as preserve the idea of a "global" service, which is not contained by any workspace.
A number of core configuration classes change with this proposal.
The ServiceInfo interface now contains a "workspace" property.
There are actually not many changes to this class. The idea is to have the selection of a specific service based on workspace be transparent to client code, much in the same way the existing virtual services work with the catalog.
So now the service methods on GeoServer interface will consult the existing thread local instance LocalWorkspace, and when set will cause the service to be looked up by workspace. Naturally falling back to the global service when no workspace specific service exists.
Existing service configuration files live directly under the root of the data directory. Naturally a workspace specific configuration file lives under the root of the workspace directory.
The user interface must be updated to allow users to manage workspace local service configurations, allowing for adding, deleting, modifying, etc... The idea is to add a drop down to the service admin pages allowing the user to choose a workspace. The drop down only contains those workspaces that actually have a custom service configuration.
To add/remove a workspace specific configuration the user navigates to the workspace page, which now contains a check list of services to make custom to the workspace.
This section should contain feedback provided by PSC members who may have a problem with the proposal.
In terms of configuration format, there should be no compatibility issues backwards or forwards. Previous versions of GeoServer run on a configuration with workspace specific services will simply ignore the services.