DataAccessLimits buildLimits( Class<? extends ResourceInfo> resourceClass, Filter readFilter, Filter writeFilter) { CatalogMode mode = delegate.getMode(); // allow the secure catalog to avoid any kind of wrapping if there are no limits if ((readFilter == null || readFilter == Filter.INCLUDE) && (writeFilter == null || writeFilter == Filter.INCLUDE || WMSLayerInfo.class.isAssignableFrom(resourceClass) || WMTSLayerInfo.class.isAssignableFrom(resourceClass) || CoverageInfo.class.isAssignableFrom(resourceClass))) { return null; } // build the appropriate limit class if (FeatureTypeInfo.class.isAssignableFrom(resourceClass)) { return new VectorAccessLimits(mode, null, readFilter, null, writeFilter); } else if (CoverageInfo.class.isAssignableFrom(resourceClass)) { return new CoverageAccessLimits(mode, readFilter, null, null); } else if (WMSLayerInfo.class.isAssignableFrom(resourceClass)) { return new WMSAccessLimits(mode, readFilter, null, true); } else if (WMTSLayerInfo.class.isAssignableFrom(resourceClass)) { return new WMTSAccessLimits(mode, readFilter, null); } else { LOGGER.log( Level.INFO, "Warning, adapting to generic access limits for unrecognized resource type " + resourceClass); return new DataAccessLimits(mode, readFilter); } }
private DataAccessLimits hide(ResourceInfo info) { if (info instanceof FeatureTypeInfo) { return new VectorAccessLimits( CatalogMode.HIDE, null, Filter.EXCLUDE, null, Filter.EXCLUDE); } else if (info instanceof CoverageInfo) { return new CoverageAccessLimits(CatalogMode.HIDE, Filter.EXCLUDE, null, null); } else if (info instanceof WMSLayerInfo) { return new WMSAccessLimits(CatalogMode.HIDE, Filter.EXCLUDE, null, false); } else { // TODO: Log warning about unknown resource type return new DataAccessLimits(CatalogMode.HIDE, Filter.EXCLUDE); } }
DataAccessLimits buildLimits( Class<? extends ResourceInfo> resourceClass, Filter readFilter, Filter writeFilter) { CatalogMode mode = getMode(); // allow the secure catalog to avoid any kind of wrapping if there are no limits if ((readFilter == null || readFilter == Filter.INCLUDE) && (writeFilter == null || writeFilter == Filter.INCLUDE || WMSLayerInfo.class.isAssignableFrom(resourceClass) || WMTSLayerInfo.class.isAssignableFrom(resourceClass) || CoverageInfo.class.isAssignableFrom(resourceClass))) { return null; } // build the appropriate limit class if (FeatureTypeInfo.class.isAssignableFrom(resourceClass)) { return new VectorAccessLimits(mode, null, readFilter, null, writeFilter); } else if (CoverageInfo.class.isAssignableFrom(resourceClass)) { return new CoverageAccessLimits(mode, readFilter, null, null); } else if (WMSLayerInfo.class.isAssignableFrom(resourceClass)) { return new WMSAccessLimits(mode, readFilter, null, true); } else if (WMTSLayerInfo.class.isAssignableFrom(resourceClass)) { return new WMTSAccessLimits(mode, readFilter, null); } else { LOGGER.log( Level.INFO, "Warning, adapting to generic access limits for unrecognized resource type " + resourceClass); return new DataAccessLimits(mode, readFilter); } }
return new CoverageAccessLimits(mode, readFilter, rasterFilter, params);
public void testCoverageAccessLimits() throws Exception { CoverageAccessLimits limits = new CoverageAccessLimits(CatalogMode.MIXED, filter, g, null); testObjectSerialization(limits); }
"cite_noworld", world, new CoverageAccessLimits(CatalogMode.HIDE, Filter.EXCLUDE, null, null)); "cite_noworld_challenge", world, new CoverageAccessLimits(CatalogMode.CHALLENGE, Filter.EXCLUDE, null, null)); "cite_usa", world, new CoverageAccessLimits(CatalogMode.HIDE, null, rasterFilter, null));
MultiPolygon rasterFilter = buildRasterFilter(rule); return new CoverageAccessLimits(catalogMode, readFilter, rasterFilter, null); } else if (resource instanceof WMSLayerInfo) { MultiPolygon rasterFilter = buildRasterFilter(rule);
@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}); }
MultiPolygon rasterFilter = buildRasterFilter(rule); return new CoverageAccessLimits(catalogMode, readFilter, rasterFilter, null); } else if (resource instanceof WMSLayerInfo) { MultiPolygon rasterFilter = buildRasterFilter(rule);
@Test public void testFilterOnStructured() throws Exception { final Filter securityFilter = ECQL.toFilter("A > 10"); final Filter requestFilter = ECQL.toFilter("B < 10"); DefaultSecureDataFactory factory = new DefaultSecureDataFactory(); // create the mocks we need Format format = setupFormat(); StructuredGridCoverage2DReader reader = createNiceMock(StructuredGridCoverage2DReader.class); expect(reader.getFormat()).andReturn(format).anyTimes(); setupReadAssertion(reader, requestFilter, securityFilter); CoverageAccessLimits accessLimits = new CoverageAccessLimits(CatalogMode.HIDE, securityFilter, null, null); Object securedObject = factory.secure(reader, WrapperPolicy.readOnlyHide(accessLimits)); assertTrue(securedObject instanceof SecuredStructuredGridCoverage2DReader); SecuredStructuredGridCoverage2DReader secured = (SecuredStructuredGridCoverage2DReader) securedObject; final ParameterValue pv = ImageMosaicFormat.FILTER.createValue(); pv.setValue(requestFilter); secured.read(new GeneralParameterValue[] {pv}); }
"cite_mosaic1", coverage, new CoverageAccessLimits(CatalogMode.HIDE, green, null, null)); "cite_mosaic2", coverage, new CoverageAccessLimits(CatalogMode.HIDE, green, cropper, null));