public GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException { return SecuredGridCoverage2DReader.read(delegate, policy, parameters); }
@Test public void testFilter() throws Exception { final Filter securityFilter = ECQL.toFilter("A > 10"); final Filter requestFilter = ECQL.toFilter("B < 10"); // create the mocks we need Format format = setupFormat(); GridCoverage2DReader reader = createNiceMock(GridCoverage2DReader.class); expect(reader.getFormat()).andReturn(format).anyTimes(); setupReadAssertion(reader, requestFilter, securityFilter); CoverageAccessLimits accessLimits = new CoverageAccessLimits(CatalogMode.HIDE, securityFilter, null, null); SecuredGridCoverage2DReader secured = new SecuredGridCoverage2DReader(reader, WrapperPolicy.readOnlyHide(accessLimits)); final ParameterValue pv = ImageMosaicFormat.FILTER.createValue(); pv.setValue(requestFilter); secured.read(new GeneralParameterValue[] {pv}); }
(StructuredGridCoverage2DReader) object, policy); } else if (GridCoverage2DReader.class.isAssignableFrom(clazz)) { return new SecuredGridCoverage2DReader((GridCoverage2DReader) object, policy); } else if (AbstractGridFormat.class.isAssignableFrom(clazz)) { return new SecuredGridFormat((AbstractGridFormat) object, policy);
static GridCoverage2D read( GridCoverage2DReader delegate, WrapperPolicy policy, GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException { // Package private static method to share reading code with Structured reader MultiPolygon rasterFilter = null; if (policy.getLimits() instanceof CoverageAccessLimits) { CoverageAccessLimits limits = (CoverageAccessLimits) policy.getLimits(); // get the crop filter rasterFilter = limits.getRasterFilter(); Filter readFilter = limits.getReadFilter(); // update the read params final GeneralParameterValue[] limitParams = limits.getParams(); if (parameters == null) { parameters = limitParams; } else if (limitParams != null) { // scan the input params, add and overwrite with the limits params as needed List<GeneralParameterValue> params = new ArrayList<GeneralParameterValue>(Arrays.asList(parameters)); for (GeneralParameterValue lparam : limitParams) { // remove the overwritten param, if any for (Iterator it = params.iterator(); it.hasNext(); ) { GeneralParameterValue param = (GeneralParameterValue) it.next(); if (param.getDescriptor().equals(lparam.getDescriptor())) { it.remove(); break; } } // add the overwrite param (will be an overwrite if it was already there, an