Add a method to get resource type name: simpleTypeName()

last() is removed as the new method takes over its role

Change-Id: Id3737529787da5d5bb513355cdbc443f2b7b17e2
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
index 00221ae..33e25c5 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
@@ -49,6 +49,11 @@
     }
 
     @Override
+    public String simpleTypeName() {
+        return id.simpleTypeName();
+    }
+
+    @Override
     public boolean isTypeOf(Class<?> type) {
         checkNotNull(type);
 
@@ -98,14 +103,6 @@
     }
 
     @Override
-    public Object last() {
-        if (id.components().isEmpty()) {
-            return null;
-        }
-        return id.components().get(id.components().size() - 1);
-    }
-
-    @Override
     public DiscreteResource child(Object child) {
         throw new UnsupportedOperationException();
     }
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResourceId.java b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResourceId.java
index 4c8f466..8a042c8 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResourceId.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResourceId.java
@@ -47,6 +47,11 @@
         return components;
     }
 
+    @Override
+    String simpleTypeName() {
+        return name;
+    }
+
     /**
      * {@inheritDoc}
      *
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
index beb564a..cc3b30a 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
@@ -46,6 +46,11 @@
     }
 
     @Override
+    public String simpleTypeName() {
+        return id.simpleTypeName();
+    }
+
+    @Override
     public boolean isTypeOf(Class<?> type) {
         checkNotNull(type);
 
@@ -80,14 +85,6 @@
         return Optional.of(value);
     }
 
-    @Override
-    public Object last() {
-        if (id.components().isEmpty()) {
-            return null;
-        }
-        return id.components().get(id.components().size() - 1);
-    }
-
     private boolean isRoot() {
         return id.equals(ResourceId.ROOT);
     }
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
index 0e38f5e..70e0119 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
@@ -45,6 +45,15 @@
     }
 
     @Override
+    String simpleTypeName() {
+        if (components.isEmpty()) {
+            return "Root";
+        }
+
+        return components.get(components.size() - 1).getClass().getSimpleName();
+    }
+
+    @Override
     public DiscreteResourceId child(Object child) {
         checkArgument(!(child instanceof Class<?>));
 
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
index 5572592..1548717 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
@@ -48,6 +48,17 @@
     ResourceId id();
 
     /**
+     * Returns the simple type name of this resource.
+     *
+     * Example:<br>
+     * Resource: DeviceId:1/PortNumber:1/VlanId:200<br>
+     * Simple type name: VlanId<br>
+     *
+     * @return the simple type name of this resource
+     */
+    String simpleTypeName();
+
+    /**
      * Checks if the type of this instance is the specified type.
      *
      * @param type type of resource to be checked
@@ -75,14 +86,6 @@
     <T> Optional<T> valueAs(Class<T> type);
 
     /**
-     * Returns the last component of this instance.
-     *
-     * @return the last component of this instance.
-     * The return value is equal to the last object of {@code components()}.
-     */
-    Object last();
-
-    /**
      * Returns the parent resource of this instance.
      * E.g. if this resource is Link:1/VLAN ID:100, the return value is the resource for Link:1.
      *
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/ResourceId.java b/core/api/src/main/java/org/onosproject/net/newresource/ResourceId.java
index 8fcccb7..002dc87 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/ResourceId.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/ResourceId.java
@@ -29,6 +29,8 @@
 
     abstract ImmutableList<Object> components();
 
+    abstract String simpleTypeName();
+
     /**
      * Returns the parent resource ID of this instance.
      *