/* 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 java.io.IOException; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.CoverageStoreInfo; import org.geoserver.security.SecureCatalogImpl; import org.geoserver.security.SecureCatalogImpl.WrapperPolicy; import org.geotools.factory.Hints; import org.geotools.geometry.jts.ReferencedEnvelope; import org.opengis.coverage.grid.GridCoverage; import org.opengis.coverage.grid.GridCoverageReader; import org.opengis.util.ProgressListener; public class SecuredCoverageInfo extends DecoratingCoverageInfo { WrapperPolicy policy; public SecuredCoverageInfo(CoverageInfo delegate, WrapperPolicy policy) { super(delegate); this.policy = policy; } @Override public GridCoverage getGridCoverage(ProgressListener listener, Hints hints) throws IOException { if(policy == WrapperPolicy.METADATA) throw SecureCatalogImpl.unauthorizedAccess(this.getName()); return super.getGridCoverage(listener, hints); } @Override public GridCoverage getGridCoverage(ProgressListener listener, ReferencedEnvelope envelope, Hints hints) throws IOException { if(policy == WrapperPolicy.METADATA) throw SecureCatalogImpl.unauthorizedAccess(this.getName()); return super.getGridCoverage(listener, envelope, hints); } @Override public GridCoverageReader getGridCoverageReader(ProgressListener listener, Hints hints) throws IOException { if(policy == WrapperPolicy.METADATA) throw SecureCatalogImpl.unauthorizedAccess(this.getName()); return super.getGridCoverageReader(listener, hints); } @Override public CoverageStoreInfo getStore() { return new SecuredCoverageStoreInfo(super.getStore(), policy); } }