All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wildfly.security.permission.AbstractPermission Maven / Gradle / Ivy

Go to download

This artifact provides a single jar that contains all classes required to use remote EJB and JMS, including all dependencies. It is intended for use by those not using maven, maven users should just import the EJB and JMS BOM's instead (shaded JAR's cause lots of problems with maven, as it is very easy to inadvertently end up with different versions on classes on the class path).

There is a newer version: 34.0.0.Final
Show newest version
/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2016 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed 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.wildfly.security.permission;

import java.security.Permission;

/**
 * An abstract base class for any permission.
 *
 * @author David M. Lloyd
 */
public abstract class AbstractPermission> extends Permission implements PermissionVerifier {
    /**
     * Construct a new instance.
     *
     * @param name the permission name
     */
    protected AbstractPermission(final String name) {
        super(name);
    }

    /**
     * Determine whether this permission implies another permission.
     *
     * @param permission the other permission
     * @return {@code true} if this permission implies the other; {@code false} otherwise
     */
    @SuppressWarnings("unchecked")
    public final boolean implies(Permission permission) {
        return permission != null && getClass() == permission.getClass() && implies((This) permission);
    }

    /**
     * Determine whether this permission implies another permission.
     *
     * @param permission the other permission
     * @return {@code true} if this permission implies the other; {@code false} otherwise
     */
    public abstract boolean implies(This permission);

    /**
     * Determine whether this permission object is equal to another object.
     *
     * @param obj the object to compare to
     * @return {@code true} if the object is a permission equal to this one; {@code false} otherwise
     */
    @SuppressWarnings("unchecked")
    public final boolean equals(final Object obj) {
        return obj != null && obj.getClass() == getClass() && equals((This) obj);
    }

    /**
     * Determine whether this permission object is equal to another object of this permission type.
     *
     * @param other the permission to compare to
     * @return {@code true} if the object is a permission equal to this one; {@code false} otherwise
     */
    public abstract boolean equals(This other);

    /**
     * Get the hash code of this permission.  The result must be consistent with the defined {@link #equals(AbstractPermission)}
     * result.
     *
     * @return the hash code of this permission
     */
    public abstract int hashCode();

    /**
     * Get the actions string.  The default implementation always returns an empty string.
     *
     * @return the actions string (not {@code null})
     */
    public String getActions() {
        return "";
    }

    /**
     * Get an empty permission collection which is capable of holding instances of this permission type.
     * 

* The default implementation returns a {@link SimplePermissionCollection}. * * @return the permission collection to use */ public AbstractPermissionCollection newPermissionCollection() { return new SimplePermissionCollection(this); } /** * Check to ensure that the given action string is empty or {@code null}; otherwise, throw an exception. * * @param actions the actions string * @throws IllegalArgumentException if the actions string is not empty */ protected static void requireEmptyActions(final String actions) throws IllegalArgumentException { if (actions != null && ! actions.isEmpty()) { throw ElytronMessages.log.expectedEmptyActions(actions); } } final Object writeReplace() { return new SerializedPermission(getClass(), getName(), getActions()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy