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>

Reply via email to