ONOS-1896 : enum Permission added, DefaultPermission removed
Change-Id: Ie75313acc9adeaee9c5a55978b5ec8e8fb5bf9b6
diff --git a/core/api/src/main/java/org/onosproject/core/DefaultPermission.java b/core/api/src/main/java/org/onosproject/core/DefaultPermission.java
deleted file mode 100644
index 512aca3..0000000
--- a/core/api/src/main/java/org/onosproject/core/DefaultPermission.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015 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.core;
-
-import java.security.BasicPermission;
-
-/**
- * Default implementation of ONOS application permissions for API-level access control.
- */
-public class DefaultPermission extends BasicPermission implements Permission {
-
- public enum Type {
- APP_READ,
- APP_EVENT,
- CONFIG_READ,
- CONFIG_WRITE,
- CLUSTER_READ,
- CLUSTER_WRITE,
- CLUSTER_EVENT,
- DEVICE_READ,
- DEVICE_EVENT,
- DRIVER_READ,
- DRIVER_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,
- PACKET_READ,
- PACKET_WRITE,
- PACKET_EVENT,
- STATISTIC_READ,
- TOPOLOGY_READ,
- TOPOLOGY_EVENT,
- TUNNEL_READ,
- TUNNEL_WRITE,
- TUNNEL_EVENT,
- STORAGE_WRITE
- }
-
- /**
- * Creates a new DefaultPermission.
- * @param name name of the permission
- * @param actions optional action field
- */
- public DefaultPermission(String name, String actions) {
- super(name, actions);
- }
-
- /**
- * Creates a new DefaultPermission.
- * @param name name of the permission
- */
- public DefaultPermission(String name) {
- super(name, "");
- }
-
- public DefaultPermission(Type permtype) {
- super(permtype.name(), "");
- }
-
- @Override
- public String name() {
- return super.getName();
- }
-
- @Override
- public String actions() {
- return super.getActions();
- }
-}
diff --git a/core/api/src/main/java/org/onosproject/core/Permission.java b/core/api/src/main/java/org/onosproject/core/Permission.java
index 98ec6c7..282388c 100644
--- a/core/api/src/main/java/org/onosproject/core/Permission.java
+++ b/core/api/src/main/java/org/onosproject/core/Permission.java
@@ -18,17 +18,41 @@
/**
* Representation of an application permission.
*/
-public interface Permission {
-
- /**
- * Returns the name of the permission.
- * @return a string value
- */
- String name();
-
- /**
- * Returns the actions string of the permission if specified.
- * @return a string value
- */
- String actions();
+public enum Permission {
+ APP_READ,
+ APP_EVENT,
+ CONFIG_READ,
+ CONFIG_WRITE,
+ CLUSTER_READ,
+ CLUSTER_WRITE,
+ CLUSTER_EVENT,
+ DEVICE_READ,
+ DEVICE_EVENT,
+ DRIVER_READ,
+ DRIVER_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,
+ PACKET_READ,
+ PACKET_WRITE,
+ PACKET_EVENT,
+ STATISTIC_READ,
+ TOPOLOGY_READ,
+ TOPOLOGY_EVENT,
+ TUNNEL_READ,
+ TUNNEL_WRITE,
+ TUNNEL_EVENT,
+ STORAGE_WRITE
}
diff --git a/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java b/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
index 6325395..b45035e 100644
--- a/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
+++ b/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
@@ -19,7 +19,6 @@
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
import org.onosproject.core.ApplicationRole;
-import org.onosproject.core.DefaultPermission;
import org.onosproject.core.Permission;
import org.onosproject.core.Version;
@@ -29,8 +28,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_WRITE;
-import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_READ;
/**
@@ -43,8 +40,7 @@
public static final String DESC = "Awesome application from Circus";
public static final String ORIGIN = "Circus";
public static final ApplicationRole ROLE = ApplicationRole.ADMIN;
- public static final Set<Permission> PERMS = ImmutableSet.of(new DefaultPermission(FLOWRULE_WRITE),
- new DefaultPermission(FLOWRULE_READ));
+ public static final Set<Permission> PERMS = ImmutableSet.of(Permission.FLOWRULE_WRITE, Permission.FLOWRULE_READ);
public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features");
public static final List<String> FEATURES = ImmutableList.of("foo", "bar");
diff --git a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
index 2954d07..bdf1399 100644
--- a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
+++ b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
@@ -28,7 +28,6 @@
import org.onosproject.app.ApplicationStoreDelegate;
import org.onosproject.app.DefaultApplicationDescription;
import org.onosproject.core.ApplicationRole;
-import org.onosproject.core.DefaultPermission;
import org.onosproject.core.Permission;
import org.onosproject.core.Version;
import org.onosproject.store.AbstractStore;
@@ -378,21 +377,20 @@
// Returns the set of Permissions specified in the app.xml file
private ImmutableSet<Permission> getPermissions(XMLConfiguration cfg) {
- List<Permission> perms = new ArrayList();
+ List<Permission> permissionList = new ArrayList();
for (Object o : cfg.getList(PERMISSIONS)) {
- DefaultPermission perm = null;
- if (o != null) {
- String permStr = (String) o;
- perm = new DefaultPermission(permStr);
- }
- if (perm != null) {
- perms.add(perm);
+ String name = (String) o;
+ try {
+ Permission perm = Permission.valueOf(name);
+ permissionList.add(perm);
+ } catch (IllegalArgumentException e) {
+ log.debug("Unknown permission specified: %s", name);
}
}
-
- return ImmutableSet.copyOf(perms);
+ return ImmutableSet.copyOf(permissionList);
}
+ //
// Returns application role type
public ApplicationRole getRole(String value) {
if (value == null) {
diff --git a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
index 8eea573..a6fb24c 100644
--- a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
+++ b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
@@ -25,11 +25,9 @@
import org.onosproject.core.Application;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.Permission;
-import org.onosproject.core.DefaultPermission;
import org.onosproject.core.ApplicationIdStoreAdapter;
import org.onosproject.core.DefaultApplicationId;
-import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_WRITE;
import static org.junit.Assert.assertEquals;
import static org.onosproject.app.ApplicationEvent.Type.APP_INSTALLED;
import static org.onosproject.app.ApplicationEvent.Type.APP_DEACTIVATED;
@@ -106,7 +104,7 @@
@Test
public void permissions() {
Application app = createTestApp();
- ImmutableSet<Permission> permissions = ImmutableSet.of(new DefaultPermission(FLOWRULE_WRITE));
+ ImmutableSet<Permission> permissions = ImmutableSet.of(Permission.FLOWRULE_WRITE);
store.setPermissions(app.id(), permissions);
assertEquals("incorrect app perms", 1, store.getPermissions(app.id()).size());
assertEquals("incorrect app state", INSTALLED, store.getState(app.id()));