aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java')
-rw-r--r--src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java
index 67899ac..3a1b974 100644
--- a/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java
+++ b/src/main/java/org/onap/pomba/contextbuilder/networkdiscovery/service/rs/RestServiceImpl.java
@@ -18,6 +18,8 @@
package org.onap.pomba.contextbuilder.networkdiscovery.service.rs;
+import com.google.gson.ExclusionStrategy;
+import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -28,6 +30,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.onap.pomba.common.datatypes.ModelContext;
+import org.onap.pomba.common.datatypes.VFModule;
import org.onap.pomba.contextbuilder.networkdiscovery.exception.DiscoveryException;
import org.onap.pomba.contextbuilder.networkdiscovery.exception.ErrorMessage;
import org.onap.pomba.contextbuilder.networkdiscovery.service.SpringService;
@@ -46,6 +49,27 @@ public class RestServiceImpl implements RestService {
@Autowired
private SpringService service;
+ /**
+ * Certain attributes in the common model do not apply (are not available) from network discovery.
+ * This exclusion strategy will make sure that any defaulted attributes that are not available/not valid are
+ * excluded from the json response.
+ *
+ * For now, there a two known attributes that need to be excluded from the VFModule:
+ * - minInstances (because it's an integer that defaults to zero)
+ * - maxInstances (because it's an integer that defaults to zero)
+ */
+ public class ContextBuilderExclusionStrategy implements ExclusionStrategy {
+
+ public boolean shouldSkipClass(Class<?> arg0) {
+ return false;
+ }
+
+ public boolean shouldSkipField(FieldAttributes f) {
+ return (f.getDeclaringClass() == VFModule.class && f.getName().equals("minInstances"))
+ || (f.getDeclaringClass() == VFModule.class && f.getName().equals("maxInstances"));
+ }
+ }
+
@Override
public Response getContext(HttpServletRequest req, String authorization, String partnerName, String requestId,
String fromAppId, String transactionId, String serviceInstanceId, String modelVersionId,
@@ -79,7 +103,9 @@ public class RestServiceImpl implements RestService {
// Return empty JSON
return Response.ok().entity(EMPTY_JSON_OBJECT).build();
} else {
- Gson gson = new GsonBuilder().create();
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ gsonBuilder.setExclusionStrategies(new ContextBuilderExclusionStrategy());
+ Gson gson = gsonBuilder.create();
return Response.ok().entity(gson.toJson(sdContext)).build();
}
} catch (DiscoveryException x) {
@@ -89,7 +115,7 @@ public class RestServiceImpl implements RestService {
} catch (Exception x) {
log.error(ErrorMessage.CONTEXT_BUILDER_FAILED, x);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(x.getMessage()).build();
-
+
} finally {
MDC.clear();
}