You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2017/08/01 05:20:14 UTC

metamodel-membrane git commit: METAMODEL-1147: Fixed tests and use of Jackson ObjectMapper from codegen

Repository: metamodel-membrane
Updated Branches:
  refs/heads/swagger-codegen-model 609cc85b1 -> dfdad119d


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/swagger-codegen-model
Commit: dfdad119d3d4af0fecb0d587f710f3a253796cd9
Parents: 609cc85
Author: Kasper Sørensen <i....@gmail.com>
Authored: Mon Jul 31 22:20:11 2017 -0700
Committer: Kasper Sørensen <i....@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>