add lambda function to modify uris

add lambda function to modify uris
formatted files after modifications

Issue-ID: SO-3101
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: Ia91adbf929e157a8ba3add8a4683e12ba3a64489
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/entities/GraphInventoryRelationships.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/entities/GraphInventoryRelationships.java
index 48feba2..881b7e9 100644
--- a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/entities/GraphInventoryRelationships.java
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/entities/GraphInventoryRelationships.java
@@ -27,6 +27,7 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Predicate;
+import java.util.function.UnaryOperator;
 import org.onap.aaiclient.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
 import org.onap.aaiclient.client.graphinventory.GraphInventoryObjectName;
 import org.onap.aaiclient.client.graphinventory.GraphInventoryObjectType;
@@ -56,6 +57,11 @@
         return this.getAll(Optional.of(type));
     }
 
+    public List<Wrapper> getByType(GraphInventoryObjectName type, UnaryOperator<Uri> func) {
+
+        return this.getAll(Optional.of(type), func);
+    }
+
     public List<Wrapper> getAll() {
 
         return this.getAll(Optional.empty());
@@ -99,6 +105,10 @@
 
 
     protected List<Wrapper> getAll(final Optional<GraphInventoryObjectName> type) {
+        return getAll(type, UnaryOperator.identity());
+    }
+
+    protected List<Wrapper> getAll(final Optional<GraphInventoryObjectName> type, UnaryOperator<Uri> func) {
         List<Uri> relatedLinks;
         if (type.isPresent()) {
             relatedLinks = this.getRelatedUris(type.get());
@@ -107,7 +117,7 @@
         }
         ArrayList<Wrapper> result = new ArrayList<>();
         for (Uri link : relatedLinks) {
-            result.add(this.get(link));
+            result.add(this.get(func.apply(link)));
         }
         return result;
     }
diff --git a/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/entities/RelationshipsTest.java b/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/entities/RelationshipsTest.java
index 10162f8..9e106fa 100644
--- a/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/entities/RelationshipsTest.java
+++ b/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/entities/RelationshipsTest.java
@@ -21,12 +21,15 @@
 package org.onap.aaiclient.client.aai.entities;
 
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
 import org.onap.aaiclient.client.aai.AAIObjectType;
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
@@ -53,4 +56,27 @@
 
     }
 
+    @Test
+    public void getByTypeTest() throws IOException {
+        final String content = new String(Files.readAllBytes(Paths.get(AAI_JSON_FILE_LOCATION + "e2e-complex.json")));
+
+        AAIResultWrapper wrapper = new AAIResultWrapper(content);
+        Relationships relationships = wrapper.getRelationships().get();
+
+        Relationships spy = Mockito.spy(relationships);
+        ArgumentCaptor<AAIResourceUri> argument = ArgumentCaptor.forClass(AAIResourceUri.class);
+        doReturn(new AAIResultWrapper("{}")).when(spy).get(argument.capture());
+
+        spy.getByType(AAIObjectType.VCE, uri -> uri.nodesOnly(true));
+
+        assertTrue(argument.getAllValues().stream().allMatch(item -> item.build().toString().contains("nodes-only")));
+
+        argument = ArgumentCaptor.forClass(AAIResourceUri.class);
+
+        doReturn(new AAIResultWrapper("{}")).when(spy).get(argument.capture());
+        spy.getByType(AAIObjectType.VCE);
+
+        assertTrue(argument.getAllValues().stream().allMatch(item -> !item.build().toString().contains("?")));
+
+    }
 }