diff --git a/cdi-core/src/main/java/com/linkedin/cdi/filter/JsonSchemaBasedFilter.java b/cdi-core/src/main/java/com/linkedin/cdi/filter/JsonSchemaBasedFilter.java index 85a9031..29da1cd 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/filter/JsonSchemaBasedFilter.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/filter/JsonSchemaBasedFilter.java @@ -45,6 +45,12 @@ private JsonElement filter(JsonIntermediateSchema.JisDataType dataType, JsonElem return filter(dataType.getChildRecord(), input.getAsJsonObject()); } else if (dataType.getType() == JsonElementTypes.ARRAY) { return filter(dataType.getItemType(), input.getAsJsonArray()); + } else if (dataType.getType() == JsonElementTypes.MAP) { + JsonObject output = new JsonObject(); + for (Map.Entry entry: input.getAsJsonObject().entrySet()) { + output.add(entry.getKey(), filter(dataType.getItemType().getChildRecord(), entry.getValue().getAsJsonObject())); + } + return output; } return null; } diff --git a/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java b/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java index 09bc91a..66c2a8e 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java @@ -231,6 +231,14 @@ public void setSymbols(JsonArray symbols) { // an Enum has a list of symbols this.setSymbols(dataTypeDefinition.get(KEY_WORD_SYMBOLS).getAsJsonArray()); break; + case MAP: + JsonElement valuesElement = dataTypeDefinition.get(KEY_WORD_VALUES); + if(valuesElement.isJsonPrimitive()) { + this.setItemType(new JisDataType(valuesElement.getAsString())); + } else { + this.setItemType(new JisDataType(valuesElement.getAsJsonObject().get(KEY_WORD_DATA_TYPE).getAsJsonObject())); + } + break; case UNION: // a Union has 2 or more different types // TODO diff --git a/version.properties b/version.properties index 66f852b..fe121f4 100644 --- a/version.properties +++ b/version.properties @@ -1 +1 @@ -version=0.2.117 \ No newline at end of file +version=0.2.118 \ No newline at end of file