aboutsummaryrefslogtreecommitdiffstats
path: root/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities
diff options
context:
space:
mode:
authorBenjamin, Max <max.benjamin@att.com>2020-04-30 10:41:46 -0400
committerBenjamin, Max (mb388a) <mb388a@att.com>2020-04-30 11:08:10 -0400
commite7f7527a7ad0397f9f98c739f6f4dfba357bcf3a (patch)
tree96db50b73b0a7d096683ecb0672c79cf6897ee90 /graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities
parent0fdf096ae4ff4ee4b7a644549bd67d75e4aa82b1 (diff)
add fluent type builder support to A&AI client
add fluent type builder support to A&AI client Issue-ID: SO-2856 Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com> Change-Id: I2957aedb84a1c6b23979ff2e1c4dfb16b3a646c7
Diffstat (limited to 'graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities')
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/Relationships.java5
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentPluralType.java12
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentSingleType.java12
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTopLevelType.java11
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTypeReverseLookup.java51
-rw-r--r--graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIUriFactory.java10
6 files changed, 99 insertions, 2 deletions
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/Relationships.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/Relationships.java
index fb205310fc..b8a80f082c 100644
--- a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/Relationships.java
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/Relationships.java
@@ -24,6 +24,7 @@ import java.util.List;
import javax.ws.rs.core.UriBuilder;
import org.onap.aaiclient.client.aai.AAIObjectType;
import org.onap.aaiclient.client.aai.AAIResourcesClient;
+import org.onap.aaiclient.client.aai.entities.uri.AAIFluentTypeReverseLookup;
import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
import org.onap.aaiclient.client.graphinventory.GraphInventoryObjectName;
@@ -68,7 +69,7 @@ public class Relationships extends GraphInventoryRelationships<AAIResultWrapper,
}
@Override
- protected AAIObjectType fromTypeName(String name) {
- return AAIObjectType.fromTypeName(name);
+ protected AAIObjectType fromTypeName(String name, String uri) {
+ return new AAIFluentTypeReverseLookup().fromName(name, uri);
}
}
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentPluralType.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentPluralType.java
new file mode 100644
index 0000000000..ea81e7b95c
--- /dev/null
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentPluralType.java
@@ -0,0 +1,12 @@
+package org.onap.aaiclient.client.aai.entities.uri;
+
+import org.onap.aaiclient.client.aai.AAIObjectPlurals;
+import org.onap.aaiclient.client.graphinventory.GraphInventoryFluentType;
+
+public interface AAIFluentPluralType extends GraphInventoryFluentType<AAIObjectPlurals> {
+
+ public interface Info extends GraphInventoryFluentType.Info {
+
+
+ }
+}
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentSingleType.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentSingleType.java
new file mode 100644
index 0000000000..9310933499
--- /dev/null
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentSingleType.java
@@ -0,0 +1,12 @@
+package org.onap.aaiclient.client.aai.entities.uri;
+
+import org.onap.aaiclient.client.aai.AAIObjectType;
+import org.onap.aaiclient.client.graphinventory.GraphInventoryFluentType;
+
+public interface AAIFluentSingleType extends GraphInventoryFluentType<AAIObjectType> {
+
+ public interface Info extends GraphInventoryFluentType.Info {
+
+
+ }
+}
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTopLevelType.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTopLevelType.java
new file mode 100644
index 0000000000..46a521d82e
--- /dev/null
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTopLevelType.java
@@ -0,0 +1,11 @@
+package org.onap.aaiclient.client.aai.entities.uri;
+
+import org.onap.aaiclient.client.graphinventory.GraphInventoryFluentTopLevelType;
+
+public interface AAIFluentTopLevelType extends GraphInventoryFluentTopLevelType {
+
+ public interface Info extends GraphInventoryFluentTopLevelType.Info {
+
+
+ }
+}
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTypeReverseLookup.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTypeReverseLookup.java
new file mode 100644
index 0000000000..bd9f4c713f
--- /dev/null
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIFluentTypeReverseLookup.java
@@ -0,0 +1,51 @@
+package org.onap.aaiclient.client.aai.entities.uri;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import org.onap.aaiclient.client.aai.AAIObjectType;
+import org.onap.aaiclient.client.graphinventory.GraphInventoryFluentType;
+import org.onap.aaiclient.client.graphinventory.entities.uri.parsers.UriParserSpringImpl;
+import com.google.common.base.CaseFormat;
+
+public class AAIFluentTypeReverseLookup {
+
+ public AAIObjectType fromName(String name, String uri) {
+
+ String className = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, name);
+
+ uri = uri.replaceFirst(".*?/v\\d+", "");
+ try {
+ Class<? extends GraphInventoryFluentType.Info> clazz =
+ (Class<? extends GraphInventoryFluentType.Info>) Class
+ .forName("org.onap.aaiclient.client.generated.fluentbuilders." + className + "$Info");
+
+ GraphInventoryFluentType.Info type = clazz.newInstance();
+
+ Optional<String> parentTemplate = findParentPath(type, uri);
+ if (parentTemplate.isPresent()) {
+ return new AAIObjectType(parentTemplate.get(), type.getPartialUri(), type.getName(), false);
+ } else {
+ // fallback to enum lookup
+ return AAIObjectType.fromTypeName(name);
+ }
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ }
+ return AAIObjectType.UNKNOWN;
+ }
+
+ protected Optional<String> findParentPath(GraphInventoryFluentType.Info type, String uri) {
+
+ List<UriParserSpringImpl> parsers =
+ type.getPaths().stream().map(path -> new UriParserSpringImpl(path)).collect(Collectors.toList());
+
+ for (UriParserSpringImpl parser : parsers) {
+ if (parser.isMatch(uri)) {
+ String partialUriReplacer = type.getPartialUri().replaceAll("\\{[^}]+\\}", "[^/]+");
+ return Optional.of(parser.getTemplate().replaceFirst(partialUriReplacer + "$", ""));
+ }
+ }
+
+ return Optional.empty();
+ }
+}
diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIUriFactory.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIUriFactory.java
index 31b55958d6..6bb2cbd471 100644
--- a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIUriFactory.java
+++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/aai/entities/uri/AAIUriFactory.java
@@ -47,6 +47,10 @@ public class AAIUriFactory {
}
}
+ public static AAIResourceUri createResourceUri(AAIFluentSingleType uri) {
+ return new AAISimpleUri(uri.build(), uri.values());
+ }
+
public static NodesSingleUri createNodesUri(AAIObjectType type, Object... values) {
return new NodesSingleUri(type, values);
@@ -88,6 +92,12 @@ public class AAIUriFactory {
return new AAISimplePluralUri(parentUri, childType);
}
+ public static AAISimplePluralUri createResourceUri(AAIFluentPluralType uri) {
+
+ return new AAISimplePluralUri(uri.build());
+
+ }
+
/**
* Creates a uri for a plural type e.g. /cloud-infrastructure/pservers
*