improved handling of indexed data 34/77734/2
authorRich Tabedzki <richard.tabedzki@att.com>
Fri, 1 Feb 2019 18:45:04 +0000 (13:45 -0500)
committerRich Tabedzki <richard.tabedzki@att.com>
Fri, 1 Feb 2019 18:49:27 +0000 (13:49 -0500)
Changes made:
* improve handling of indexed data in sli-adaptors:aai-service update request
* added code to convert index based data to daat array based to better fit AAI UPDATE processing

Change-Id: Ic5b457f546a70c82278c4f2c6b126b77e8d27eae
Issue-ID: CCSDK-1013
Signed-off-by: Rich Tabedzki <richard.tabedzki@att.com>
23 files changed:
aai-service/provider/src/main/java/META-INF/sun-jaxb.episode [deleted file]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClient.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutor.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIDeclarations.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIExecutorInterface.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIService.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceException.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceProvider.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceUtils.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAITrinityService.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/CustomQueryRequest.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/EchoRequest.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericQueryRequest.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/GenericRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/HttpMethod.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NamedQueryRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/PathRequest.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipListRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/RelationshipRequest.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/SelfLinkRequest.java [changed mode: 0644->0755]
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/UpdateRequest.java

diff --git a/aai-service/provider/src/main/java/META-INF/sun-jaxb.episode b/aai-service/provider/src/main/java/META-INF/sun-jaxb.episode
deleted file mode 100755 (executable)
index f14c7d4..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<bindings xmlns="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
-  <!--
-
-This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.11 
-See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
-Any modifications to this file will be lost upon recompilation of the source schema. 
-Generated on: 2017.02.21 at 07:59:51 PM EST 
-
-  -->
-  <bindings xmlns:tns="http://org.openecomp.aai.inventory/v8" if-exists="true" scd="x-schema::tns">
-    <schemaBindings map="false">
-      <package name="org.openecomp.aai.inventory.v8"/>
-    </schemaBindings>
-    <bindings if-exists="true" scd="tns:model-element">
-      <class ref="org.openecomp.aai.inventory.v8.ModelElement"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:named-query">
-      <class ref="org.openecomp.aai.inventory.v8.NamedQuery"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:result-data">
-      <class ref="org.openecomp.aai.inventory.v8.ResultData"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:search-results">
-      <class ref="org.openecomp.aai.inventory.v8.SearchResults"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:search">
-      <class ref="org.openecomp.aai.inventory.v8.Search"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:update-node-key">
-      <class ref="org.openecomp.aai.inventory.v8.UpdateNodeKey"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:action-data">
-      <class ref="org.openecomp.aai.inventory.v8.ActionData"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:action">
-      <class ref="org.openecomp.aai.inventory.v8.Action"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:update">
-      <class ref="org.openecomp.aai.inventory.v8.Update"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:key-data">
-      <class ref="org.openecomp.aai.inventory.v8.KeyData"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:notify">
-      <class ref="org.openecomp.aai.inventory.v8.Notify"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:actions">
-      <class ref="org.openecomp.aai.inventory.v8.Actions"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:relationship-data">
-      <class ref="org.openecomp.aai.inventory.v8.RelationshipData"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:related-to-property">
-      <class ref="org.openecomp.aai.inventory.v8.RelatedToProperty"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:relationship">
-      <class ref="org.openecomp.aai.inventory.v8.Relationship"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:relationship-list">
-      <class ref="org.openecomp.aai.inventory.v8.RelationshipList"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:volume-group">
-      <class ref="org.openecomp.aai.inventory.v8.VolumeGroup"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:volume-groups">
-      <class ref="org.openecomp.aai.inventory.v8.VolumeGroups"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:volume">
-      <class ref="org.openecomp.aai.inventory.v8.Volume"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:volumes">
-      <class ref="org.openecomp.aai.inventory.v8.Volumes"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l3-interface-ipv4-address-list">
-      <class ref="org.openecomp.aai.inventory.v8.L3InterfaceIpv4AddressList"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l3-interface-ipv6-address-list">
-      <class ref="org.openecomp.aai.inventory.v8.L3InterfaceIpv6AddressList"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vlan">
-      <class ref="org.openecomp.aai.inventory.v8.Vlan"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vlans">
-      <class ref="org.openecomp.aai.inventory.v8.Vlans"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l-interface">
-      <class ref="org.openecomp.aai.inventory.v8.LInterface"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l-interfaces">
-      <class ref="org.openecomp.aai.inventory.v8.LInterfaces"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vserver">
-      <class ref="org.openecomp.aai.inventory.v8.Vserver"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vservers">
-      <class ref="org.openecomp.aai.inventory.v8.Vservers"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:tenant">
-      <class ref="org.openecomp.aai.inventory.v8.Tenant"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:tenants">
-      <class ref="org.openecomp.aai.inventory.v8.Tenants"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:flavor">
-      <class ref="org.openecomp.aai.inventory.v8.Flavor"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:flavors">
-      <class ref="org.openecomp.aai.inventory.v8.Flavors"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:group-assignment">
-      <class ref="org.openecomp.aai.inventory.v8.GroupAssignment"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:group-assignments">
-      <class ref="org.openecomp.aai.inventory.v8.GroupAssignments"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:snapshot">
-      <class ref="org.openecomp.aai.inventory.v8.Snapshot"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:snapshots">
-      <class ref="org.openecomp.aai.inventory.v8.Snapshots"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:metadatum">
-      <class ref="org.openecomp.aai.inventory.v8.Metadatum"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:metadata">
-      <class ref="org.openecomp.aai.inventory.v8.Metadata"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:image">
-      <class ref="org.openecomp.aai.inventory.v8.Image"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:images">
-      <class ref="org.openecomp.aai.inventory.v8.Images"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:availability-zone">
-      <class ref="org.openecomp.aai.inventory.v8.AvailabilityZone"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:availability-zones">
-      <class ref="org.openecomp.aai.inventory.v8.AvailabilityZones"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:cloud-region">
-      <class ref="org.openecomp.aai.inventory.v8.CloudRegion"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:cloud-regions">
-      <class ref="org.openecomp.aai.inventory.v8.CloudRegions"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:p-interface">
-      <class ref="org.openecomp.aai.inventory.v8.PInterface"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:p-interfaces">
-      <class ref="org.openecomp.aai.inventory.v8.PInterfaces"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:lag-interface">
-      <class ref="org.openecomp.aai.inventory.v8.LagInterface"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:lag-interfaces">
-      <class ref="org.openecomp.aai.inventory.v8.LagInterfaces"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:pserver">
-      <class ref="org.openecomp.aai.inventory.v8.Pserver"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:pservers">
-      <class ref="org.openecomp.aai.inventory.v8.Pservers"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:cloud-infrastructure">
-      <class ref="org.openecomp.aai.inventory.v8.CloudInfrastructure"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service-instance">
-      <class ref="org.openecomp.aai.inventory.v8.ServiceInstance"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service-instances">
-      <class ref="org.openecomp.aai.inventory.v8.ServiceInstances"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service-subscription">
-      <class ref="org.openecomp.aai.inventory.v8.ServiceSubscription"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service-subscriptions">
-      <class ref="org.openecomp.aai.inventory.v8.ServiceSubscriptions"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:customer">
-      <class ref="org.openecomp.aai.inventory.v8.Customer"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:customers">
-      <class ref="org.openecomp.aai.inventory.v8.Customers"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:business">
-      <class ref="org.openecomp.aai.inventory.v8.Business"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service">
-      <class ref="org.openecomp.aai.inventory.v8.Service"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:services">
-      <class ref="org.openecomp.aai.inventory.v8.Services"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:element-choice-set">
-      <class ref="org.openecomp.aai.inventory.v8.ElementChoiceSet"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:model-elements">
-      <class ref="org.openecomp.aai.inventory.v8.ModelElements"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:model-constraints">
-      <class ref="org.openecomp.aai.inventory.v8.ModelConstraints"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:model-constraint">
-      <class ref="org.openecomp.aai.inventory.v8.ModelConstraint"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:constrained-element-sets">
-      <class ref="org.openecomp.aai.inventory.v8.ConstrainedElementSets"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:constrained-element-set">
-      <class ref="org.openecomp.aai.inventory.v8.ConstrainedElementSet"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:element-choice-sets">
-      <class ref="org.openecomp.aai.inventory.v8.ElementChoiceSets"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:model">
-      <class ref="org.openecomp.aai.inventory.v8.Model"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:models">
-      <class ref="org.openecomp.aai.inventory.v8.Models"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:related-lookup">
-      <class ref="org.openecomp.aai.inventory.v8.RelatedLookup"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:related-lookups">
-      <class ref="org.openecomp.aai.inventory.v8.RelatedLookups"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:property-constraint">
-      <class ref="org.openecomp.aai.inventory.v8.PropertyConstraint"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:property-constraints">
-      <class ref="org.openecomp.aai.inventory.v8.PropertyConstraints"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:named-query-element">
-      <class ref="org.openecomp.aai.inventory.v8.NamedQueryElement"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:named-query-elements">
-      <class ref="org.openecomp.aai.inventory.v8.NamedQueryElements"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:named-queries">
-      <class ref="org.openecomp.aai.inventory.v8.NamedQueries"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:service-design-and-creation">
-      <class ref="org.openecomp.aai.inventory.v8.ServiceDesignAndCreation"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:logical-link">
-      <class ref="org.openecomp.aai.inventory.v8.LogicalLink"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:logical-links">
-      <class ref="org.openecomp.aai.inventory.v8.LogicalLinks"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vnfc">
-      <class ref="org.openecomp.aai.inventory.v8.Vnfc"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vnfcs">
-      <class ref="org.openecomp.aai.inventory.v8.Vnfcs"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:subnet">
-      <class ref="org.openecomp.aai.inventory.v8.Subnet"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:subnets">
-      <class ref="org.openecomp.aai.inventory.v8.Subnets"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:ctag-assignment">
-      <class ref="org.openecomp.aai.inventory.v8.CtagAssignment"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:ctag-assignments">
-      <class ref="org.openecomp.aai.inventory.v8.CtagAssignments"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:segmentation-assignment">
-      <class ref="org.openecomp.aai.inventory.v8.SegmentationAssignment"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:segmentation-assignments">
-      <class ref="org.openecomp.aai.inventory.v8.SegmentationAssignments"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l3-network">
-      <class ref="org.openecomp.aai.inventory.v8.L3Network"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:l3-networks">
-      <class ref="org.openecomp.aai.inventory.v8.L3Networks"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vf-module">
-      <class ref="org.openecomp.aai.inventory.v8.VfModule"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:vf-modules">
-      <class ref="org.openecomp.aai.inventory.v8.VfModules"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:generic-vnf">
-      <class ref="org.openecomp.aai.inventory.v8.GenericVnf"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:generic-vnfs">
-      <class ref="org.openecomp.aai.inventory.v8.GenericVnfs"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:pnf">
-      <class ref="org.openecomp.aai.inventory.v8.Pnf"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:pnfs">
-      <class ref="org.openecomp.aai.inventory.v8.Pnfs"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:physical-link">
-      <class ref="org.openecomp.aai.inventory.v8.PhysicalLink"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:physical-links">
-      <class ref="org.openecomp.aai.inventory.v8.PhysicalLinks"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:network">
-      <class ref="org.openecomp.aai.inventory.v8.Network"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:reserved-prop-names">
-      <class ref="org.openecomp.aai.inventory.v8.ReservedPropNames"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:edge-prop-names">
-      <class ref="org.openecomp.aai.inventory.v8.EdgePropNames"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:aai-internal">
-      <class ref="org.openecomp.aai.inventory.v8.AaiInternal"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:inventory">
-      <class ref="org.openecomp.aai.inventory.v8.Inventory"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:inventory-item-data">
-      <class ref="org.openecomp.aai.inventory.v8.InventoryItemData"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:inventory-item">
-      <class ref="org.openecomp.aai.inventory.v8.InventoryItem"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:tagged-inventory-item-list">
-      <class ref="org.openecomp.aai.inventory.v8.TaggedInventoryItemList"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:start-node-filter">
-      <class ref="org.openecomp.aai.inventory.v8.StartNodeFilter"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:include-node-filter">
-      <class ref="org.openecomp.aai.inventory.v8.IncludeNodeFilter"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:secondary-filter">
-      <class ref="org.openecomp.aai.inventory.v8.SecondaryFilter"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:notification-event-header">
-      <class ref="org.openecomp.aai.inventory.v8.NotificationEventHeader"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:notification-event">
-      <class ref="org.openecomp.aai.inventory.v8.NotificationEvent"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:query-parameters">
-      <class ref="org.openecomp.aai.inventory.v8.QueryParameters"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:instance-filter">
-      <class ref="org.openecomp.aai.inventory.v8.InstanceFilter"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:instance-filters">
-      <class ref="org.openecomp.aai.inventory.v8.InstanceFilters"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:model-and-named-query-search">
-      <class ref="org.openecomp.aai.inventory.v8.ModelAndNamedQuerySearch"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:properties">
-      <class ref="org.openecomp.aai.inventory.v8.Properties"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:extra-properties">
-      <class ref="org.openecomp.aai.inventory.v8.ExtraProperties"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:inventory-response-item">
-      <class ref="org.openecomp.aai.inventory.v8.InventoryResponseItem"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:inventory-response-items">
-      <class ref="org.openecomp.aai.inventory.v8.InventoryResponseItems"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:response-list">
-      <class ref="org.openecomp.aai.inventory.v8.ResponseList"/>
-    </bindings>
-    <bindings if-exists="true" scd="tns:extra-property">
-      <class ref="org.openecomp.aai.inventory.v8.ExtraProperty"/>
-    </bindings>
-  </bindings>
-</bindings>
index 6af6ad6..752bd9f 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.IOException;
index a3aecda..c4f9464 100755 (executable)
@@ -67,7 +67,7 @@ import org.apache.http.impl.EnglishReasonPhraseCatalog;
 
 /**
  * The AAIClientRESTExecutor class provides CRUD API for AAI Client service.
- * @author  richtabedzki
+ * @author  Rich Tabedzki
  */
 public class AAIClientRESTExecutor implements AAIExecutorInterface {
 
index 20f9265..3fa9549 100755 (executable)
  * ============LICENSE_END=========================================================
  */
 
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.IOException;
index 9203daa..d02f14a 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 public interface AAIExecutorInterface {
index c66ae06..04312fd 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.IOException;
index 4303894..2411d29 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.BufferedReader;
old mode 100644 (file)
new mode 100755 (executable)
index 9fac977..2f774e4
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse;
index 36c34e2..9888c83 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.File;
index 6c48c63..3bd6ac4 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.lang.annotation.Annotation;
old mode 100644 (file)
new mode 100755 (executable)
index 6c627ff..d1abda1
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import org.slf4j.Logger;
old mode 100644 (file)
new mode 100755 (executable)
index aaae11a..8922886
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.IOException;
old mode 100644 (file)
new mode 100755 (executable)
index 6011858..8e6af01
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
old mode 100644 (file)
new mode 100755 (executable)
index 35f190e..07bb69d
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index 4582484..59aba1b 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+ /**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index 28d79cf..8f7abe6 100755 (executable)
@@ -1,5 +1,8 @@
 package org.onap.ccsdk.sli.adaptors.aai;
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 public interface HttpMethod {
     public static final String GET = "GET";
     public static final String HEAD = "HEAD";
index d1995f0..d6df628 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index dafc4a7..6b050b5 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
old mode 100644 (file)
new mode 100755 (executable)
index cab601a..68aff1f
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index 847bdea..8cd7a44 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index bc97e1a..e26421a 100755 (executable)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
old mode 100644 (file)
new mode 100755 (executable)
index 1e9915a..0094b45
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
+/**
+ * @author Rich Tabedzki
+ *
+ */
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import java.io.UnsupportedEncodingException;
index 8ecc0b3..8046ca5 100755 (executable)
@@ -3,15 +3,15 @@
  * openECOMP : SDN-C
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                     reserved.
+ *             reserved.
  * Modifications Copyright (C) 2018 IBM.
  * ================================================================================
  * 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.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+/**
+ * The UpdateRequest class provides processing related to update transaction.
+ * @author  richtabedzki
+ */
 
 package org.onap.ccsdk.sli.adaptors.aai;
 
@@ -26,8 +30,12 @@ import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
 
@@ -35,74 +43,110 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class UpdateRequest extends AAIRequest {
-       
-       private AAIRequest request;
-       private Map<String, String> params;
+  
+    private AAIRequest request;
+    private Map<String, String> params;
+
+    public UpdateRequest(AAIRequest request, Map<String, String> parms) {
+        this.request = request;
+        this.params = parms;
+    }
 
-       public UpdateRequest(AAIRequest request, Map<String, String> parms) {
-               this.request = request;
-               this.params = parms;
-       }
+    @Override
+    public URL getRequestUrl(String method, String resourceVersion)
+            throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
+        return request.getRequestUrl(method, resourceVersion);
+    }
 
-       @Override
-       public URL getRequestUrl(String method, String resourceVersion)
-                       throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
-               return request.getRequestUrl(method, resourceVersion);
-       }
+    @Override
+    public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
+        return request.getRequestQueryUrl(method);
+    }
 
-       @Override
-       public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
-               return request.getRequestQueryUrl(method);
-       }
+    @Override
+    public String toJSONString() {
+        updateArrayEntries(params);
+        ObjectMapper mapper = AAIService.getObjectMapper();
+        String json = null;
+      
+        try {
+            json = mapper.writeValueAsString(params);
+        } catch (JsonProcessingException e) {
+            LOG.error("Could not convert parameters of " + request.getRequestObject().getClass().getName(), e);
+        }
+      
+        return json;
+    }
 
-       @Override
-       public String toJSONString() {
-               ObjectMapper mapper = AAIService.getObjectMapper();
-               String json = null;
-               
-               try {
-                       json = mapper.writeValueAsString(params);
-               } catch (JsonProcessingException e) {
-                       LOG.error("Could not convert parameters of " + request.getRequestObject().getClass().getName(), e);
-               }
-               
-               return json;
-       }
+    /**
+    *
+    * Update array entries.
+    * The method converts indexed data entries to an array of values
+    *
+    * @param data Map containing String:String values representing input data
+    */
+    private void updateArrayEntries( Map<String, String> data) {
+        Set<String> set = data.keySet()
+                .stream()
+                .filter(s -> s.endsWith("_length"))
+                .collect(Collectors.toSet());
+          
+        for(String lenghtKey : set) {
+            String key = lenghtKey.replace("_length", "");
+//            String index = data.get(lenghtKey);
+            List<String> array = new ArrayList<>();
+          
+            Set<String> subset = data.keySet()
+                    .stream()
+                    .filter(s -> s.startsWith(String.format("%s[",key)))
+                    .collect(Collectors.toSet());
+            for(String subKey : subset) {
+                String subValue = data.get(subKey);
+                array.add(subValue);
+                LOG.trace("{} : {} ", subKey, subValue);
+            }
+            data.put(key, array.toString());
+            data.remove(lenghtKey);
+            for(String subKey : subset) {
+                data.remove(subKey);
+            }
+        }
+    }
 
-       @Override
-       public String[] getArgsList() {
-               return request.getArgsList();
-       }
+    @Override
+    public String[] getArgsList() {
+        return request.getArgsList();
+    }
 
-       @Override
-       public Class<? extends AAIDatum> getModelClass() {
-               return request.getModelClass();
-       }
-       
-       @Override
-       public void addRequestProperty(String key, String value) {
-               request.requestProperties.put(key, value);
-       }
+    @Override
+    public Class<? extends AAIDatum> getModelClass() {
+        return request.getModelClass();
+    }
+  
+    @Override
+    public void addRequestProperty(String key, String value) {
+        request.requestProperties.put(key, value);
+    }
 
-       public static String processPathData(String requestUrl, Properties requestProperties) {
-               
-//             if(request != null) {
-//                     Class<?> clazz = request.getClass();
-//                     Method function = null;
-//                     try {
-//                             function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass());
-//                             request_url = (String) function.invoke(null, request_url,  requestProperties);
-//                     } catch (Exception e) {
-//                             e.printStackTrace();
-//                     }
-//             }
-               
-//             request.processPathData(request_url, requestProperties);
-               return requestUrl;
-       }
-       
-       public void processRequestPathValues(Map<String, String> nameValues) {
-               request.processRequestPathValues(nameValues);
-       }
+    public static String processPathData(String requestUrl, Properties requestProperties) {
+      
+//        if(request != null) {
+//            Class<?> clazz = request.getClass();
+//            Method function = null;
+//            try {
+//                function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass());
+//                request_url = (String) function.invoke(null, request_url,  requestProperties);
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+      
+//        request.processPathData(request_url, requestProperties);
+        return requestUrl;
+    }
+  
+    public void processRequestPathValues(Map<String, String> nameValues) {
+        request.processRequestPathValues(nameValues);
+    }
 
 }