From 9ce8804282d15ee071f21c9ceb2ba3686c8f725c Mon Sep 17 00:00:00 2001 From: Anton Mokhovikov Date: Fri, 12 Jun 2020 10:40:15 -0700 Subject: [PATCH 1/3] added generic type for multiple type support --- python/rpdk/java/resolver.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/rpdk/java/resolver.py b/python/rpdk/java/resolver.py index 65f8b3c9..4e06bcbd 100644 --- a/python/rpdk/java/resolver.py +++ b/python/rpdk/java/resolver.py @@ -1,10 +1,11 @@ -from rpdk.core.jsonutils.resolver import UNDEFINED, ContainerType +from rpdk.core.jsonutils.resolver import MULTIPLE, UNDEFINED, ContainerType PRIMITIVE_TYPES = { "string": "String", "integer": "Integer", "boolean": "Boolean", "number": "Double", + MULTIPLE: "Object", UNDEFINED: "Object", } From ce84b5052e9430d8c178331135d3fb9b22db2162 Mon Sep 17 00:00:00 2001 From: Anton Mokhovikov Date: Fri, 12 Jun 2020 19:51:49 -0700 Subject: [PATCH 2/3] added MULTIPLE container type --- python/rpdk/java/resolver.py | 8 +++++++- tests/test_resolver.py | 12 +++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/python/rpdk/java/resolver.py b/python/rpdk/java/resolver.py index 4e06bcbd..378f1c63 100644 --- a/python/rpdk/java/resolver.py +++ b/python/rpdk/java/resolver.py @@ -5,10 +5,13 @@ "integer": "Integer", "boolean": "Boolean", "number": "Double", - MULTIPLE: "Object", UNDEFINED: "Object", } +MULTIPLE_TYPES = { + MULTIPLE: "Object", +} + def translate_type(resolved_type): if resolved_type.container == ContainerType.MODEL: @@ -16,6 +19,9 @@ def translate_type(resolved_type): if resolved_type.container == ContainerType.PRIMITIVE: return PRIMITIVE_TYPES[resolved_type.type] + if resolved_type.container == ContainerType.MULTIPLE: + return MULTIPLE_TYPES[resolved_type.type] + item_type = translate_type(resolved_type.type) if resolved_type.container == ContainerType.DICT: diff --git a/tests/test_resolver.py b/tests/test_resolver.py index 84d68727..d3369d97 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -1,12 +1,17 @@ import pytest from rpdk.core.jsonutils.resolver import ContainerType, ResolvedType -from rpdk.java.resolver import PRIMITIVE_TYPES, translate_type +from rpdk.java.resolver import MULTIPLE_TYPES, PRIMITIVE_TYPES, translate_type RESOLVED_TYPES = [ (ResolvedType(ContainerType.PRIMITIVE, item_type), native_type) for item_type, native_type in PRIMITIVE_TYPES.items() ] +RESOLVED_MULTIPLE_TYPES = [ + (ResolvedType(ContainerType.MULTIPLE, item_type), native_type) + for item_type, native_type in MULTIPLE_TYPES.items() +] + def test_translate_type_model_passthrough(): item_type = object() @@ -25,6 +30,11 @@ def test_translate_type_dict(resolved_type, native_type): assert traslated == f"Map" +@pytest.mark.parametrize("resolved_type,native_type", RESOLVED_MULTIPLE_TYPES) +def test_translate_type_multiple(resolved_type, native_type): + assert translate_type(resolved_type) == native_type + + @pytest.mark.parametrize("resolved_type,native_type", RESOLVED_TYPES) def test_translate_type_list(resolved_type, native_type): traslated = translate_type(ResolvedType(ContainerType.LIST, resolved_type)) From dcb3456764b411f8a883a2a8ada3d1d7c122e823 Mon Sep 17 00:00:00 2001 From: Anton Mokhovikov Date: Tue, 16 Jun 2020 14:15:03 -0700 Subject: [PATCH 3/3] simplified translate type method --- python/rpdk/java/resolver.py | 8 ++------ tests/test_resolver.py | 14 ++++---------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/python/rpdk/java/resolver.py b/python/rpdk/java/resolver.py index 378f1c63..e29faf0c 100644 --- a/python/rpdk/java/resolver.py +++ b/python/rpdk/java/resolver.py @@ -1,4 +1,4 @@ -from rpdk.core.jsonutils.resolver import MULTIPLE, UNDEFINED, ContainerType +from rpdk.core.jsonutils.resolver import UNDEFINED, ContainerType PRIMITIVE_TYPES = { "string": "String", @@ -8,10 +8,6 @@ UNDEFINED: "Object", } -MULTIPLE_TYPES = { - MULTIPLE: "Object", -} - def translate_type(resolved_type): if resolved_type.container == ContainerType.MODEL: @@ -20,7 +16,7 @@ def translate_type(resolved_type): return PRIMITIVE_TYPES[resolved_type.type] if resolved_type.container == ContainerType.MULTIPLE: - return MULTIPLE_TYPES[resolved_type.type] + return "Object" item_type = translate_type(resolved_type.type) diff --git a/tests/test_resolver.py b/tests/test_resolver.py index d3369d97..98f95668 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -1,17 +1,12 @@ import pytest -from rpdk.core.jsonutils.resolver import ContainerType, ResolvedType -from rpdk.java.resolver import MULTIPLE_TYPES, PRIMITIVE_TYPES, translate_type +from rpdk.core.jsonutils.resolver import MULTIPLE, ContainerType, ResolvedType +from rpdk.java.resolver import PRIMITIVE_TYPES, translate_type RESOLVED_TYPES = [ (ResolvedType(ContainerType.PRIMITIVE, item_type), native_type) for item_type, native_type in PRIMITIVE_TYPES.items() ] -RESOLVED_MULTIPLE_TYPES = [ - (ResolvedType(ContainerType.MULTIPLE, item_type), native_type) - for item_type, native_type in MULTIPLE_TYPES.items() -] - def test_translate_type_model_passthrough(): item_type = object() @@ -30,9 +25,8 @@ def test_translate_type_dict(resolved_type, native_type): assert traslated == f"Map" -@pytest.mark.parametrize("resolved_type,native_type", RESOLVED_MULTIPLE_TYPES) -def test_translate_type_multiple(resolved_type, native_type): - assert translate_type(resolved_type) == native_type +def test_translate_type_multiple(): + assert translate_type(ResolvedType(ContainerType.MULTIPLE, MULTIPLE)) == "Object" @pytest.mark.parametrize("resolved_type,native_type", RESOLVED_TYPES)