/* (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.decorators; import java.io.IOException; import org.geoserver.security.WrapperPolicy; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.coverage.grid.io.StructuredGridCoverage2DReader; import org.geotools.data.ResourceInfo; import org.geotools.data.ServiceInfo; import org.opengis.coverage.grid.Format; import org.opengis.parameter.GeneralParameterValue; /** * Applies access limits policies around the wrapped reader * * @author Daniele Romagnoli - GeoSolutions */ public class SecuredStructuredGridCoverage2DReader extends DecoratingStructuredGridCoverage2DReader { WrapperPolicy policy; public SecuredStructuredGridCoverage2DReader(StructuredGridCoverage2DReader delegate, WrapperPolicy policy) { super(delegate); this.policy = policy; } public Format getFormat() { Format format = delegate.getFormat(); if (format == null) { return null; } else { return (Format) SecuredObjects.secure(format, policy); } } public GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException { return SecuredGridCoverage2DReader.read(delegate, policy, parameters); } @Override public ServiceInfo getInfo() { ServiceInfo info = delegate.getInfo(); if (info == null) { return null; } else { return (ServiceInfo) SecuredObjects.secure(info, policy); } } @Override public ResourceInfo getInfo(String coverageName) { ResourceInfo info = delegate.getInfo(coverageName); if (info == null) { return null; } else { return (ResourceInfo) SecuredObjects.secure(info, policy); } } }