/* * Copyright 2015-present Open Networking Laboratory * * 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.onosproject.security; import com.google.common.annotations.Beta; import java.security.BasicPermission; /** * Implementation of API access permission. */ @Beta public class AppPermission extends BasicPermission { public enum Type { APP_READ, APP_EVENT, APP_WRITE, CONFIG_READ, CONFIG_WRITE, CONFIG_EVENT, CLUSTER_READ, CLUSTER_WRITE, CLUSTER_EVENT, CODEC_READ, CODEC_WRITE, CLOCK_WRITE, DEVICE_KEY_EVENT, DEVICE_KEY_READ, DEVICE_KEY_WRITE, DEVICE_READ, DEVICE_EVENT, DRIVER_READ, DRIVER_WRITE, EVENT_READ, EVENT_WRITE, FLOWRULE_READ, FLOWRULE_WRITE, FLOWRULE_EVENT, GROUP_READ, GROUP_WRITE, GROUP_EVENT, HOST_READ, HOST_WRITE, HOST_EVENT, INTENT_READ, INTENT_WRITE, INTENT_EVENT, LINK_READ, LINK_WRITE, LINK_EVENT, MUTEX_WRITE, PACKET_READ, PACKET_WRITE, PACKET_EVENT, PERSISTENCE_WRITE, PARTITION_READ, PARTITION_EVENT, RESOURCE_READ, RESOURCE_WRITE, RESOURCE_EVENT, REGION_READ, STATISTIC_READ, STORAGE_WRITE, TOPOLOGY_READ, TOPOLOGY_EVENT, TUNNEL_READ, TUNNEL_WRITE, TUNNEL_EVENT, UI_READ, UI_WRITE } protected Type type; /** * Creates new application permission using the supplied data. * @param name permission name */ public AppPermission(String name) { super(name.toUpperCase(), ""); try { type = Type.valueOf(name); } catch (IllegalArgumentException e) { type = null; } } /** * Creates new application permission using the supplied data. * @param name permission name * @param actions permission action */ public AppPermission(String name, String actions) { super(name.toUpperCase(), actions); try { type = Type.valueOf(name); } catch (IllegalArgumentException e) { type = null; } } /** * Crates new application permission using the supplied data. * @param type permission type */ public AppPermission(Type type) { super(type.name(), ""); this.type = type; } /** * Returns type of permission. * @return application permission type */ public Type getType() { return this.type; } }