/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security;
import java.util.Collection;
import java.util.List;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.CatalogFacade;
import org.geoserver.catalog.CatalogFactory;
import org.geoserver.catalog.CatalogInfo;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.CoverageStoreInfo;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MapInfo;
import org.geoserver.catalog.NamespaceInfo;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.ResourcePool;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.catalog.event.CatalogListener;
import org.geoserver.catalog.util.CloseableIterator;
import org.geoserver.platform.GeoServerResourceLoader;
import org.opengis.feature.type.Name;
import org.opengis.filter.Filter;
import org.opengis.filter.sort.SortBy;
/**
* Wraps a CatalogFacade delegating all access methods to the {@link SecureCatalogImpl}, to ensure the facade cannot be used by accident to breach the
* security restrictions
*
* @author Andrea Aime
*/
class SecureCatalogFacade implements CatalogFacade {
SecureCatalogImpl catalog;
CatalogFacade facade;
public SecureCatalogFacade(SecureCatalogImpl catalog, CatalogFacade facade) {
this.catalog = catalog;
this.facade = facade;
}
public Catalog getCatalog() {
return facade.getCatalog();
}
public void setCatalog(Catalog catalog) {
facade.setCatalog(catalog);
}
public StoreInfo add(StoreInfo store) {
return facade.add(store);
}
public void remove(StoreInfo store) {
facade.remove(store);
}
public void save(StoreInfo store) {
facade.save(store);
}
public <T extends ResourceInfo> T detach(T store) {
return facade.detach(store);
}
public void setDefaultDataStore(WorkspaceInfo workspace, DataStoreInfo store) {
facade.setDefaultDataStore(workspace, store);
}
public ResourceInfo add(ResourceInfo resource) {
return facade.add(resource);
}
public void remove(ResourceInfo resource) {
facade.remove(resource);
}
public void save(ResourceInfo resource) {
facade.save(resource);
}
public LayerInfo add(LayerInfo layer) {
return facade.add(layer);
}
public void remove(LayerInfo layer) {
facade.remove(layer);
}
public void save(LayerInfo layer) {
facade.save(layer);
}
public LayerInfo detach(LayerInfo layer) {
return facade.detach(layer);
}
public MapInfo add(MapInfo map) {
return facade.add(map);
}
public void remove(MapInfo map) {
facade.remove(map);
}
public void save(MapInfo map) {
facade.save(map);
}
public MapInfo detach(MapInfo map) {
return facade.detach(map);
}
public LayerGroupInfo add(LayerGroupInfo layerGroup) {
return facade.add(layerGroup);
}
public void remove(LayerGroupInfo layerGroup) {
facade.remove(layerGroup);
}
public void save(LayerGroupInfo layerGroup) {
facade.save(layerGroup);
}
public LayerGroupInfo detach(LayerGroupInfo layerGroup) {
return facade.detach(layerGroup);
}
public NamespaceInfo add(NamespaceInfo namespace) {
return facade.add(namespace);
}
public void remove(NamespaceInfo namespace) {
facade.remove(namespace);
}
public void save(NamespaceInfo namespace) {
facade.save(namespace);
}
public NamespaceInfo detach(NamespaceInfo namespace) {
return facade.detach(namespace);
}
public void setDefaultNamespace(NamespaceInfo defaultNamespace) {
facade.setDefaultNamespace(defaultNamespace);
}
public WorkspaceInfo add(WorkspaceInfo workspace) {
return facade.add(workspace);
}
public void remove(WorkspaceInfo workspace) {
facade.remove(workspace);
}
public void save(WorkspaceInfo workspace) {
facade.save(workspace);
}
public WorkspaceInfo detach(WorkspaceInfo workspace) {
return facade.detach(workspace);
}
public void setDefaultWorkspace(WorkspaceInfo workspace) {
facade.setDefaultWorkspace(workspace);
}
public StyleInfo add(StyleInfo style) {
return facade.add(style);
}
public void remove(StyleInfo style) {
facade.remove(style);
}
public void save(StyleInfo style) {
facade.save(style);
}
public StyleInfo detach(StyleInfo style) {
return facade.detach(style);
}
public void dispose() {
facade.dispose();
}
public void resolve() {
facade.resolve();
}
public void syncTo(CatalogFacade other) {
facade.syncTo(other);
}
public <T extends CatalogInfo> int count(Class<T> of, Filter filter) {
return facade.count(of, filter);
}
public boolean canSort(Class<? extends CatalogInfo> type, String propertyName) {
return facade.canSort(type, propertyName);
}
public CatalogFactory getFactory() {
return catalog.getFactory();
}
public <T extends StoreInfo> T getStore(String id, Class<T> clazz) {
return catalog.getStore(id, clazz);
}
public <T extends StoreInfo> T getStoreByName(String name, Class<T> clazz) {
return catalog.getStoreByName(name, clazz);
}
public <T extends StoreInfo> T getStoreByName(String workspaceName, String name,
Class<T> clazz) {
return catalog.getStoreByName(workspaceName, name, clazz);
}
public <T extends StoreInfo> T getStoreByName(WorkspaceInfo workspace, String name,
Class<T> clazz) {
return catalog.getStoreByName(workspace, name, clazz);
}
public <T extends StoreInfo> List<T> getStores(Class<T> clazz) {
return catalog.getStores(clazz);
}
public <T extends StoreInfo> List<T> getStoresByWorkspace(WorkspaceInfo workspace,
Class<T> clazz) {
return catalog.getStoresByWorkspace(workspace, clazz);
}
public <T extends StoreInfo> List<T> getStoresByWorkspace(String workspaceName,
Class<T> clazz) {
return catalog.getStoresByWorkspace(workspaceName, clazz);
}
public DataStoreInfo getDataStore(String id) {
return catalog.getDataStore(id);
}
public DataStoreInfo getDataStoreByName(String name) {
return catalog.getDataStoreByName(name);
}
public DataStoreInfo getDataStoreByName(String workspaceName, String name) {
return catalog.getDataStoreByName(workspaceName, name);
}
public DataStoreInfo getDataStoreByName(WorkspaceInfo workspace, String name) {
return catalog.getDataStoreByName(workspace, name);
}
public List<DataStoreInfo> getDataStoresByWorkspace(String workspaceName) {
return catalog.getDataStoresByWorkspace(workspaceName);
}
public List<DataStoreInfo> getDataStoresByWorkspace(WorkspaceInfo workspace) {
return catalog.getDataStoresByWorkspace(workspace);
}
public List<DataStoreInfo> getDataStores() {
return catalog.getDataStores();
}
public DataStoreInfo getDefaultDataStore(WorkspaceInfo workspace) {
return catalog.getDefaultDataStore(workspace);
}
public CoverageStoreInfo getCoverageStore(String id) {
return catalog.getCoverageStore(id);
}
public CoverageStoreInfo getCoverageStoreByName(String name) {
return catalog.getCoverageStoreByName(name);
}
public CoverageStoreInfo getCoverageStoreByName(String workspaceName, String name) {
return catalog.getCoverageStoreByName(workspaceName, name);
}
public CoverageStoreInfo getCoverageStoreByName(WorkspaceInfo workspace, String name) {
return catalog.getCoverageStoreByName(workspace, name);
}
public List<CoverageStoreInfo> getCoverageStoresByWorkspace(String workspaceName) {
return catalog.getCoverageStoresByWorkspace(workspaceName);
}
public List<CoverageStoreInfo> getCoverageStoresByWorkspace(WorkspaceInfo workspace) {
return catalog.getCoverageStoresByWorkspace(workspace);
}
public List<CoverageStoreInfo> getCoverageStores() {
return catalog.getCoverageStores();
}
public <T extends ResourceInfo> T getResource(String id, Class<T> clazz) {
return catalog.getResource(id, clazz);
}
public <T extends ResourceInfo> T getResourceByName(String ns, String name, Class<T> clazz) {
return catalog.getResourceByName(ns, name, clazz);
}
public <T extends ResourceInfo> T getResourceByName(NamespaceInfo ns, String name,
Class<T> clazz) {
return catalog.getResourceByName(ns, name, clazz);
}
public <T extends ResourceInfo> T getResourceByName(Name name, Class<T> clazz) {
return catalog.getResourceByName(name, clazz);
}
public <T extends ResourceInfo> T getResourceByName(String name, Class<T> clazz) {
return catalog.getResourceByName(name, clazz);
}
public <T extends ResourceInfo> List<T> getResources(Class<T> clazz) {
return catalog.getResources(clazz);
}
public <T extends ResourceInfo> List<T> getResourcesByNamespace(NamespaceInfo namespace,
Class<T> clazz) {
return catalog.getResourcesByNamespace(namespace, clazz);
}
public <T extends ResourceInfo> List<T> getResourcesByNamespace(String namespace,
Class<T> clazz) {
return catalog.getResourcesByNamespace(namespace, clazz);
}
public <T extends ResourceInfo> T getResourceByStore(StoreInfo store, String name,
Class<T> clazz) {
return catalog.getResourceByStore(store, name, clazz);
}
public <T extends ResourceInfo> List<T> getResourcesByStore(StoreInfo store, Class<T> clazz) {
return catalog.getResourcesByStore(store, clazz);
}
public FeatureTypeInfo getFeatureType(String id) {
return catalog.getFeatureType(id);
}
public FeatureTypeInfo getFeatureTypeByName(String ns, String name) {
return catalog.getFeatureTypeByName(ns, name);
}
public FeatureTypeInfo getFeatureTypeByName(NamespaceInfo ns, String name) {
return catalog.getFeatureTypeByName(ns, name);
}
public FeatureTypeInfo getFeatureTypeByName(Name name) {
return catalog.getFeatureTypeByName(name);
}
public FeatureTypeInfo getFeatureTypeByName(String name) {
return catalog.getFeatureTypeByName(name);
}
public List<FeatureTypeInfo> getFeatureTypes() {
return catalog.getFeatureTypes();
}
public List<FeatureTypeInfo> getFeatureTypesByNamespace(NamespaceInfo namespace) {
return catalog.getFeatureTypesByNamespace(namespace);
}
public FeatureTypeInfo getFeatureTypeByStore(DataStoreInfo dataStore, String name) {
return catalog.getFeatureTypeByStore(dataStore, name);
}
public FeatureTypeInfo getFeatureTypeByDataStore(DataStoreInfo dataStore, String name) {
return catalog.getFeatureTypeByDataStore(dataStore, name);
}
public List<FeatureTypeInfo> getFeatureTypesByStore(DataStoreInfo store) {
return catalog.getFeatureTypesByStore(store);
}
public List<FeatureTypeInfo> getFeatureTypesByDataStore(DataStoreInfo store) {
return catalog.getFeatureTypesByDataStore(store);
}
public CoverageInfo getCoverage(String id) {
return catalog.getCoverage(id);
}
public CoverageInfo getCoverageByName(String ns, String name) {
return catalog.getCoverageByName(ns, name);
}
public CoverageInfo getCoverageByName(NamespaceInfo ns, String name) {
return catalog.getCoverageByName(ns, name);
}
public CoverageInfo getCoverageByName(Name name) {
return catalog.getCoverageByName(name);
}
public CoverageInfo getCoverageByName(String name) {
return catalog.getCoverageByName(name);
}
public List<CoverageInfo> getCoverages() {
return catalog.getCoverages();
}
public List<CoverageInfo> getCoveragesByNamespace(NamespaceInfo namespace) {
return catalog.getCoveragesByNamespace(namespace);
}
public CoverageInfo getCoverageByCoverageStore(CoverageStoreInfo coverageStore, String name) {
return catalog.getCoverageByCoverageStore(coverageStore, name);
}
public List<CoverageInfo> getCoveragesByCoverageStore(CoverageStoreInfo store) {
return catalog.getCoveragesByCoverageStore(store);
}
public List<CoverageInfo> getCoveragesByStore(CoverageStoreInfo store) {
return catalog.getCoveragesByStore(store);
}
public LayerInfo getLayer(String id) {
return catalog.getLayer(id);
}
public LayerInfo getLayerByName(String name) {
return catalog.getLayerByName(name);
}
public LayerInfo getLayerByName(Name name) {
return catalog.getLayerByName(name);
}
public List<LayerInfo> getLayers() {
return catalog.getLayers();
}
public List<LayerInfo> getLayers(ResourceInfo resource) {
return catalog.getLayers(resource);
}
public List<LayerInfo> getLayers(StyleInfo style) {
return catalog.getLayers(style);
}
public List<MapInfo> getMaps() {
return catalog.getMaps();
}
public MapInfo getMap(String id) {
return catalog.getMap(id);
}
public MapInfo getMapByName(String name) {
return catalog.getMapByName(name);
}
public List<LayerGroupInfo> getLayerGroups() {
return catalog.getLayerGroups();
}
public List<LayerGroupInfo> getLayerGroupsByWorkspace(String workspaceName) {
return catalog.getLayerGroupsByWorkspace(workspaceName);
}
public List<LayerGroupInfo> getLayerGroupsByWorkspace(WorkspaceInfo workspace) {
return catalog.getLayerGroupsByWorkspace(workspace);
}
public LayerGroupInfo getLayerGroup(String id) {
return catalog.getLayerGroup(id);
}
public LayerGroupInfo getLayerGroupByName(String name) {
return catalog.getLayerGroupByName(name);
}
public LayerGroupInfo getLayerGroupByName(String workspaceName, String name) {
return catalog.getLayerGroupByName(workspaceName, name);
}
public LayerGroupInfo getLayerGroupByName(WorkspaceInfo workspace, String name) {
return catalog.getLayerGroupByName(workspace, name);
}
public StyleInfo getStyle(String id) {
return catalog.getStyle(id);
}
public StyleInfo getStyleByName(String workspaceName, String name) {
return catalog.getStyleByName(workspaceName, name);
}
public StyleInfo getStyleByName(WorkspaceInfo workspace, String name) {
return catalog.getStyleByName(workspace, name);
}
public StyleInfo getStyleByName(String name) {
return catalog.getStyleByName(name);
}
public List<StyleInfo> getStyles() {
return catalog.getStyles();
}
public List<StyleInfo> getStylesByWorkspace(String workspaceName) {
return catalog.getStylesByWorkspace(workspaceName);
}
public List<StyleInfo> getStylesByWorkspace(WorkspaceInfo workspace) {
return catalog.getStylesByWorkspace(workspace);
}
public NamespaceInfo getNamespace(String id) {
return catalog.getNamespace(id);
}
public NamespaceInfo getNamespaceByPrefix(String prefix) {
return catalog.getNamespaceByPrefix(prefix);
}
public NamespaceInfo getNamespaceByURI(String uri) {
return catalog.getNamespaceByURI(uri);
}
public NamespaceInfo getDefaultNamespace() {
return catalog.getDefaultNamespace();
}
public List<NamespaceInfo> getNamespaces() {
return catalog.getNamespaces();
}
public WorkspaceInfo getDefaultWorkspace() {
return catalog.getDefaultWorkspace();
}
public List<WorkspaceInfo> getWorkspaces() {
return catalog.getWorkspaces();
}
public WorkspaceInfo getWorkspace(String id) {
return catalog.getWorkspace(id);
}
public WorkspaceInfo getWorkspaceByName(String name) {
return catalog.getWorkspaceByName(name);
}
public Collection<CatalogListener> getListeners() {
return catalog.getListeners();
}
public ResourcePool getResourcePool() {
return catalog.getResourcePool();
}
public GeoServerResourceLoader getResourceLoader() {
return catalog.getResourceLoader();
}
public <T extends CatalogInfo> T get(Class<T> type, Filter filter)
throws IllegalArgumentException {
return catalog.get(type, filter);
}
public <T extends CatalogInfo> CloseableIterator<T> list(Class<T> of, Filter filter) {
return catalog.list(of, filter);
}
public <T extends CatalogInfo> CloseableIterator<T> list(Class<T> of, Filter filter,
Integer offset, Integer count, SortBy sortBy) {
return catalog.list(of, filter, offset, count, sortBy);
}
@Override
public <T extends StoreInfo> T detach(T store) {
return facade.detach(store);
}
@Override
public <T extends CatalogInfo> CloseableIterator<T> list(Class<T> of, Filter filter,
Integer offset, Integer count, SortBy... sortOrder) {
return catalog.list(of, filter, offset, count, sortOrder);
}
}