/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.wicket.security.hive.authorization.permissions; import org.apache.wicket.security.actions.ActionFactory; import org.apache.wicket.security.actions.AllActions; import org.apache.wicket.security.actions.Enable; import org.apache.wicket.security.actions.Render; import org.apache.wicket.security.actions.WaspAction; import org.apache.wicket.security.hive.authorization.Permission; /** * Permission that implies all other permissions, when created with the "all" action. If * any other action then the "all" action is used only {@link ActionPermission}s implying * those actions are implied. Permissions that do not subclass the * {@link ActionPermission} are always implied. * * Note that actions registered with the {@link ActionFactory} after this permission was * created are not automatically implied. * * @author marrink */ public class AllPermissions extends ActionPermission { /** * */ private static final long serialVersionUID = 1L; /** * Preferred constructor. All other permissions are implied by this permission. Equal * to using <code>new AllPermissions(name,factory.getAction(AllAction.class));</code> * or not specifying the action part in the policy file. * * @param name * the name of this permission. * @param factory * a factory capable of creating SwarmActions */ public AllPermissions(String name, ActionFactory factory) { this(name, factory.getAction(AllActions.class)); } /** * Creates a new AllPermissions that does not imply all other permissions but only * those who's actions it can imply. Thus when supplied with a {@link Render} action * only render actions are implied not {@link Enable} actions. * * @param name * @param actions * @see #implies(Permission) */ public AllPermissions(String name, WaspAction actions) { super(name, actions); } /** * Implies every other permission, but the other way around is not necessarily true. * One exception, if this action was not initiated with the {@link AllActions} action * it only implies other {@link ActionPermission}s who's actions are implied by this * permission's actions. * * @see org.apache.wicket.security.hive.authorization.permissions.ActionPermission#implies(org.apache.wicket.security.hive.authorization.Permission) */ @Override public boolean implies(Permission permission) { if (permission instanceof ActionPermission) { ActionPermission other = (ActionPermission) permission; return getAction().implies(other.getAction()); } return true; } }