Improved Java Code Conventions compliance 23/32823/4
authorRich Tabedzki <richard.tabedzki@att.com>
Mon, 26 Feb 2018 00:46:36 +0000 (00:46 +0000)
committerRich Tabedzki <richard.tabedzki@att.com>
Mon, 26 Feb 2018 01:14:44 +0000 (01:14 +0000)
Changes made:
* Fixed Code conventions bugs
* Added test classes to improve code coverage

Change-Id: Id524d002cb4fa1bf973be2cfb90729199af94d8e
Issue-ID: CCSDK-151
Signed-off-by: Rich Tabedzki <richard.tabedzki@att.com>
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/AAIService.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceException.java
aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIServiceUtils.java
aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java [new file with mode: 0755]
aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/AutoGeneratedRegressionTest.java
aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RequestPathTest.java [new file with mode: 0755]

index 3684cf2..6f466c3 100755 (executable)
@@ -24,7 +24,6 @@ package org.onap.ccsdk.sli.adaptors.aai;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.openecomp.aai.inventory.v11.*;
@@ -76,9 +75,9 @@ public interface AAIClient extends SvcLogicResource, SvcLogicJavaPlugin {
 
     public void logKeyError(String keys);
 
-    public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix,  SvcLogicContext ctx, HashMap<String, String> nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException ;
+    public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix,  SvcLogicContext ctx, Map<String, String> nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException ;
     public String getPathTemplateForResource(String resoourceName, String join, SvcLogicContext ctx) throws MalformedURLException;
-    public boolean isDeprecatedFormat(String resource, HashMap<String, String> nameValues);
+    public boolean isDeprecatedFormat(String resource, Map<String, String> nameValues);
 
     String query(AAIRequest request) throws AAIServiceException;
     String save(AAIRequest request) throws AAIServiceException;
index 252f319..906cd83 100755 (executable)
@@ -103,7 +103,6 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
         truststorePassword = props.getProperty(AAIService.TRUSTSTORE_PSSWD);
         keystorePath         = props.getProperty(AAIService.KEYSTORE_PATH);
         keystorePassword     = props.getProperty(AAIService.KEYSTORE_PSSWD);
-//        this.read_timeout = read_timeout;
 
         String tmpApplicationId =props.getProperty(AAIService.APPLICATION_ID);
         if(tmpApplicationId == null || tmpApplicationId.isEmpty()) {
@@ -310,14 +309,12 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
                 errorresponse.setRequestError(requestError);
                 throw new AAIServiceException(responseCode, errorresponse);
             } else {
-//                StringBuilder errorStringBuilder = new StringBuilder();
                 String line = null;
                 while( ( line = reader.readLine() ) != null ) {
                     errorStringBuilder.append("\n").append( line );
                 }
 
                 ErrorResponse errorresponse = mapper.readValue(errorStringBuilder.toString(), ErrorResponse.class);
-//                ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class);
                 LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse));
                 throw new AAIServiceException(responseCode, errorresponse);
             }
@@ -373,16 +370,16 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
                 LOG.error("", exc);
             }
 
-            URL requestUrl = null;
-            HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.PUT, resourceVersion), HttpMethod.PUT);
+            URL requestUrl = request.getRequestUrl(HttpMethod.PUT, resourceVersion);
+            HttpURLConnection con = getConfiguredConnection(requestUrl, HttpMethod.PUT);
             ObjectMapper mapper = AAIService.getObjectMapper();
-            String json_text = request.toJSONString();
+            String jsonText = request.toJSONString();
 
-            LOGwriteDateTrace("data", json_text);
-            logMetricRequest("PUT "+requestUrl.getPath(), json_text, requestUrl.getPath());
+            LOGwriteDateTrace("data", jsonText);
+            logMetricRequest("PUT "+requestUrl.getPath(), jsonText, requestUrl.getPath());
 
             OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
-            osw.write(json_text);
+            osw.write(jsonText);
             osw.flush();
 
             // Check for errors
@@ -454,8 +451,8 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
         }
 
         try {
-            URL requestUrl = null;
-            HttpURLConnection conn = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.DELETE, resourceVersion), HttpMethod.DELETE);
+            URL requestUrl = request.getRequestUrl(HttpMethod.DELETE, resourceVersion);
+            HttpURLConnection conn = getConfiguredConnection(requestUrl, HttpMethod.DELETE);
             logMetricRequest("DELETE "+requestUrl.getPath(), "", requestUrl.getPath());
             conn.setDoOutput(true);
 
@@ -527,11 +524,10 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
     public Object query(AAIRequest request, Class clas) throws AAIServiceException {
         Object response = null;
         InputStream inputStream = null;
-        HttpURLConnection con = null;
-        URL requestUrl = null;
 
         try {
-            con = getConfiguredConnection(requestUrl = request.getRequestQueryUrl(HttpMethod.GET), HttpMethod.GET);
+            URL requestUrl = request.getRequestQueryUrl(HttpMethod.GET);
+            HttpURLConnection con = getConfiguredConnection(requestUrl, HttpMethod.GET);
             logMetricRequest("GET "+requestUrl.getPath(), "", requestUrl.getPath());
 
             // Check for errors
@@ -574,7 +570,6 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
                     LOG.warn("GET", exc);
                 }
             }
-            con = null;
         }
         return response;
     }
@@ -592,13 +587,13 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
             URL requestUrl = null;
             HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl("PATCH", resourceVersion), "PATCH");
             ObjectMapper mapper = AAIService.getObjectMapper();
-            String json_text = request.toJSONString();
+            String jsonText = request.toJSONString();
 
-            LOGwriteDateTrace("data", json_text);
-            logMetricRequest("PATCH "+requestUrl.getPath(), json_text, requestUrl.getPath());
+            LOGwriteDateTrace("data", jsonText);
+            logMetricRequest("PATCH "+requestUrl.getPath(), jsonText, requestUrl.getPath());
 
             OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
-            osw.write(json_text);
+            osw.write(jsonText);
             osw.flush();
 
             // Check for errors
@@ -723,8 +718,6 @@ public     class AAIClientRESTExecutor implements AAIExecutorInterface {
         String targetEntity = "A&AI";
         String targetVirtualEntity = null;
 
-        targetServiceName = "";
-
         ml.logRequest(svcInstanceId, svcName, partnerName, targetEntity, targetServiceName, targetVirtualEntity, msg);
     }
 
index 7966fa9..d1b148d 100755 (executable)
@@ -818,7 +818,7 @@ public abstract class AAIDeclarations implements AAIClient {
         return retval;
     }
 
-    public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix,  SvcLogicContext ctx, HashMap<String, String> nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException
+    public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix,  SvcLogicContext ctx, Map<String, String> nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException
     {
         Object response;
 
index 7345469..9e6e60f 100755 (executable)
@@ -1520,7 +1520,7 @@ public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicRe
     }
 
     @Override
-    public boolean isDeprecatedFormat(String resource, HashMap<String, String> nameValues) {
+    public boolean isDeprecatedFormat(String resource, Map<String, String> nameValues) {
         return !AAIServiceUtils.isValidFormat(resource, nameValues);
     }
 
index ff182f2..9fac977 100644 (file)
@@ -3,14 +3,14 @@
  * openECOMP : SDN-C
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                     reserved.
+ *             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.
@@ -25,53 +25,62 @@ import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse;
 
 public class AAIServiceException extends Exception {
 
-       /**
-        * 
-        */
-       private static final long serialVersionUID = -9039257722542999522L;
-       
-       protected ErrorResponse errorResponse = null;
-       protected int returnCode = -1;
+    /**
+     *
+     */
+    private static final long serialVersionUID = -9039257722542999522L;
 
-       public AAIServiceException() {
+    protected final ErrorResponse errorResponse;
+    protected final int returnCode;
 
-       }
+    public AAIServiceException() {
+        returnCode = -1;
+        errorResponse = null;
+    }
 
-       public AAIServiceException(String message) {
-               super(message);
-       }
+    public AAIServiceException(String message) {
+        super(message);
+        returnCode = -1;
+        errorResponse = null;
+    }
 
-       public AAIServiceException(Throwable cause) {
-               super(cause);
-       }
+    public AAIServiceException(Throwable cause) {
+        super(cause);
+        returnCode = -1;
+        errorResponse = null;
+    }
 
-       public AAIServiceException(String message, Throwable cause) {
-               super(message, cause);
-       }
+    public AAIServiceException(String message, Throwable cause) {
+        super(message, cause);
+        returnCode = -1;
+        errorResponse = null;
+    }
 
-       public AAIServiceException(String message, Throwable cause,
-                       boolean enableSuppression, boolean writableStackTrace) {
-               super(message, cause, enableSuppression, writableStackTrace);
-       }
+    public AAIServiceException(String message, Throwable cause,
+            boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+        returnCode = -1;
+        errorResponse = null;
+    }
 
-       public AAIServiceException(int returnCode, ErrorResponse errorresponse) {
-               this.errorResponse = errorresponse;
-               this.returnCode = returnCode;
-       }
-       
-       public ErrorResponse getErrorResponse() {
-               return errorResponse;
-       }
+    public AAIServiceException(int returnCode, ErrorResponse errorresponse) {
+        this.errorResponse = errorresponse;
+        this.returnCode = returnCode;
+    }
 
-       public int getReturnCode() {
-               return returnCode;
-       }
-       
-       public String getMessage() {
-               if(errorResponse != null) {
-                       return errorResponse.getRequestError().getServiceException().getText();
-               } else {
-                       return super.getMessage();
-               }
-       }
+    public ErrorResponse getErrorResponse() {
+        return errorResponse;
+    }
+
+    public int getReturnCode() {
+        return returnCode;
+    }
+
+    public String getMessage() {
+        if(errorResponse != null) {
+            return errorResponse.getRequestError().getServiceException().getText();
+        } else {
+            return super.getMessage();
+        }
+    }
 }
index 102835d..ca2af1d 100755 (executable)
@@ -28,6 +28,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -49,14 +50,14 @@ public class AAIServiceUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(AAIService.class);
 
+    private AAIServiceUtils() {
+    }
+
     public static String getPrimaryIdFromClass(Class<? extends AAIDatum> resourceClass){
         // 1. find class
         getLogger().debug(resourceClass.getName());
-        AAIDatum instance = null;
 
         try {
-            instance = resourceClass.newInstance();
-
             Annotation[] annotations = resourceClass.getAnnotations();
             for(Annotation annotation : annotations) {
                 Class<? extends Annotation> anotationType = annotation.annotationType();
@@ -73,19 +74,15 @@ public class AAIServiceUtils {
                 }
             }
         } catch(Exception exc) {
-
+            getLogger().warn("getPrimaryIdFromClass failed", exc);
         }
         return null;
     }
 
     public static String getSecondaryIdFromClass(Class<? extends AAIDatum> resourceClass){
-        // 1. find class
         getLogger().debug(resourceClass.getName());
-        AAIDatum instance = null;
 
         try {
-            instance = resourceClass.newInstance();
-
             Annotation[] annotations = resourceClass.getAnnotations();
             for(Annotation annotation : annotations) {
                 Class<? extends Annotation> anotationType = annotation.annotationType();
@@ -112,16 +109,16 @@ public class AAIServiceUtils {
         return null;
     }
 
-       public static Method getRelationshipListGetterMethodFromClassDefinition(Class resourceClass) {
-               Method getRelationshipListMethod = null;
-               
-               try {
-                        getRelationshipListMethod = resourceClass.getMethod("getRelationshipList");
-               } catch(Exception exc) {
-                       getLogger().debug("Retrofiting relationship data: " + exc.getMessage());
-               }
-               return getRelationshipListMethod;
-       }
+    public static Method getRelationshipListGetterMethodFromClassDefinition(Class resourceClass) {
+        Method getRelationshipListMethod = null;
+
+        try {
+             getRelationshipListMethod = resourceClass.getMethod("getRelationshipList");
+        } catch(Exception exc) {
+            getLogger().debug("Retrofiting relationship data: " + exc.getMessage());
+        }
+        return getRelationshipListMethod;
+    }
 
     private static Logger getLogger() {
         return LOG;
@@ -314,10 +311,10 @@ public class AAIServiceUtils {
         return request.getRequestPath();
     }
 
-    public static boolean isValidFormat(String resource, HashMap<String, String> nameValues) {
+    public static boolean isValidFormat(String resource, Map<String, String> nameValues) {
 
         switch(resource){
-       case "custom-query":
+    case "custom-query":
         case "formatted-query":
         case "generic-query":
         case "named-query":
@@ -336,10 +333,10 @@ public class AAIServiceUtils {
         Set<String> keys = nameValues.keySet();
         for(String key : keys) {
             if(!key.contains(".")) {
-                               if("depth".equals(key) || "related-to".equals(key) || "related_to".equals(key) || "related-link".equals(key) || "related_link".equals(key) || "selflink".equals(key) || "resource_path".equals(key))
+                if("depth".equals(key) || "related-to".equals(key) || "related_to".equals(key) || "related-link".equals(key) || "related_link".equals(key) || "selflink".equals(key) || "resource_path".equals(key))
                     continue;
                 else {
-                                       getLogger().warn(String.format("key '%s' is incompatible with resource type '%s'", key, resource));
+                    getLogger().warn(String.format("key '%s' is incompatible with resource type '%s'", key, resource));
                 }
             }
         }
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java
new file mode 100755 (executable)
index 0000000..607182e
--- /dev/null
@@ -0,0 +1,43 @@
+package org.onap.ccsdk.sli.adaptors.aai;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+
+import org.onap.ccsdk.sli.adaptors.aai.update.Action;
+import org.onap.ccsdk.sli.adaptors.aai.update.ActionDatum;
+import org.junit.Test;
+
+public class ActionUpdateTest {
+    @Test
+    public void getActionData() throws Exception {
+        final Action resolver = new Action();
+        assertNotNull(resolver.getActionData());
+    }
+
+    @Test
+    public void setActionData() throws Exception {
+        final Action resolver = new Action();
+        resolver.setActionData( new ArrayList<ActionDatum>());
+    }
+
+    @Test
+    public void setActionType() throws Exception {
+        final Action resolver = new Action();
+        resolver.setActionType("create");
+        assertEquals("create", resolver.getActionType());
+    }
+
+    @Test
+    public void getAdditionalProperties() throws Exception {
+        final Action resolver = new Action();
+        assertNotNull(resolver.getAdditionalProperties());
+    }
+
+    @Test
+    public void setAdditionalProperty() throws Exception {
+        final Action resolver = new Action();
+        resolver.setAdditionalProperty("outcome", "success");
+        assertEquals("success", resolver.getAdditionalProperties().get("outcome"));
+    }
+}
\ No newline at end of file
index 345ff57..9bc9360 100755 (executable)
@@ -3,7 +3,7 @@
  * openECOMP : SDN-C
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                                             reserved.
+ *                         reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@
 
 package org.onap.ccsdk.sli.adaptors.aai;
 
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -65,7 +64,6 @@ import org.onap.ccsdk.sli.adaptors.aai.query.NamedQueryData;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus;
 import org.openecomp.aai.inventory.v11.GenericVnf;
-import org.openecomp.aai.inventory.v11.InventoryResponseItems;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.annotation.AnnotationUtils;
@@ -81,697 +79,694 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class AutoGeneratedRegressionTest {
 
-       static {
-               System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "INFO");
-               System.setProperty(org.slf4j.impl.SimpleLogger.LOG_FILE_KEY, String.format("AutoGeneratedRegressionTest-%d.txt", System.currentTimeMillis()));
-       }
-       private static final Logger LOG = LoggerFactory.getLogger(AutoGeneratedRegressionTest.class);
-
-
-       protected static AAIClient client;
-
-       protected Map<String, String> cache = new HashMap<String, String>();
-
-       @BeforeClass
-       public static void setUp() throws Exception {
-               URL url = AAIService.class.getResource(AAIService.AAICLIENT_PROPERTIES);
-               client = new AAIService(url);
-               LOG.info("----------------------- aicAAIResourceTest.setUp -----------------------");
-       }
-
-       @AfterClass
-       public static void tearDown() throws Exception {
-               client = null;
-               LOG.info("----------------------- AAIResourceTest.tearDown -----------------------");
-       }
-
-
-       @Test
-       public void mainLoadTest ()
-       {
-           try
-           {
-               String currentDir = System.getProperty("user.dir");
-               File dir = new File(currentDir);
-               if(!dir.exists()) {
-                       System.exit(1);
-               }
-               dir = new File(dir, "src/main/resources");
-               if(!dir.exists()) {
-                       System.exit(1);
-               }
-               // parse the document
-               File file = new File(dir, "aai_schema_v11.xsd");
-               if(!file.exists()) {
-                       assert(false);
-                       return;
-               }
-
-               DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
-               DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-               Document doc = dBuilder.parse(file);
-
-               Stack<String> stack = new Stack<String>();
-               List<String> commands = new ArrayList<String>();
-               listSubNodes("network", doc, stack, commands);
-               listSubNodes("cloud-infrastructure", doc, stack, commands);
-               listSubNodes("service-design-and-creation", doc, stack, commands);
-               listSubNodes("license-management", doc, stack, commands);
-               listSubNodes("business", doc, stack, commands);
-
-               String[] requestDefinition = commands.toArray(new String[0]);
-               LOG.info("\n----------------------------");
-
-               executeTests(requestDefinition);
-           }
-           catch (Throwable e)
-           {
-               LOG.error("", e);
-           }
-       }
-
-       @Test
-       public void testFromFile() {
-               String filename = "testCommands.txt";
-               List<String> lines = new ArrayList<String>();
-               Scanner scanner = null;
-
-               try {
-                       File testFile = new File(filename);
-                       if(!testFile.exists())
-                               return;
-                       scanner = new Scanner(testFile);
-                       while (scanner.hasNextLine()) {
-                               lines.add(scanner.nextLine());
-                       }
-               } catch (Exception exc) {
-
-               } finally {
-                       if(scanner != null)
-                           scanner.close();
-               }
-
-               String[] requestDefinition = lines.toArray(new String[0]);
-               executeTests(requestDefinition);
-       }
-
-
-       @Test
-       public void test01AutoGeneratedRequest() {
-
-               String[] requestDefinition = {
-                               "save|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
-                               "update|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
-                               "query|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
-                               "delete|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458"
-               };
-
-               executeTests(requestDefinition);
-       }
-
-       public void executeTests(String[] requestDefinition) {
-
-               for(String line : requestDefinition){
-                       LOG.info("Executing: " + line);
-
-                       // parse request line resource | key structure
-                       String[] segments = line.split("\\|");
-                       String action = segments[0];
-                       String resource = segments[1];
-                       String[] tmpKeys = segments[2].split("&");
-//             String[] keyStructure = tmpKey.;
-                       // options      :assign:uuid:cache
-                       //                      :cached
-                       //                      :query:random
-
-
-                       String localId = null;
-
-                       List<String> keys = new ArrayList<String>();
-                       String keyLine = null;
-
-                       for(String instruction : tmpKeys) {
-                               String[] parts = instruction.split(":");
-                               String identifier = parts[0];
-                               String method = parts[2];
-
-                               if(identifier.startsWith(resource)) {
-                                       localId = identifier;
-                               } else if(identifier.startsWith("l-interface") && "l2-bridge-bgf".equals(resource)) {
-                                       localId = identifier;
-                               } else if(identifier.startsWith("l-interface") && "l2-bridge-sbg".equals(resource)) {
-                                       localId = identifier;
-                               } else if("nodes-query".equals(resource)) {
-                                       localId = identifier;
-                               }
-
-                               switch(parts[1]) {
-                               case "assign":
-                                       String postProcesss = parts[3];
-                                       keyLine = processAssign(identifier, method, postProcesss);
-                                       if(keyLine != null && !keyLine.trim().isEmpty()) {
-                                               keys.add(keyLine);
-                                       }
-                                       break;
-                               case "cached":
-                                       keyLine = processCached(identifier, method);
-                                       if(keyLine != null && !keyLine.trim().isEmpty()) {
-                                               keys.add(keyLine);
-                                       }
-                                       break;
-                               }
-
-                       }
-
-                       List<String> x = Arrays.asList(localId.split("\\."));
-                       switch(action){
-                       case "save":
-                               testAutoGeneratedSaveRequest(resource, keys, x.get(x.size() - 1), cache.get(localId));
-                               break;
-                       case "update":
-                               testAutoGeneratedUpdateRequest(resource, keys, x.get(x.size() - 1), cache.get(localId));
-                               break;
-
-                       case "query":
-                               test03AutoGeneratedQueryRequest(resource, keys);
-                               break;
-                       case "delete":
-                               test03AutoGeneratedDeleteRequest(resource, keys);
-                               break;
-                       }
-               }
-
-               LOG.info("done");
-       }
-
-
-       public void testAutoGeneratedSaveRequest(String resource, List<String> requestKeys, String identifier, String idValue) {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-
-               try
-               {
-                       Map<String, String> nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext());
-                       AAIRequest request = AAIRequest.createRequest(resource, nameValues);
-                       Class<AAIDatum> resourceClass = (Class<AAIDatum>) (request==null ? GenericVnf.class : request.getModelClass());
-
-                       Map<String, String> data = new HashMap<String, String>();
-
-                       for(Field field : resourceClass.getDeclaredFields()) {
-                               String type = field.getType().getName();
-                               switch(type){
-                               case "bool":
-                               case "boolean":
-                                       type = Boolean.class.getName();
-                                       break;
-                               case "int":
-                                       type = Integer.class.getName();
-                                       break;
-                               case "long":
-                                       type = Long.class.getName();
-                                       break;
-
-                               }
-                               if(type.startsWith("java.lang.")){
-                                       Annotation[] fieldAnnotations = field.getAnnotations();
-                                       for(int i = 0; i < fieldAnnotations.length; i++) {
-                                               Annotation a = fieldAnnotations[i];
-                                               if(a instanceof JsonProperty){
-                                                       JsonProperty pa = (JsonProperty)a;
-                                                       String name = pa.value();
-                                                       String value;
-                                                       switch(type) {
-                                                       case "java.lang.Integer":
-                                                       case "java.lang.Long":
-                                                               value = RandomStringUtils.random(6, false, true);
-                                                               break;
-                                                       case "java.lang.Boolean":
-                                                               value = "false";
-                                                               break;
-                                                       default:
-                                                               if(name.equals(identifier)) {
-                                                                       value = idValue;
-                                                               } else {
-                                                                       value = RandomStringUtils.random(10, true, false);
-                                                               }
-                                                       }
-                                                       data.put(name, value);
-                                               } else
-                                                       if(a instanceof javax.xml.bind.annotation.XmlElement) {
-                                                               XmlElement xe = (XmlElement)a;
-                                                               String name = xe.name();
-                                                               if("model-version-id".equals(name)) {
-                                                                       continue;
-                                                               }
-                                                               if("model-invariant-id".equals(name)) {
-                                                                       continue;
-                                                               }
-                                                               if("link-type".equals(name)){
-                                                                       data.put(name, "roadmTail");
-                                                                       continue;
-                                                               }
-                                                               if("operational-status".equals(name)){
-                                                                       data.put(name, "available");
-                                                                       continue;
-                                                               }
-                                                               if(name.equals(identifier)) {
-                                                                       data.put(name, idValue);
-                                                                       continue;
-                                                               }
-
-                                                               String value;
-                                                               switch(type) {
-                                                               case "java.lang.Integer":
-                                                               case "java.lang.Long":
-                                                                       value = RandomStringUtils.random(6, false, true);
-                                                                       break;
-                                                               case "java.lang.Boolean":
-                                                                       value = "false";
-                                                                       break;
-                                                               default:
-                                                                       if(name.equals(identifier)) {
-                                                                               value = idValue;
-                                                                       } else {
-                                                                               value = RandomStringUtils.random(10, true, false);
-                                                                       }
-                                                               }
-                                                               data.put(name, value);
-                                                       }
-                                       }
-                               }
-                       }
-
-                       SvcLogicContext ctx = new SvcLogicContext();
-
-                       data.remove("resource-version");
-
-                       QueryStatus resp = null;
-
-                       //(String resource, boolean force, boolean localOnly, String key, Map<String, String> parms, String prefix,     SvcLogicContext ctx)
-                       resp = client.save(resource, false, false, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx);
-                       if(resp == QueryStatus.SUCCESS) {
-                               LOG.info(String.format("Save %s successfull", resource));
-                       } else {
-                               LOG.info(String.format("Save %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
-                       }
-               }
-               catch (Throwable e)
-               {
-                       LOG.error("Caught exception", e);
-                       fail("Caught exception");
-               }
-       }
-
-       public void test03AutoGeneratedQueryRequest(String resource, List<String> requestKeys) {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-
-               SvcLogicContext ctx = new SvcLogicContext();
-               try
-               {
-
-                       QueryStatus response = null;
-
-                       response = client.query(resource,  false, null, StringUtils.join(requestKeys, " AND "), "aaiTest", null, ctx);
-                       if(response == QueryStatus.SUCCESS) {
-                               LOG.info(String.format("Query %s successfull", resource));
-                               Set<String> tokens = ctx.getAttributeKeySet();
-                               Map<String, String> reponseData = new HashMap<String, String>();
-
-                               String responsePrefix = String.format("%s", "aaiTest");
-
-                               for(String token : tokens) {
-                                       if(token.startsWith(responsePrefix)){
-                                               reponseData.put(token, ctx.getAttribute(token));
-                                       } else {
-                                               LOG.info(String.format("%s = ", token, ctx.getAttribute(token)));
-                                       }
-                               }
-
-                               LOG.info("AAIResponse: " + response.toString());
-                               assertTrue("AAIRequest:"+resource, reponseData.size() > 0);
-                       } else {
-                               LOG.info(String.format("Query %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
-                               assert(false);
-                       }
-               }
-               catch (Throwable e)
-               {
-                       LOG.error("Caught exception", e);
-               }
-       }
-
-
-       public void test03AutoGeneratedDeleteRequest(String resource, List<String> requestKeys) {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-
-               try
-               {
-                       SvcLogicContext ctx = new SvcLogicContext();
-
-                       QueryStatus response = null;
-
-                       response = client.delete(resource, StringUtils.join(requestKeys, " AND "),  ctx);
-                       if(response == QueryStatus.SUCCESS) {
-                               LOG.info(String.format("Delete %s successfull", resource));
-                       } else {
-                               LOG.info(String.format("Delete %s failed due to : %s", resource, ctx.getAttribute("aaiDelete.error.message")));
-                       }
-               }
-               catch (Throwable e)
-               {
-                       LOG.error("Caught exception", e);
-                       fail("Caught exception");
-               }
-       }
-
-       public void testAutoGeneratedUpdateRequest(String resource, List<String> requestKeys, String identifier, String idValue) {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-
-               try
-               {
-                       Map<String, String> nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext());
-                       AAIRequest request = AAIRequest.createRequest(resource, nameValues);
-                       Class<AAIDatum> resourceClass = (Class<AAIDatum>) (request==null ? GenericVnf.class : request.getModelClass());
-
-                       Map<String, String> data = new HashMap<String, String>();
-
-                       boolean skipFirst = true;
-                       boolean breakLoop = false;
-                       for(Field field : resourceClass.getDeclaredFields()) {
-                               if(skipFirst){
-                                       skipFirst = false;
-                                       continue;
-                               }
-                               if(breakLoop){
-                                       break;
-                               }
-                               String type = field.getType().getName();
-                               if(type.startsWith("java.lang.")){
-                                       Annotation[] fieldAnnotations = field.getAnnotations();
-                                       for(int i = 0; i < fieldAnnotations.length; i++) {
-                                               Annotation a = fieldAnnotations[i];
-                                               if(a instanceof JsonProperty){
-                                                       JsonProperty pa = (JsonProperty)a;
-                                                       String name = pa.value();
-                                                       String value;
-                                                       switch(type) {
-                                                       case "java.lang.Integer":
-                                                       case "java.lang.Long":
-                                                               value = RandomStringUtils.random(6, false, true);
-                                                               break;
-                                                       case "java.lang.Boolean":
-                                                               value = "false";
-                                                               break;
-                                                       default:
-                                                               if(name.equals(identifier)) {
-                                                                       value = idValue;
-                                                               } else {
-                                                                       value = RandomStringUtils.random(10, true, false);
-                                                               }
-                                                       }
-                                                       data.put(name, value);
-                                                       breakLoop = true;
-                                               } else
-                                                       if(a instanceof javax.xml.bind.annotation.XmlElement) {
-                                                               XmlElement xe = (XmlElement)a;
-                                                               String name = xe.name();
-                                                               if("link-type".equals(name)){
-                                                                       data.put(name, "roadmTail");
-                                                                       continue;
-                                                               }
-                                                               if("operational-status".equals(name)){
-                                                                       data.put(name, "available");
-                                                                       continue;
-                                                               }
-                                                               String value;
-                                                               switch(type) {
-                                                               case "java.lang.Integer":
-                                                               case "java.lang.Long":
-                                                                       value = RandomStringUtils.random(6, false, true);
-                                                                       break;
-                                                               case "java.lang.Boolean":
-                                                                       value = "false";
-                                                                       break;
-                                                               default:
-                                                                       if(name.equals(identifier)) {
-                                                                               value = idValue;
-                                                                       } else {
-                                                                               value = RandomStringUtils.random(10, true, false);
-                                                                       }
-                                                               }
-                                                               data.put(name, value);
-                                                               breakLoop = true;
-                                                       }
-                                       }
-                               }
-                       }
-
-                       SvcLogicContext ctx = new SvcLogicContext();
-
-                       data.remove("resource-version");
-
-                       QueryStatus resp = null;
-
-                       //client.update("ipsec-configuration", "ipsec-configuration.ipsec-configuration-id = 'testConfigurationId01'", data, "aaiTest",  ctx);
-                       resp = client.update(resource, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx);
-                       if(resp == QueryStatus.SUCCESS) {
-                               LOG.info(String.format("Update %s successfull", resource));
-                       } else {
-                               LOG.info(String.format("Update %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
-                       }
-
-               }
-               catch (Throwable e)
-               {
-                       LOG.error("Caught exception", e);
-                       fail("Caught exception");
-               }
-       }
-
-       static ArrayList<Method> findSetters(Class<?> c) {
-          ArrayList<Method> list = new ArrayList<Method>();
-          Method[] methods = c.getDeclaredMethods();
-          for (Method method : methods)
-             if (isGetter(method))
-                list.add(method);
-          return list;
-       }
-
-
-       public static boolean isGetter(Method method) {
-          if (Modifier.isPublic(method.getModifiers()) &&
-             method.getParameterTypes().length == 0) {
-                if (method.getName().matches("^get[A-Z].*") &&
-                   !method.getReturnType().equals(void.class))
-                      return true;
-                if (method.getName().matches("^is[A-Z].*") &&
-                   method.getReturnType().equals(boolean.class))
-                      return true;
-          }
-          return false;
-       }
-
-       public static boolean isSetter(Method method) {
-          return Modifier.isPublic(method.getModifiers()) &&
-             method.getReturnType().equals(void.class) &&
-                method.getParameterTypes().length == 1 &&
-                   method.getName().matches("^set[A-Z].*");
-       }
-
-       private String processAssign(String identifier, String method, String postProcess) {
-               String value = null;
-               if("uuid".equals(method)) {
-                       value = UUID.randomUUID().toString();
-               }
-
-               if("cache".equals(postProcess)) {
-                       cache.put(identifier, value);
-               }
-
-               if("value".equals(method)) {
-                       cache.put(identifier, postProcess);
-                       value = postProcess;
-               }
-
-               String key = String.format("%s = '%s'", identifier, value);
-               return key;
-       }
-
-       private String processCached(String identifier, String method) {
-               String value = cache.get(identifier);
-
-               String key = String.format("%s = '%s'", identifier, value);
-               return key;
-       }
-
-       protected HashMap<String,String> keyToHashMap(String key,       SvcLogicContext ctx) {
-               if (key == null) {
-                       return (null);
-               }
-
-               LOG.debug("Converting key [" + key + "] to where clause");
-
-               if (key.startsWith("'") && key.endsWith("'")) {
-                       key = key.substring(1, key.length() - 1);
-
-                       LOG.debug("Stripped outer single quotes - key is now [" + key + "]");
-               }
-
-               String[] keyTerms = key.split("\\s+");
-
-               String term1 = null;
-               String op = null;
-               String term2 = null;
-               HashMap<String, String> results = new HashMap<String, String>();
-
-               for (int i = 0; i < keyTerms.length; i++) {
-                       if (term1 == null) {
-                               if ("and".equalsIgnoreCase(keyTerms[i])
-                                               || "or".equalsIgnoreCase(keyTerms[i])) {
-                                       // Skip over ADD/OR
-                               } else {
-                                       term1 = resolveTerm(keyTerms[i], ctx);
-                               }
-                       } else if (op == null) {
-                               if ("==".equals(keyTerms[i])) {
-                                       op = "=";
-                               } else {
-                                       op = keyTerms[i];
-                               }
-                       } else {
-                               term2 = resolveTerm(keyTerms[i], ctx);
-                               term2 = term2.trim().replace("'", "").replace("$", "").replace("'", "");
-                               results.put(term1,  term2);
-
-                               term1 = null;
-                               op = null;
-                               term2 = null;
-                       }
-               }
-
-               return (results);
-       }
-
-       private String resolveTerm(String term, SvcLogicContext ctx) {
-               if (term == null) {
-                       return (null);
-               }
-
-               LOG.debug("resolveTerm: term is " + term);
-
-               if (term.startsWith("$") && (ctx != null)) {
-                       // Resolve any index variables.
-
-                       return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'");
-               } else if (term.startsWith("'") || term.startsWith("\"")) {
-                       return (term);
-               } else {
-                       return (term.replaceAll("-", "_"));
-
-               }
-
-       }
-
-       private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) {
-
-               if (ctxVarName.indexOf('[') == -1) {
-                       // Ctx variable contains no arrays
-                       return (ctx.getAttribute(ctxVarName));
-               }
-
-               // Resolve any array references
-               StringBuffer sbuff = new StringBuffer();
-               String[] ctxVarParts = ctxVarName.split("\\[");
-               sbuff.append(ctxVarParts[0]);
-               for (int i = 1; i < ctxVarParts.length; i++) {
-                       if (ctxVarParts[i].startsWith("$")) {
-                               int endBracketLoc = ctxVarParts[i].indexOf("]");
-                               if (endBracketLoc == -1) {
-                                       // Missing end bracket ... give up parsing
-                                       LOG.warn("Variable reference " + ctxVarName
-                                                       + " seems to be missing a ']'");
-                                       return (ctx.getAttribute(ctxVarName));
-                               }
-
-                               String idxVarName = ctxVarParts[i].substring(1, endBracketLoc);
-                               String remainder = ctxVarParts[i].substring(endBracketLoc);
-
-                               sbuff.append("[");
-                               sbuff.append(ctx.getAttribute(idxVarName));
-                               sbuff.append(remainder);
-
-                       } else {
-                               // Index is not a variable reference
-                               sbuff.append("[");
-                               sbuff.append(ctxVarParts[i]);
-                       }
-               }
-
-               return (ctx.getAttribute(sbuff.toString()));
-       }
-
-//     @Test
-       public void test90QueryTenantRequest()
-       {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-
-               URL url;
-
-               try {
-                       url = client.requestVserverURLNodeQuery("bpsx0001vm001bps001");
-                       url = new URL("https://mtanjv9aaas03.aic.cip.att.com:8443/aai/v4/cloud-infrastructure/tenants/tenant/6b012c07bdf1427190ae58f794a86344/vservers/vserver/5acfe828-82e9-swgk092815-13-4d2c-85bb-9c2c1fafcce6");
-                       client.getTenantIdFromVserverUrl(url);
-               } catch (Exception e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-       }
-
-               @Test
-       public void R1702NamedQueryRequest()
-       {
-               LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
-               try
-               {
-                       SvcLogicContext ctx = new SvcLogicContext();
-                       URL resource = this.getClass().getResource("/json/nquery2.json");
-
-                       LOG.info("Resource is " + resource.getFile());
-                       File requestFile = new File(resource.getFile());
-                       if(!requestFile.exists()) {
-                               fail("Test file does not exist");
-                       }
-                   ObjectMapper mapper = AAIService.getObjectMapper();
-                   NamedQueryData request = mapper.readValue(requestFile, NamedQueryData.class);
-                   Map<String, Object> map = mapper.convertValue(request, Map.class);
-//                 AAIDeclartations.class.cast(client).writeMap(map, String.format("%s.%s", "aaiTmp", "inventory-response-items"), ctx);
-
-
-                       Map<String, String> data = new HashMap<String, String>();
-                       ctx.setAttribute("namedQueryData.instance-filters.instance-filter[0].l3-network.network-role", "example-network-role-val-432223");
-                       ctx.setAttribute("namedQueryData.instance-filters.instance-filter_length", "1");
-                       QueryStatus resp = client.query("named-query", false, null, "named-query-uuid = '4f448e43-339f-4c1c-85f6-896c444e25ca' AND prefix = 'namedQueryData' ", "zdzich", null, ctx);
-
-                       LOG.info("AAIResponse: " + resp.toString());
-               }
-               catch (Throwable e)
-               {
-                       assert(true);
-               }
-       }
-
-
-       static class MySchemaOutputResolver extends SchemaOutputResolver {
-
-           public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {
-               File file = new File(suggestedFileName);
-               StreamResult result = new StreamResult(file);
-               result.setSystemId(file.getAbsolutePath());
-               return result;
-           }
-
-       }
-
-       private static void listSubNodes(String parent, Document doc, Stack<String> stack, List<String> commands) throws Exception {
+    static {
+        System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "INFO");
+        System.setProperty(org.slf4j.impl.SimpleLogger.LOG_FILE_KEY, String.format("AutoGeneratedRegressionTest-%d.txt", System.currentTimeMillis()));
+    }
+    private static final Logger LOG = LoggerFactory.getLogger(AutoGeneratedRegressionTest.class);
+
+
+    protected static AAIClient client;
+
+    protected Map<String, String> cache = new HashMap<String, String>();
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        URL url = AAIService.class.getResource(AAIService.AAICLIENT_PROPERTIES);
+        client = new AAIService(url);
+        LOG.info("----------------------- aicAAIResourceTest.setUp -----------------------");
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        client = null;
+        LOG.info("----------------------- AAIResourceTest.tearDown -----------------------");
+    }
+
+
+    @Test
+    public void mainLoadTest ()
+    {
+        try
+        {
+            String currentDir = System.getProperty("user.dir");
+            File dir = new File(currentDir);
+            if(!dir.exists()) {
+                System.exit(1);
+            }
+            dir = new File(dir, "src/main/resources");
+            if(!dir.exists()) {
+                System.exit(1);
+            }
+            // parse the document
+            File file = new File(dir, "aai_schema_v11.xsd");
+            if(!file.exists()) {
+                assert(false);
+                return;
+            }
+
+            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+            Document doc = dBuilder.parse(file);
+
+            Stack<String> stack = new Stack<String>();
+            List<String> commands = new ArrayList<String>();
+            listSubNodes("network", doc, stack, commands);
+            listSubNodes("cloud-infrastructure", doc, stack, commands);
+            listSubNodes("service-design-and-creation", doc, stack, commands);
+            listSubNodes("license-management", doc, stack, commands);
+            listSubNodes("business", doc, stack, commands);
+
+            String[] requestDefinition = commands.toArray(new String[0]);
+            LOG.info("\n----------------------------");
+
+            executeTests(requestDefinition);
+        }
+        catch (Throwable e)
+        {
+            LOG.error("", e);
+        }
+    }
+
+    @Test
+    public void testFromFile() {
+        String filename = "testCommands.txt";
+        List<String> lines = new ArrayList<String>();
+        Scanner scanner = null;
+
+        try {
+            File testFile = new File(filename);
+            if(!testFile.exists())
+                return;
+            scanner = new Scanner(testFile);
+            while (scanner.hasNextLine()) {
+                lines.add(scanner.nextLine());
+            }
+        } catch (Exception exc) {
+
+        } finally {
+            if(scanner != null)
+                scanner.close();
+        }
+
+        String[] requestDefinition = lines.toArray(new String[0]);
+        executeTests(requestDefinition);
+    }
+
+
+    @Test
+    public void test01AutoGeneratedRequest() {
+
+        String[] requestDefinition = {
+                "save|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
+                "update|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
+                "query|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458",
+                "delete|generic-vnf|generic-vnf.vnf-id:assign:value:adb28ac0-a260-4b7d-9ce5-adf15733c458"
+        };
+
+        executeTests(requestDefinition);
+    }
+
+    public void executeTests(String[] requestDefinition) {
+
+        for(String line : requestDefinition){
+            LOG.info("Executing: " + line);
+
+            // parse request line resource | key structure
+            String[] segments = line.split("\\|");
+            String action = segments[0];
+            String resource = segments[1];
+            String[] tmpKeys = segments[2].split("&");
+            // String array keyStructure can be tmpKey.
+            // options    :assign:uuid:cache
+            //            :cached
+            //            :query:random
+
+
+            String localId = null;
+
+            List<String> keys = new ArrayList<String>();
+            String keyLine = null;
+
+            for(String instruction : tmpKeys) {
+                String[] parts = instruction.split(":");
+                String identifier = parts[0];
+                String method = parts[2];
+
+                if(identifier.startsWith(resource)) {
+                    localId = identifier;
+                } else if(identifier.startsWith("l-interface") && "l2-bridge-bgf".equals(resource)) {
+                    localId = identifier;
+                } else if(identifier.startsWith("l-interface") && "l2-bridge-sbg".equals(resource)) {
+                    localId = identifier;
+                } else if("nodes-query".equals(resource)) {
+                    localId = identifier;
+                }
+
+                switch(parts[1]) {
+                case "assign":
+                    String postProcesss = parts[3];
+                    keyLine = processAssign(identifier, method, postProcesss);
+                    if(keyLine != null && !keyLine.trim().isEmpty()) {
+                        keys.add(keyLine);
+                    }
+                    break;
+                case "cached":
+                    keyLine = processCached(identifier, method);
+                    if(keyLine != null && !keyLine.trim().isEmpty()) {
+                        keys.add(keyLine);
+                    }
+                    break;
+                }
+
+            }
+
+            List<String> x = Arrays.asList(localId.split("\\."));
+            switch(action){
+            case "save":
+                testAutoGeneratedSaveRequest(resource, keys, x.get(x.size() - 1), cache.get(localId));
+                break;
+            case "update":
+                testAutoGeneratedUpdateRequest(resource, keys, x.get(x.size() - 1), cache.get(localId));
+                break;
+
+            case "query":
+                test03AutoGeneratedQueryRequest(resource, keys);
+                break;
+            case "delete":
+                test03AutoGeneratedDeleteRequest(resource, keys);
+                break;
+            }
+        }
+
+        LOG.info("done");
+    }
+
+
+    public void testAutoGeneratedSaveRequest(String resource, List<String> requestKeys, String identifier, String idValue) {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+
+        try
+        {
+            Map<String, String> nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext());
+            AAIRequest request = AAIRequest.createRequest(resource, nameValues);
+            Class<AAIDatum> resourceClass = (Class<AAIDatum>) (request==null ? GenericVnf.class : request.getModelClass());
+
+            Map<String, String> data = new HashMap<String, String>();
+
+            for(Field field : resourceClass.getDeclaredFields()) {
+                String type = field.getType().getName();
+                switch(type){
+                case "bool":
+                case "boolean":
+                    type = Boolean.class.getName();
+                    break;
+                case "int":
+                    type = Integer.class.getName();
+                    break;
+                case "long":
+                    type = Long.class.getName();
+                    break;
+
+                }
+                if(type.startsWith("java.lang.")){
+                    Annotation[] fieldAnnotations = field.getAnnotations();
+                    for(int i = 0; i < fieldAnnotations.length; i++) {
+                        Annotation a = fieldAnnotations[i];
+                        if(a instanceof JsonProperty){
+                            JsonProperty pa = (JsonProperty)a;
+                            String name = pa.value();
+                            String value;
+                            switch(type) {
+                            case "java.lang.Integer":
+                            case "java.lang.Long":
+                                value = RandomStringUtils.random(6, false, true);
+                                break;
+                            case "java.lang.Boolean":
+                                value = "false";
+                                break;
+                            default:
+                                if(name.equals(identifier)) {
+                                    value = idValue;
+                                } else {
+                                    value = RandomStringUtils.random(10, true, false);
+                                }
+                            }
+                            data.put(name, value);
+                        } else
+                            if(a instanceof javax.xml.bind.annotation.XmlElement) {
+                                XmlElement xe = (XmlElement)a;
+                                String name = xe.name();
+                                if("model-version-id".equals(name)) {
+                                    continue;
+                                }
+                                if("model-invariant-id".equals(name)) {
+                                    continue;
+                                }
+                                if("link-type".equals(name)){
+                                    data.put(name, "roadmTail");
+                                    continue;
+                                }
+                                if("operational-status".equals(name)){
+                                    data.put(name, "available");
+                                    continue;
+                                }
+                                if(name.equals(identifier)) {
+                                    data.put(name, idValue);
+                                    continue;
+                                }
+
+                                String value;
+                                switch(type) {
+                                case "java.lang.Integer":
+                                case "java.lang.Long":
+                                    value = RandomStringUtils.random(6, false, true);
+                                    break;
+                                case "java.lang.Boolean":
+                                    value = "false";
+                                    break;
+                                default:
+                                    if(name.equals(identifier)) {
+                                        value = idValue;
+                                    } else {
+                                        value = RandomStringUtils.random(10, true, false);
+                                    }
+                                }
+                                data.put(name, value);
+                            }
+                    }
+                }
+            }
+
+            SvcLogicContext ctx = new SvcLogicContext();
+
+            data.remove("resource-version");
+
+            QueryStatus resp = null;
+
+            //(String resource, boolean force, boolean localOnly, String key, Map<String, String> parms, String prefix,    SvcLogicContext ctx)
+            resp = client.save(resource, false, false, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx);
+            if(resp == QueryStatus.SUCCESS) {
+                LOG.info(String.format("Save %s successfull", resource));
+            } else {
+                LOG.info(String.format("Save %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
+            }
+        }
+        catch (Throwable e)
+        {
+            LOG.error("Caught exception", e);
+            fail("Caught exception");
+        }
+    }
+
+    public void test03AutoGeneratedQueryRequest(String resource, List<String> requestKeys) {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+
+        SvcLogicContext ctx = new SvcLogicContext();
+        try
+        {
+
+            QueryStatus response = null;
+
+            response = client.query(resource,  false, null, StringUtils.join(requestKeys, " AND "), "aaiTest", null, ctx);
+            if(response == QueryStatus.SUCCESS) {
+                LOG.info(String.format("Query %s successfull", resource));
+                Set<String> tokens = ctx.getAttributeKeySet();
+                Map<String, String> reponseData = new HashMap<String, String>();
+
+                String responsePrefix = String.format("%s", "aaiTest");
+
+                for(String token : tokens) {
+                    if(token.startsWith(responsePrefix)){
+                        reponseData.put(token, ctx.getAttribute(token));
+                    } else {
+                        LOG.info(String.format("%s = ", token, ctx.getAttribute(token)));
+                    }
+                }
+
+                LOG.info("AAIResponse: " + response.toString());
+                assertTrue("AAIRequest:"+resource, reponseData.size() > 0);
+            } else {
+                LOG.info(String.format("Query %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
+                assert(false);
+            }
+        }
+        catch (Throwable e)
+        {
+            LOG.error("Caught exception", e);
+        }
+    }
+
+
+    public void test03AutoGeneratedDeleteRequest(String resource, List<String> requestKeys) {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+
+        try
+        {
+            SvcLogicContext ctx = new SvcLogicContext();
+
+            QueryStatus response = null;
+
+            response = client.delete(resource, StringUtils.join(requestKeys, " AND "),  ctx);
+            if(response == QueryStatus.SUCCESS) {
+                LOG.info(String.format("Delete %s successfull", resource));
+            } else {
+                LOG.info(String.format("Delete %s failed due to : %s", resource, ctx.getAttribute("aaiDelete.error.message")));
+            }
+        }
+        catch (Throwable e)
+        {
+            LOG.error("Caught exception", e);
+            fail("Caught exception");
+        }
+    }
+
+    public void testAutoGeneratedUpdateRequest(String resource, List<String> requestKeys, String identifier, String idValue) {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+
+        try
+        {
+            Map<String, String> nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext());
+            AAIRequest request = AAIRequest.createRequest(resource, nameValues);
+            Class<AAIDatum> resourceClass = (Class<AAIDatum>) (request==null ? GenericVnf.class : request.getModelClass());
+
+            Map<String, String> data = new HashMap<String, String>();
+
+            boolean skipFirst = true;
+            boolean breakLoop = false;
+            for(Field field : resourceClass.getDeclaredFields()) {
+                if(skipFirst){
+                    skipFirst = false;
+                    continue;
+                }
+                if(breakLoop){
+                    break;
+                }
+                String type = field.getType().getName();
+                if(type.startsWith("java.lang.")){
+                    Annotation[] fieldAnnotations = field.getAnnotations();
+                    for(int i = 0; i < fieldAnnotations.length; i++) {
+                        Annotation a = fieldAnnotations[i];
+                        if(a instanceof JsonProperty){
+                            JsonProperty pa = (JsonProperty)a;
+                            String name = pa.value();
+                            String value;
+                            switch(type) {
+                            case "java.lang.Integer":
+                            case "java.lang.Long":
+                                value = RandomStringUtils.random(6, false, true);
+                                break;
+                            case "java.lang.Boolean":
+                                value = "false";
+                                break;
+                            default:
+                                if(name.equals(identifier)) {
+                                    value = idValue;
+                                } else {
+                                    value = RandomStringUtils.random(10, true, false);
+                                }
+                            }
+                            data.put(name, value);
+                            breakLoop = true;
+                        } else
+                            if(a instanceof javax.xml.bind.annotation.XmlElement) {
+                                XmlElement xe = (XmlElement)a;
+                                String name = xe.name();
+                                if("link-type".equals(name)){
+                                    data.put(name, "roadmTail");
+                                    continue;
+                                }
+                                if("operational-status".equals(name)){
+                                    data.put(name, "available");
+                                    continue;
+                                }
+                                String value;
+                                switch(type) {
+                                case "java.lang.Integer":
+                                case "java.lang.Long":
+                                    value = RandomStringUtils.random(6, false, true);
+                                    break;
+                                case "java.lang.Boolean":
+                                    value = "false";
+                                    break;
+                                default:
+                                    if(name.equals(identifier)) {
+                                        value = idValue;
+                                    } else {
+                                        value = RandomStringUtils.random(10, true, false);
+                                    }
+                                }
+                                data.put(name, value);
+                                breakLoop = true;
+                            }
+                    }
+                }
+            }
+
+            SvcLogicContext ctx = new SvcLogicContext();
+
+            data.remove("resource-version");
+
+            QueryStatus resp = null;
+
+            //client.update("ipsec-configuration", "ipsec-configuration.ipsec-configuration-id = 'testConfigurationId01'", data, "aaiTest",  ctx);
+            resp = client.update(resource, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx);
+            if(resp == QueryStatus.SUCCESS) {
+                LOG.info(String.format("Update %s successfull", resource));
+            } else {
+                LOG.info(String.format("Update %s failed due to : %s", resource, ctx.getAttribute("aaidata.error.message")));
+            }
+
+        }
+        catch (Throwable e)
+        {
+            LOG.error("Caught exception", e);
+            fail("Caught exception");
+        }
+    }
+
+    static ArrayList<Method> findSetters(Class<?> c) {
+       ArrayList<Method> list = new ArrayList<Method>();
+       Method[] methods = c.getDeclaredMethods();
+       for (Method method : methods)
+          if (isGetter(method))
+             list.add(method);
+       return list;
+    }
+
+
+    public static boolean isGetter(Method method) {
+       if (Modifier.isPublic(method.getModifiers()) &&
+          method.getParameterTypes().length == 0) {
+             if (method.getName().matches("^get[A-Z].*") &&
+                !method.getReturnType().equals(void.class))
+                   return true;
+             if (method.getName().matches("^is[A-Z].*") &&
+                method.getReturnType().equals(boolean.class))
+                   return true;
+       }
+       return false;
+    }
+
+    public static boolean isSetter(Method method) {
+       return Modifier.isPublic(method.getModifiers()) &&
+          method.getReturnType().equals(void.class) &&
+             method.getParameterTypes().length == 1 &&
+                method.getName().matches("^set[A-Z].*");
+    }
+
+    private String processAssign(String identifier, String method, String postProcess) {
+        String value = null;
+        if("uuid".equals(method)) {
+            value = UUID.randomUUID().toString();
+        }
+
+        if("cache".equals(postProcess)) {
+            cache.put(identifier, value);
+        }
+
+        if("value".equals(method)) {
+            cache.put(identifier, postProcess);
+            value = postProcess;
+        }
+
+        String key = String.format("%s = '%s'", identifier, value);
+        return key;
+    }
+
+    private String processCached(String identifier, String method) {
+        String value = cache.get(identifier);
+
+        String key = String.format("%s = '%s'", identifier, value);
+        return key;
+    }
+
+    protected HashMap<String,String> keyToHashMap(String key,    SvcLogicContext ctx) {
+        if (key == null) {
+            return (null);
+        }
+
+        LOG.debug("Converting key [" + key + "] to where clause");
+
+        if (key.startsWith("'") && key.endsWith("'")) {
+            key = key.substring(1, key.length() - 1);
+
+            LOG.debug("Stripped outer single quotes - key is now [" + key + "]");
+        }
+
+        String[] keyTerms = key.split("\\s+");
+
+        String term1 = null;
+        String op = null;
+        String term2 = null;
+        HashMap<String, String> results = new HashMap<String, String>();
+
+        for (int i = 0; i < keyTerms.length; i++) {
+            if (term1 == null) {
+                if ("and".equalsIgnoreCase(keyTerms[i])
+                        || "or".equalsIgnoreCase(keyTerms[i])) {
+                    // Skip over ADD/OR
+                } else {
+                    term1 = resolveTerm(keyTerms[i], ctx);
+                }
+            } else if (op == null) {
+                if ("==".equals(keyTerms[i])) {
+                    op = "=";
+                } else {
+                    op = keyTerms[i];
+                }
+            } else {
+                term2 = resolveTerm(keyTerms[i], ctx);
+                term2 = term2.trim().replace("'", "").replace("$", "").replace("'", "");
+                results.put(term1,  term2);
+
+                term1 = null;
+                op = null;
+                term2 = null;
+            }
+        }
+
+        return (results);
+    }
+
+    private String resolveTerm(String term, SvcLogicContext ctx) {
+        if (term == null) {
+            return (null);
+        }
+
+        LOG.debug("resolveTerm: term is " + term);
+
+        if (term.startsWith("$") && (ctx != null)) {
+            // Resolve any index variables.
+
+            return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'");
+        } else if (term.startsWith("'") || term.startsWith("\"")) {
+            return (term);
+        } else {
+            return (term.replaceAll("-", "_"));
+
+        }
+
+    }
+
+    private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) {
+
+        if (ctxVarName.indexOf('[') == -1) {
+            // Ctx variable contains no arrays
+            return (ctx.getAttribute(ctxVarName));
+        }
+
+        // Resolve any array references
+        StringBuffer sbuff = new StringBuffer();
+        String[] ctxVarParts = ctxVarName.split("\\[");
+        sbuff.append(ctxVarParts[0]);
+        for (int i = 1; i < ctxVarParts.length; i++) {
+            if (ctxVarParts[i].startsWith("$")) {
+                int endBracketLoc = ctxVarParts[i].indexOf("]");
+                if (endBracketLoc == -1) {
+                    // Missing end bracket ... give up parsing
+                    LOG.warn("Variable reference " + ctxVarName
+                            + " seems to be missing a ']'");
+                    return (ctx.getAttribute(ctxVarName));
+                }
+
+                String idxVarName = ctxVarParts[i].substring(1, endBracketLoc);
+                String remainder = ctxVarParts[i].substring(endBracketLoc);
+
+                sbuff.append("[");
+                sbuff.append(ctx.getAttribute(idxVarName));
+                sbuff.append(remainder);
+
+            } else {
+                // Index is not a variable reference
+                sbuff.append("[");
+                sbuff.append(ctxVarParts[i]);
+            }
+        }
+
+        return (ctx.getAttribute(sbuff.toString()));
+    }
+
+//    @Test
+    public void test90QueryTenantRequest()
+    {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+
+        URL url;
+
+        try {
+            url = client.requestVserverURLNodeQuery("bpsx0001vm001bps001");
+            url = new URL("https://mtanjv9aaas03.aic.cip.att.com:8443/aai/v4/cloud-infrastructure/tenants/tenant/6b012c07bdf1427190ae58f794a86344/vservers/vserver/5acfe828-82e9-swgk092815-13-4d2c-85bb-9c2c1fafcce6");
+            client.getTenantIdFromVserverUrl(url);
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+        @Test
+    public void R1702NamedQueryRequest()
+    {
+        LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------");
+        try
+        {
+            SvcLogicContext ctx = new SvcLogicContext();
+            URL resource = this.getClass().getResource("/json/nquery2.json");
+
+            LOG.info("Resource is " + resource.getFile());
+            File requestFile = new File(resource.getFile());
+            if(!requestFile.exists()) {
+                fail("Test file does not exist");
+            }
+            ObjectMapper mapper = AAIService.getObjectMapper();
+            NamedQueryData request = mapper.readValue(requestFile, NamedQueryData.class);
+            Map<String, Object> map = mapper.convertValue(request, Map.class);
+
+            ctx.setAttribute("namedQueryData.instance-filters.instance-filter[0].l3-network.network-role", "example-network-role-val-432223");
+            ctx.setAttribute("namedQueryData.instance-filters.instance-filter_length", "1");
+            QueryStatus resp = client.query("named-query", false, null, "named-query-uuid = '4f448e43-339f-4c1c-85f6-896c444e25ca' AND prefix = 'namedQueryData' ", "zdzich", null, ctx);
+
+            LOG.info("AAIResponse: " + resp.toString());
+        }
+        catch (Throwable e)
+        {
+            assert(true);
+        }
+    }
+
+
+    static class MySchemaOutputResolver extends SchemaOutputResolver {
+
+        public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {
+            File file = new File(suggestedFileName);
+            StreamResult result = new StreamResult(file);
+            result.setSystemId(file.getAbsolutePath());
+            return result;
+        }
+
+    }
+
+    private static void listSubNodes(String parent, Document doc, Stack<String> stack, List<String> commands) throws Exception {
         XPathFactory xFactory = XPathFactory.newInstance();
         XPath xPath = xFactory.newXPath();
         String format = "/schema/element[@name='%s']/complexType/sequence/element[@ref]";
@@ -787,157 +782,157 @@ public class AutoGeneratedRegressionTest {
 
             Node node = nl.item(index);
 
-               if(!(node instanceof Element))
-                       continue;
-
-               String classAlias = null;
-
-               if(node.hasAttributes())
-               {
-                       String nm = ((Element)node).getAttribute("ref");
-                       if(nm != null && !nm.isEmpty()) {
-                               String[] split = nm.split(":");
-                               classAlias = split[split.length - 1];
-                               if("relationship-list".equals(classAlias))
-                                       continue;
-                               if("metadata".equals(classAlias))
-                                       continue;
-                               if("classes-of-service".equals(classAlias)) {
-                                       classAlias = "class-of-service";
-                               } else if("l3-interface-ipv4-address-list".equals(classAlias)) {
-                                       ;
-                               } else if("l3-interface-ipv6-address-list".equals(classAlias)) {
-                                       ;
-                               } else if("cvlan-tags".equals(classAlias)) {
-                                       classAlias = "cvlan-tag-entry";
-                               } else if("network-policies".equals(classAlias)) {
-                                       classAlias = "network-policy";
-                               } else if("complexes".equals(classAlias)) {
-                                       classAlias = "complex";
-                               } else if("dvs-switches".equals(classAlias)) {
-                                       classAlias = "dvs-switch";
-                               } else if("service-capabilities".equals(classAlias)) {
-                                       classAlias = "service-capability";
-                               } else {
-                                       classAlias = classAlias.substring(0, classAlias.length() -1);
-                               }
-                                       AAIRequest request = AAIRequest.createRequest(classAlias, new HashMap<String, String>());
-                                       if(request != null) {
-                                               Class<?> clazz = request.getModelClass();
-                                               Field[] fieldz = clazz.getDeclaredFields();
-                                               Field field = fieldz[0];
-                                               String fieldName = field.getName();
-                                               XmlElement annotation = field.getAnnotation(XmlElement.class);
-
-                                               Map<String, Object> map = AnnotationUtils.getAnnotationAttributes(annotation);
-                                               String id = (String)map.get("name");
-                                               if("##default".equals(id)) {
-                                                       id = fieldName;
-                                               }
-
-                                               if("cloud-region".equals(classAlias)) {
-                                                       String keystring = "cloud-region.cloud-owner:assign:value:att-aic&cloud-region.cloud-region-id:assign:value:AAIAIC25";
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else if("entitlement".equals(classAlias)) {
-                                                       String keystring = "entitlement.group-uuid:assign:value:"+UUID.randomUUID()+"&entitlement.resource-uuid:assign:value:"+UUID.randomUUID();
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else if("license".equals(classAlias)) {
-                                                       String keystring = "license.group-uuid:assign:value:"+UUID.randomUUID()+"&license.resource-uuid:assign:value:"+UUID.randomUUID();
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else if("route-target".equals(classAlias)) {
-                                                       String keystring = "route-target.global-route-target:assign:value:"+UUID.randomUUID()+"&route-target.route-target-role:assign:value:"+UUID.randomUUID();
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else if("service-capability".equals(classAlias)) {
-                                                       String keystring = "service-capability.service-type:assign:value:"+UUID.randomUUID()+"&service-capability.vnf-type:assign:value:"+UUID.randomUUID();
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else if("ctag-pool".equals(classAlias)) {
-                                                       String keystring = "ctag-pool.target-pe:assign:value:"+UUID.randomUUID()+"&ctag-pool.availability-zone-name:assign:value:"+UUID.randomUUID();
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-                                                       listSubNodes(classAlias, doc, stack, commands);
-                                                       stack.pop();
-                                               } else {
-                                                       String keystring = String.format("%s.%s:assign:value:%s", classAlias, id, UUID.randomUUID());
-                                                       stack.push(keystring);
-                                                       String[] array = stack.toArray(new String[0]);
-                                                       String key = StringUtils.join(array, "&");
-
-                                                       String save = String.format("save|%s|%s", classAlias, key);
-                                                       commands.add(save);
-
-                                                       String query = String.format("query|%s|%s", classAlias, key);
-                                                       commands.add(query);
-
-                                                       String update = String.format("update|%s|%s", classAlias, key);
-                                                       commands.add(update);
-
-                                                       if(!parent.equals(classAlias) && !containsCircular(classAlias, id, stack)) {
-                                                               listSubNodes(classAlias, doc, stack, commands);
-                                                       }
-                                                       String delete = String.format("delete|%s|%s", classAlias, key);
-                                                       commands.add(delete);
-                                                       stack.pop();
-                                               }
-                                       }
-                       }
-               }
+            if(!(node instanceof Element))
+                continue;
+
+            String classAlias = null;
+
+            if(node.hasAttributes())
+            {
+                String nm = ((Element)node).getAttribute("ref");
+                if(nm != null && !nm.isEmpty()) {
+                    String[] split = nm.split(":");
+                    classAlias = split[split.length - 1];
+                    if("relationship-list".equals(classAlias))
+                        continue;
+                    if("metadata".equals(classAlias))
+                        continue;
+                    if("classes-of-service".equals(classAlias)) {
+                        classAlias = "class-of-service";
+                    } else if("l3-interface-ipv4-address-list".equals(classAlias)) {
+                        ;
+                    } else if("l3-interface-ipv6-address-list".equals(classAlias)) {
+                        ;
+                    } else if("cvlan-tags".equals(classAlias)) {
+                        classAlias = "cvlan-tag-entry";
+                    } else if("network-policies".equals(classAlias)) {
+                        classAlias = "network-policy";
+                    } else if("complexes".equals(classAlias)) {
+                        classAlias = "complex";
+                    } else if("dvs-switches".equals(classAlias)) {
+                        classAlias = "dvs-switch";
+                    } else if("service-capabilities".equals(classAlias)) {
+                        classAlias = "service-capability";
+                    } else {
+                        classAlias = classAlias.substring(0, classAlias.length() -1);
+                    }
+                    AAIRequest request = AAIRequest.createRequest(classAlias, new HashMap<String, String>());
+                    if(request != null) {
+                        Class<?> clazz = request.getModelClass();
+                        Field[] fieldz = clazz.getDeclaredFields();
+                        Field field = fieldz[0];
+                        String fieldName = field.getName();
+                        XmlElement annotation = field.getAnnotation(XmlElement.class);
+
+                        Map<String, Object> map = AnnotationUtils.getAnnotationAttributes(annotation);
+                        String id = (String)map.get("name");
+                        if("##default".equals(id)) {
+                            id = fieldName;
+                        }
+
+                        if("cloud-region".equals(classAlias)) {
+                            String keystring = "cloud-region.cloud-owner:assign:value:att-aic&cloud-region.cloud-region-id:assign:value:AAIAIC25";
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else if("entitlement".equals(classAlias)) {
+                            String keystring = "entitlement.group-uuid:assign:value:"+UUID.randomUUID()+"&entitlement.resource-uuid:assign:value:"+UUID.randomUUID();
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else if("license".equals(classAlias)) {
+                            String keystring = "license.group-uuid:assign:value:"+UUID.randomUUID()+"&license.resource-uuid:assign:value:"+UUID.randomUUID();
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else if("route-target".equals(classAlias)) {
+                            String keystring = "route-target.global-route-target:assign:value:"+UUID.randomUUID()+"&route-target.route-target-role:assign:value:"+UUID.randomUUID();
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else if("service-capability".equals(classAlias)) {
+                            String keystring = "service-capability.service-type:assign:value:"+UUID.randomUUID()+"&service-capability.vnf-type:assign:value:"+UUID.randomUUID();
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else if("ctag-pool".equals(classAlias)) {
+                            String keystring = "ctag-pool.target-pe:assign:value:"+UUID.randomUUID()+"&ctag-pool.availability-zone-name:assign:value:"+UUID.randomUUID();
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+                            listSubNodes(classAlias, doc, stack, commands);
+                            stack.pop();
+                        } else {
+                            String keystring = String.format("%s.%s:assign:value:%s", classAlias, id, UUID.randomUUID());
+                            stack.push(keystring);
+                            String[] array = stack.toArray(new String[0]);
+                            String key = StringUtils.join(array, "&");
+
+                            String save = String.format("save|%s|%s", classAlias, key);
+                            commands.add(save);
+
+                            String query = String.format("query|%s|%s", classAlias, key);
+                            commands.add(query);
+
+                            String update = String.format("update|%s|%s", classAlias, key);
+                            commands.add(update);
+
+                            if(!parent.equals(classAlias) && !containsCircular(classAlias, id, stack)) {
+                                listSubNodes(classAlias, doc, stack, commands);
+                            }
+                            String delete = String.format("delete|%s|%s", classAlias, key);
+                            commands.add(delete);
+                            stack.pop();
+                        }
+                    }
+                }
+            }
         }
-       }
+    }
 
-       public static boolean containsCircular(String classAlias, String id, Stack<String> stack) {
-               String keystring = String.format("%s.%s", classAlias, id);
+    public static boolean containsCircular(String classAlias, String id, Stack<String> stack) {
+        String keystring = String.format("%s.%s", classAlias, id);
 
-               Stack<String> localStack = new Stack<String>();
-               localStack.addAll(stack);
+        Stack<String> localStack = new Stack<String>();
+        localStack.addAll(stack);
 
-               localStack.pop();
+        localStack.pop();
 
-               while(!localStack.isEmpty()) {
-                       String instruction = localStack.pop();
-                       if(instruction.contains(keystring)) {
-                               return true;
-                       }
-               }
+        while(!localStack.isEmpty()) {
+            String instruction = localStack.pop();
+            if(instruction.contains(keystring)) {
+                return true;
+            }
+        }
 
-               return false;
-       }
+        return false;
+    }
 }
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RequestPathTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RequestPathTest.java
new file mode 100755 (executable)
index 0000000..5ee35c6
--- /dev/null
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 - 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.ccsdk.sli.adaptors.aai;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class RequestPathTest {
+
+    private static final Logger LOG = LoggerFactory.getLogger(RequestPathTest.class);
+
+    protected static AAIClient client;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        URL url = AAIService.class.getResource(AAIService.AAICLIENT_PROPERTIES);
+        client = new AAIService(url);
+        LOG.info("\nTaicAAIResourceTest.setUp\n");
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        client = null;
+        LOG.info("----------------------- AAIResourceTest.tearDown -----------------------");
+    }
+
+    @Test
+    public void getRequestUrl() {
+        try {
+            Map<String, String> nameValues = new HashMap<String, String> ();
+            nameValues.put("generic-vnf.vnf-id","AABBCCDDEEFFGG0123");
+
+            AAIRequest request = AAIRequest.createRequest("service-instances", nameValues);
+            request.addRequestProperty("generic-vnf.vnf-id","AABBCCDDEEFFGG0123");
+
+            URL url = request.getRequestUrl("GET", null);
+            assertNotNull(url);
+            url.getPath();
+            LOG.info("Received response");
+        } catch(Exception exc) {
+            LOG.info("Caught exception", exc);
+        }
+    }
+}