/* * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Anahide Tchertchian * Florent Guillaume */ package org.nuxeo.ecm.core.security; import org.nuxeo.ecm.core.query.sql.model.SQLQuery.Transformer; /** * Abstract security policy * * @author Anahide Tchertchian * @author Florent Guillaume */ public abstract class AbstractSecurityPolicy implements SecurityPolicy { @Override public boolean isRestrictingPermission(String permission) { // by default, we don't know, so yes return true; } @Override public Transformer getQueryTransformer(String repositoryName) { return getQueryTransformer(); } /** * Legacy method for compatibility, use * {@link #getQueryTransformer(String)} instead */ @Deprecated public Transformer getQueryTransformer() { // implement this if isExpressibleInQuery is true throw new UnsupportedOperationException(); } @Override public QueryTransformer getQueryTransformer(String repositoryName, String queryLanguage) { /* * By default in this abstract class: If we're expressible in NXQL and * the query transformer is IDENTITY, then express as * QueryTransformer.IDENTITY in any language. */ if (isExpressibleInQuery(repositoryName) && getQueryTransformer(repositoryName) == Transformer.IDENTITY) { return QueryTransformer.IDENTITY; } // else we don't know how to transform throw new UnsupportedOperationException(queryLanguage); } @Override public boolean isExpressibleInQuery(String repositoryName) { return isExpressibleInQuery(); } /** * Legacy method for compatibility, use * {@link #isExpressibleInQuery(String)} instead */ @Deprecated public boolean isExpressibleInQuery() { // by default, we don't know, so no return false; } @Override public boolean isExpressibleInQuery(String repositoryName, String queryLanguage) { /* * By default in this abstract class: If we're expressible in NXQL and * the query transformer is IDENTITY, then we're expressible (as * QueryTransformer.IDENTITY) in any language. */ return isExpressibleInQuery(repositoryName) && getQueryTransformer(repositoryName) == Transformer.IDENTITY; } }