/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.security.decorators; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.ResourceInfo; import org.geoserver.catalog.WMSLayerInfo; import org.geoserver.security.SecureCatalogImpl; import org.geoserver.security.WrapperPolicy; public class SecuredLayerInfo extends DecoratingLayerInfo { WrapperPolicy policy; public SecuredLayerInfo(LayerInfo delegate, WrapperPolicy policy) { super(delegate); this.policy = policy; } @Override public ResourceInfo getResource() { ResourceInfo r = super.getResource(); if (r == null) return null; else if (r instanceof FeatureTypeInfo) return new SecuredFeatureTypeInfo((FeatureTypeInfo) r, policy); else if (r instanceof CoverageInfo) return new SecuredCoverageInfo((CoverageInfo) r, policy); else if (r instanceof WMSLayerInfo) return new SecuredWMSLayerInfo((WMSLayerInfo) r, policy); else throw new RuntimeException("Don't know how to make resource of type " + r.getClass()); } @Override public void setResource(ResourceInfo resource) { if (resource instanceof SecuredFeatureTypeInfo || resource instanceof SecuredCoverageInfo) { resource = (ResourceInfo) SecureCatalogImpl.unwrap(resource); } delegate.setResource(resource); } }