Allow filtering by reserved properties 55/29555/1
authorDaniel Silverthorn <daniel.silverthorn@amdocs.com>
Mon, 29 Jan 2018 21:44:38 +0000 (16:44 -0500)
committerDaniel Silverthorn <daniel.silverthorn@amdocs.com>
Mon, 29 Jan 2018 21:48:10 +0000 (16:48 -0500)
Change-Id: Ie43de57b63651fccb13147c9086276f0867a828c
Issue-ID: AAI-702
Signed-off-by: Daniel Silverthorn <daniel.silverthorn@amdocs.com>
src/main/java/org/onap/crud/service/CrudRestService.java
src/main/java/org/onap/schema/OxmModelValidator.java

index 2068709..895b459 100644 (file)
@@ -133,9 +133,6 @@ public class CrudRestService {
         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()) {
-          filter.put(e.getKey(), e.getValue().get(0));
-        }
 
         for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
           if (!e.getKey().equals(propertiesKey)) {
index 6260f83..ae3e18b 100644 (file)
@@ -87,12 +87,18 @@ public class OxmModelValidator {
     }
     final DynamicType modelObjectType = jaxbContext.getDynamicType(
         CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, type)));
+    final DynamicType reservedObjectType = jaxbContext.getDynamicType("ReservedPropNames");
 
     for (String key : filter.keySet()) {
       String keyJavaName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, key);
-      if (modelObjectType.getDescriptor().getMappingForAttributeName(keyJavaName) != null) {
+      DatabaseMapping mapping = modelObjectType.getDescriptor().getMappingForAttributeName(keyJavaName);
+
+      // Try both the model for the specified type and the reserved properties for our key
+      if (mapping == null) {
+        mapping = reservedObjectType.getDescriptor().getMappingForAttributeName(keyJavaName);
+      }
+      if (mapping != null) {
         try {
-          DatabaseMapping mapping = modelObjectType.getDescriptor().getMappingForAttributeName(keyJavaName);
           Object value = CrudServiceUtil.validateFieldType(filter.get(key), mapping.getField().getType());
           result.put(key, value);
         } catch (Exception ex) {