/** * */ package org.geoserver.security.decorators; import org.geoserver.security.AccessLevel; import org.geoserver.security.VectorAccessLimits; import org.geoserver.security.WrapperPolicy; import org.geotools.data.Query; import org.opengis.filter.Filter; /** * Package local class factoring out some common security wrapper code * * @author Andrea Aime - GeoSolutions */ class SecurityUtils { /** * Builds the write query based on the access limits class * * @return */ static Query getWriteQuery(WrapperPolicy policy) { if(policy.getAccessLevel() != AccessLevel.READ_WRITE) { return new Query(null, Filter.EXCLUDE); } else if (policy.getLimits() == null) { return Query.ALL; } else if (policy.getLimits() instanceof VectorAccessLimits) { VectorAccessLimits val = (VectorAccessLimits) policy.getLimits(); return val.getWriteQuery(); } else { throw new IllegalArgumentException("SecureFeatureStore has been fed " + "with unexpected AccessLimits class " + policy.getLimits().getClass()); } } }