METAMODEL-1147: Fixed tests and use of Jackson ObjectMapper from codegen Project: http://git-wip-us.apache.org/repos/asf/metamodel-membrane/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel-membrane/commit/dfdad119 Tree: http://git-wip-us.apache.org/repos/asf/metamodel-membrane/tree/dfdad119 Diff: http://git-wip-us.apache.org/repos/asf/metamodel-membrane/diff/dfdad119
Branch: refs/heads/master Commit: dfdad119d3d4af0fecb0d587f710f3a253796cd9 Parents: 609cc85 Author: Kasper Sørensen <i.am.kasper.soren...@gmail.com> Authored: Mon Jul 31 22:20:11 2017 -0700 Committer: Kasper Sørensen <i.am.kasper.soren...@gmail.com> Committed: Mon Jul 31 22:20:11 2017 -0700 ---------------------------------------------------------------------- .../membrane/app/config/JacksonConfig.java | 18 +++++++++ .../resources/context/dispatcher-servlet.xml | 6 ++- core/src/main/resources/swagger.yaml | 2 + .../TenantInteractionScenarioTest.java | 40 +++++++++++--------- swagger-codegen/pom.xml | 3 +- 5 files changed, 49 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel-membrane/blob/dfdad119/core/src/main/java/org/apache/metamodel/membrane/app/config/JacksonConfig.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/membrane/app/config/JacksonConfig.java b/core/src/main/java/org/apache/metamodel/membrane/app/config/JacksonConfig.java new file mode 100644 index 0000000..8021541 --- /dev/null +++ b/core/src/main/java/org/apache/metamodel/membrane/app/config/JacksonConfig.java @@ -0,0 +1,18 @@ +package org.apache.metamodel.membrane.app.config; + +import org.apache.metamodel.membrane.swagger.invoker.JSON; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Configuration +public class JacksonConfig { + + @Bean(name = "objectMapper") + public ObjectMapper objectMapper() { + // use the JSON class from swagger-codegen + final JSON json = new JSON(); + return json.getContext(Object.class); + } +} http://git-wip-us.apache.org/repos/asf/metamodel-membrane/blob/dfdad119/core/src/main/resources/context/dispatcher-servlet.xml ---------------------------------------------------------------------- diff --git a/core/src/main/resources/context/dispatcher-servlet.xml b/core/src/main/resources/context/dispatcher-servlet.xml index 437d2b1..6be361b 100644 --- a/core/src/main/resources/context/dispatcher-servlet.xml +++ b/core/src/main/resources/context/dispatcher-servlet.xml @@ -34,7 +34,7 @@ under the License. <ref bean="jsonMessageConverter" /> </mvc:message-converters> </mvc:annotation-driven> - + <!-- Message converters --> <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> @@ -44,6 +44,10 @@ under the License. <value>application/json</value> </list> </property> + <property name="objectMapper"> + <bean class="com.fasterxml.jackson.databind.ObjectMapper"> + </bean> + </property> </bean> <bean http://git-wip-us.apache.org/repos/asf/metamodel-membrane/blob/dfdad119/core/src/main/resources/swagger.yaml ---------------------------------------------------------------------- diff --git a/core/src/main/resources/swagger.yaml b/core/src/main/resources/swagger.yaml index 0666728..f183feb 100644 --- a/core/src/main/resources/swagger.yaml +++ b/core/src/main/resources/swagger.yaml @@ -421,6 +421,8 @@ definitions: insertionResponse: description: Represents the result of inserting records to a table type: object + required: + - status properties: status: type: string http://git-wip-us.apache.org/repos/asf/metamodel-membrane/blob/dfdad119/core/src/test/java/org/apache/metamodel/membrane/controllers/TenantInteractionScenarioTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/metamodel/membrane/controllers/TenantInteractionScenarioTest.java b/core/src/test/java/org/apache/metamodel/membrane/controllers/TenantInteractionScenarioTest.java index 59dfbb0..eccff2c 100644 --- a/core/src/test/java/org/apache/metamodel/membrane/controllers/TenantInteractionScenarioTest.java +++ b/core/src/test/java/org/apache/metamodel/membrane/controllers/TenantInteractionScenarioTest.java @@ -24,9 +24,11 @@ import java.util.Map; import org.apache.metamodel.membrane.app.InMemoryTenantRegistry; import org.apache.metamodel.membrane.app.TenantRegistry; +import org.apache.metamodel.membrane.app.config.JacksonConfig; import org.junit.Before; import org.junit.Test; import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -41,17 +43,21 @@ public class TenantInteractionScenarioTest { @Before public void init() { - TenantRegistry tenantRegistry = new InMemoryTenantRegistry(); - TenantController tenantController = new TenantController(tenantRegistry); - DataSourceController dataContextController = new DataSourceController(tenantRegistry); - SchemaController schemaController = new SchemaController(tenantRegistry); - TableController tableController = new TableController(tenantRegistry); - ColumnController columnController = new ColumnController(tenantRegistry); - QueryController queryController = new QueryController(tenantRegistry); - TableDataController tableDataController = new TableDataController(tenantRegistry); + final MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); + messageConverter.setObjectMapper(new JacksonConfig().objectMapper()); + + final TenantRegistry tenantRegistry = new InMemoryTenantRegistry(); + final TenantController tenantController = new TenantController(tenantRegistry); + final DataSourceController dataContextController = new DataSourceController(tenantRegistry); + final SchemaController schemaController = new SchemaController(tenantRegistry); + final TableController tableController = new TableController(tenantRegistry); + final ColumnController columnController = new ColumnController(tenantRegistry); + final QueryController queryController = new QueryController(tenantRegistry); + final TableDataController tableDataController = new TableDataController(tenantRegistry); mockMvc = MockMvcBuilders.standaloneSetup(tenantController, dataContextController, schemaController, - tableController, columnController, queryController, tableDataController).build(); + tableController, columnController, queryController, tableDataController).setMessageConverters( + messageConverter).build(); } @Test @@ -135,9 +141,8 @@ public class TenantInteractionScenarioTest { assertEquals("column", map.get("type")); assertEquals("bar", map.get("name")); - assertEquals( - "{number=0, size=null, nullable=true, primary-key=false, indexed=false, column-type=INTEGER, native-type=null, remarks=null}", - map.get("metadata").toString()); + assertEquals("{number=0, nullable=true, primary-key=false, indexed=false, column-type=INTEGER}", map.get( + "metadata").toString()); } // query metadata from information_schema @@ -167,15 +172,15 @@ public class TenantInteractionScenarioTest { } { final MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post( - "/tenant1/mydata/s/mydata/t/hello_world/d").content("[{'greeting':'Hi','who':'Apache'}]" - .replace('\'', '"')).contentType(MediaType.APPLICATION_JSON)).andExpect( - MockMvcResultMatchers.status().isOk()).andReturn(); + "/tenant1/mydata/s/mydata/t/hello_world/d").content("[{'greeting':'Hi','who':'Apache'}]".replace( + '\'', '"')).contentType(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers + .status().isOk()).andReturn(); final String content = result.getResponse().getContentAsString(); final Map<?, ?> map = new ObjectMapper().readValue(content, Map.class); assertEquals("{status=ok}", map.toString()); } - + // query the actual data // query metadata from information_schema { @@ -187,8 +192,7 @@ public class TenantInteractionScenarioTest { final Map<?, ?> map = new ObjectMapper().readValue(content, Map.class); assertEquals("dataset", map.get("type")); assertEquals("[hello_world.greeting, hello_world.who AS who_is_it]", map.get("headers").toString()); - assertEquals("[[Howdy, MetaModel], [Hi, Apache]]", map.get("data") - .toString()); + assertEquals("[[Howdy, MetaModel], [Hi, Apache]]", map.get("data").toString()); } } } http://git-wip-us.apache.org/repos/asf/metamodel-membrane/blob/dfdad119/swagger-codegen/pom.xml ---------------------------------------------------------------------- diff --git a/swagger-codegen/pom.xml b/swagger-codegen/pom.xml index 5f50f49..ace3549 100644 --- a/swagger-codegen/pom.xml +++ b/swagger-codegen/pom.xml @@ -50,9 +50,10 @@ under the License. <inputSpec>${project.basedir}/../core/src/main/resources/swagger.yaml</inputSpec> <language>java</language> <modelPackage>org.apache.metamodel.membrane.swagger.model</modelPackage> - <apiPackage>org.apache.metamodel.membrane.swagger.api</apiPackage> <invokerPackage>org.apache.metamodel.membrane.swagger.invoker</invokerPackage> + <generateApis>false</generateApis> <library>jersey2</library> + <useJaxbAnnotations>true</useJaxbAnnotations> <configOptions> <sourceFolder>src/gen/java/main</sourceFolder> <dateLibrary>java8</dateLibrary>