add ability to start from parent uri 75/65375/2
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Sun, 9 Sep 2018 03:25:31 +0000 (23:25 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 10 Sep 2018 13:42:44 +0000 (09:42 -0400)
AAIResourceUris can now be created from parent uris
fixed unit test after change to task impl
removed last use of nodes query in code

Change-Id: I797cb12674e3421972e35957bd4d431c3cf3285b
Issue-ID: SO-1000
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
common/src/main/java/org/onap/so/client/aai/entities/uri/AAISimpleUri.java
common/src/main/java/org/onap/so/client/aai/entities/uri/AAIUriFactory.java
common/src/main/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUri.java
common/src/main/java/org/onap/so/client/aai/entities/uri/NodesUri.java
common/src/main/java/org/onap/so/client/graphinventory/entities/uri/SimpleUri.java
common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriFromParentUriTest.java [new file with mode: 0644]
common/src/test/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUriTest.java [new file with mode: 0644]

index 8731ae7..9b5acc5 100644 (file)
@@ -27,7 +27,9 @@ import javax.ws.rs.core.UriBuilder;
 import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.graphinventory.Format;
+import org.onap.so.client.graphinventory.GraphInventoryObjectType;
 import org.onap.so.client.graphinventory.entities.uri.Depth;
+import org.onap.so.client.graphinventory.entities.uri.GraphInventoryResourceUri;
 import org.onap.so.client.graphinventory.entities.uri.SimpleUri;
 
 public class AAISimpleUri extends SimpleUri implements AAIResourceUri {
@@ -51,6 +53,9 @@ public class AAISimpleUri extends SimpleUri implements AAIResourceUri {
        protected AAISimpleUri(AAIObjectPlurals type, Object... values) {
                super(type, values);
        }
+       protected AAISimpleUri(AAIResourceUri parentUri, AAIObjectType childType, Object... childValues) {
+               super(parentUri, childType, childValues);
+       }
        
        @Override
        public AAISimpleUri relationshipAPI() {
index 192b593..1f819ca 100644 (file)
@@ -24,7 +24,6 @@ import java.net.URI;
 
 import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
-import org.onap.so.client.graphinventory.entities.uri.SimpleUri;
 
 
 public class AAIUriFactory {
@@ -56,6 +55,11 @@ public class AAIUriFactory {
                
        }
        
+       public static AAIResourceUri createNodesUri(AAIObjectPlurals type) {
+               return new NodesUri(type);
+               
+       }
+       
        /**
         * This method should only be used to wrap a URI retrieved from A&AI contained within an object response
         * 
@@ -67,6 +71,20 @@ public class AAIUriFactory {
                return new AAISimpleUri(type, uri);
        }
        
+       
+       /**
+        * creates an AAIResourceUri from a parentUri
+        * 
+        * @param parentUri
+        * @param childType
+        * @param childValues
+        * @return
+        */
+       public static AAIResourceUri createResourceFromParentURI(AAIResourceUri parentUri, AAIObjectType childType, Object... childValues) {
+               
+               return new AAISimpleUri(parentUri, childType, childValues);
+       }
+       
        /**
         * Creates a uri for a plural type e.g. /cloud-infrastructure/pservers
         * 
index e063bf8..091d0c9 100644 (file)
@@ -38,8 +38,8 @@ public class AllottedResourceLookupUri extends HttpLookupUri {
        }
        
        @Override
-       public ServiceInstanceUri clone() {
-               return new ServiceInstanceUri(this.internalURI.clone(), this.getCachedValue(), values);
+       public AllottedResourceLookupUri clone() {
+               return new AllottedResourceLookupUri(this.internalURI.clone(), this.getCachedValue(), values);
        }
        
        public AAIResourcesClient getResourcesClient() {
index ccae0b4..3c9ca0e 100644 (file)
@@ -20,6 +20,9 @@
 
 package org.onap.so.client.aai.entities.uri;
 
+import javax.ws.rs.core.UriBuilder;
+
+import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.graphinventory.GraphInventoryObjectPlurals;
 import org.onap.so.client.graphinventory.GraphInventoryObjectType;
@@ -30,14 +33,18 @@ public class NodesUri extends AAISimpleUri {
                super(type, values);
        }
        
+       protected NodesUri(AAIObjectPlurals type) {
+               super(type);
+       }
+       
        
        @Override
        protected String getTemplate(GraphInventoryObjectType type) {
-               return "/nodes" + type.partialUri();
+               return UriBuilder.fromUri("/nodes").path(type.partialUri()).toTemplate();
        }
        
        @Override
        protected String getTemplate(GraphInventoryObjectPlurals type) {
-               return "/nodes" + type.partialUri();
+               return UriBuilder.fromUri("/nodes").path(type.partialUri()).toTemplate();
        }
 }
index 975fa31..026f1c3 100644 (file)
@@ -82,6 +82,12 @@ public class SimpleUri implements GraphInventoryResourceUri {
                this.internalURI = UriBuilder.fromPath(this.getTemplate(type));
                this.values = values;
        }
+       protected SimpleUri(GraphInventoryResourceUri parentUri, GraphInventoryObjectType childType, Object... childValues) {
+               this.type = childType;
+               this.pluralType = null;
+               this.internalURI = UriBuilder.fromUri(parentUri.build()).path(childType.partialUri());
+               this.values = childValues;
+       }
        
        @Override
        public SimpleUri relationshipAPI() {
diff --git a/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriFromParentUriTest.java b/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriFromParentUriTest.java
new file mode 100644 (file)
index 0000000..beb18a3
--- /dev/null
@@ -0,0 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.uri;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.so.client.aai.AAIObjectType;
+
+public class AAISimpleUriFromParentUriTest {
+
+       
+       @Test
+       public void appendChildren() {
+               
+               AAIResourceUri parentUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "key1", "key2", "key3");
+               
+               AAIUri uri = new AAISimpleUri(parentUri, AAIObjectType.ALLOTTED_RESOURCE, "key4");
+               
+               assertEquals("path appended", "/business/customers/customer/key1/service-subscriptions/service-subscription/key2/service-instances/service-instance/key3/allotted-resources/allotted-resource/key4", uri.build().toString());
+               
+       }
+}
diff --git a/common/src/test/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUriTest.java b/common/src/test/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUriTest.java
new file mode 100644 (file)
index 0000000..71ec497
--- /dev/null
@@ -0,0 +1,52 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.uri;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.ws.rs.core.UriBuilder;
+
+import org.junit.Test;
+import org.onap.so.client.graphinventory.exceptions.GraphInventoryPayloadException;
+import org.onap.so.client.graphinventory.exceptions.GraphInventoryUriNotFoundException;
+
+public class AllottedResourceLookupUriTest {
+
+       @Test
+       public void oneKey() throws IOException, URISyntaxException, GraphInventoryUriNotFoundException, GraphInventoryPayloadException {
+                
+               AllottedResourceLookupUri instance = new AllottedResourceLookupUri("key1");
+               AllottedResourceLookupUri spy = spy(instance);
+               doReturn("/business/customers/customer/key1/service-subscriptions/service-subscription/key2/service-instances/service-instance/key3/allotted-resources/allotted-resource/key4").when(spy).getObjectById(any(Object.class));
+               
+               final URI result = spy.build();
+               final URI expected = UriBuilder.fromPath("/business/customers/customer/key1/service-subscriptions/service-subscription/key2/service-instances/service-instance/key3/allotted-resources/allotted-resource/key4").build();
+               assertEquals("result is equal", expected, result);
+               
+       }
+}