Adding "_reserved_" properties in the query params
[aai/gizmo.git] / src / main / java / org / onap / crud / service / CrudRestService.java
index 69f2186..5539374 100644 (file)
@@ -1,16 +1,15 @@
 /**
  * ============LICENSE_START=======================================================
- * Gizmo
+ * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property.
- * Copyright © 2017 Amdocs
- * All rights reserved.
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
  * ================================================================================
  * 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
+ *       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,
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 package org.onap.crud.service;
 
-import com.google.gson.JsonElement;
-
-import org.apache.cxf.jaxrs.ext.PATCH;
-import org.onap.aai.cl.api.Logger;
-import org.onap.aai.cl.eelf.LoggerFactory;
-import org.onap.aaiauth.auth.Auth;
-import org.onap.crud.exception.CrudException;
-import org.onap.crud.logging.CrudServiceMsgs;
-import org.onap.crud.logging.LoggingUtil;
-import org.onap.crud.util.CrudProperties;
-import org.onap.crud.util.CrudServiceConstants;
-import org.onap.crud.util.CrudServiceUtil;
-import org.slf4j.MDC;
-
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -60,7 +43,20 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.UriInfo;
+import org.apache.cxf.jaxrs.ext.PATCH;
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
+import org.onap.aaiauth.auth.Auth;
+import org.onap.crud.exception.CrudException;
+import org.onap.crud.logging.CrudServiceMsgs;
+import org.onap.crud.logging.LoggingUtil;
+import org.onap.crud.util.CrudProperties;
+import org.onap.crud.util.CrudServiceConstants;
+import org.onap.crud.util.CrudServiceUtil;
+import org.slf4j.MDC;
+import com.google.gson.JsonElement;
 
+@Path("/services/inventory")
 public class CrudRestService {
 
   private AbstractGraphDataService graphDataService;
@@ -76,6 +72,12 @@ public class CrudRestService {
     this.auth = new Auth(CrudServiceConstants.CRD_AUTH_FILE);
   }
 
+  // For unit testing
+  public CrudRestService(AbstractGraphDataService graphDataService, Auth auth) throws Exception {
+    this.graphDataService = graphDataService;
+    this.auth = auth;
+  }
+
   public enum Action {
     POST, GET, PUT, DELETE, PATCH
   }
@@ -96,10 +98,7 @@ public class CrudRestService {
     logger.debug("Incoming request..." + content);
     Response response = null;
 
-    Map<String, String> params = new HashMap<String, String>();
-    for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
-        params.put(e.getKey(), e.getValue().get(0));
-    }
+    Map<String, String> params = addParams ( uriInfo, false, type, version );
 
     try {
       if (validateRequest(req, uri, content, Action.GET, CrudServiceConstants.CRD_AUTH_POLICY_NAME, headers)) {
@@ -134,14 +133,7 @@ public class CrudRestService {
     try {
       if (validateRequest(req, uri, content, Action.GET, CrudServiceConstants.CRD_AUTH_POLICY_NAME, headers)) {
         String propertiesKey = CrudProperties.get(CrudServiceConstants.CRD_COLLECTION_PROPERTIES_KEY);
-
-        Map<String, String> filter = new HashMap<String, String>();
-
-        for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
-          if (!e.getKey().equals(propertiesKey)) {
-            filter.put(e.getKey(), e.getValue().get(0));
-          }
-        }
+        Map<String, String> filter = addParams ( uriInfo, true, type, version );
 
         HashSet<String> properties;
         if (uriInfo.getQueryParameters().containsKey(propertiesKey)) {
@@ -178,10 +170,7 @@ public class CrudRestService {
     logger.debug("Incoming request..." + content);
     Response response = null;
 
-    Map<String, String> params = new HashMap<String, String>();
-    for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
-        params.put(e.getKey(), e.getValue().get(0));
-    }
+    Map<String, String> params = addParams ( uriInfo, false, type, version );
 
     try {
       if (validateRequest(req, uri, content, Action.GET, CrudServiceConstants.CRD_AUTH_POLICY_NAME, headers)) {
@@ -213,12 +202,7 @@ public class CrudRestService {
 
     logger.debug("Incoming request..." + content);
     Response response = null;
-
-
-    Map<String, String> filter = new HashMap<String, String>();
-    for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
-      filter.put(e.getKey(), e.getValue().get(0));
-    }
+    Map<String, String> filter = addParams ( uriInfo, true, type, version );
 
     try {
       if (validateRequest(req, uri, content, Action.GET, CrudServiceConstants.CRD_AUTH_POLICY_NAME, headers)) {
@@ -826,4 +810,23 @@ public class CrudRestService {
     // uses our transaction id.
     MDC.clear();
   }
+
+  private Map<String, String> addParams ( UriInfo info, boolean filter, String type, String version ) {
+    String propertiesKey = CrudProperties.get ( CrudServiceConstants.CRD_COLLECTION_PROPERTIES_KEY );
+    Map<String, String> params = new HashMap<String, String> ();
+    params.put ( CrudServiceConstants.CRD_RESERVED_VERSION, version );
+    params.put ( CrudServiceConstants.CRD_RESERVED_NODE_TYPE, type );
+    if (filter) {
+      for (Map.Entry<String, List<String>> e : info.getQueryParameters ().entrySet ()) {
+        if (!e.getKey ().equals ( propertiesKey )) {
+          params.put ( e.getKey (), e.getValue ().get ( 0 ) );
+        }
+      }
+    } else {
+      for (Map.Entry<String, List<String>> e : info.getQueryParameters ().entrySet ()) {
+        params.put ( e.getKey (), e.getValue ().get ( 0 ) );
+      }
+    }
+    return params;
+  }
 }