Browse Source

Merge pull request #750 from codylerum/undertow_validation

Undertow validation issues and cleanup
Mike Smith 11 years ago
parent
commit
4328d4e3cc

+ 3 - 3
undertow/benchmark_config

@@ -24,7 +24,7 @@
     "mysql" : {
       "setup_file": "setup",
       "db_url": "/db/mysql",
-      "query_url": "/db/mysql?queries=",
+      "query_url": "/queries/mysql?queries=",
       "fortune_url": "/fortunes/mysql",
       "update_url": "/updates/mysql?queries=",
       "port": 8080,
@@ -45,7 +45,7 @@
     "postgresql" : {
       "setup_file": "setup",
       "db_url": "/db/postgresql",
-      "query_url": "/db/postgresql?queries=",
+      "query_url": "/queries/postgresql?queries=",
       "fortune_url": "/fortunes/postgresql",
       "update_url": "/updates/postgresql?queries=",
       "port": 8080,
@@ -66,7 +66,7 @@
     "mongodb" : {
       "setup_file": "setup",
       "db_url": "/db/mongodb",
-      "query_url": "/db/mongodb?queries=",
+      "query_url": "/queries/mongodb?queries=",
       "fortune_url": "/fortunes/mongodb",
       "update_url": "/updates/mongodb?queries=",
       "port": 8080,

+ 0 - 1
undertow/src/main/java/hello/CacheHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.cache.LoadingCache;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;

+ 16 - 6
undertow/src/main/java/hello/DbMongoHandler.java

@@ -1,7 +1,6 @@
 package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DB;
 import com.mongodb.DBObject;
@@ -19,10 +18,12 @@ import static hello.HelloWebServer.JSON_UTF8;
 final class DbMongoHandler implements HttpHandler {
   private final ObjectMapper objectMapper;
   private final DB database;
+  private final boolean multiple;
 
-  DbMongoHandler(ObjectMapper objectMapper, DB database) {
+  DbMongoHandler(ObjectMapper objectMapper, DB database, boolean multiple) {
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.database = Objects.requireNonNull(database);
+    this.multiple = multiple;
   }
 
   @Override
@@ -31,7 +32,13 @@ final class DbMongoHandler implements HttpHandler {
       exchange.dispatch(this);
       return;
     }
-    int queries = Helper.getQueries(exchange);
+    
+    int queries = 1;
+    if(multiple)
+    {
+      queries = Helper.getQueries(exchange);
+    }
+    
     World[] worlds = new World[queries];
     for (int i = 0; i < queries; i++) {
       DBObject object = database.getCollection("World").findOne(
@@ -46,13 +53,16 @@ final class DbMongoHandler implements HttpHandler {
     }
     exchange.getResponseHeaders().put(
         Headers.CONTENT_TYPE, JSON_UTF8);
-    if (queries == 1)
+    
+    if (multiple)
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
+      // If a multiple query then response must be an array
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
     }
     else
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
+      // If a single query then response must be an object
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
     }
   }
 }

+ 18 - 6
undertow/src/main/java/hello/DbSqlHandler.java

@@ -1,12 +1,13 @@
 package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
+
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 
 import javax.sql.DataSource;
+
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -20,10 +21,12 @@ import static hello.HelloWebServer.JSON_UTF8;
 final class DbSqlHandler implements HttpHandler {
   private final ObjectMapper objectMapper;
   private final DataSource database;
+  private final boolean multiple;
 
-  DbSqlHandler(ObjectMapper objectMapper, DataSource database) {
+  DbSqlHandler(ObjectMapper objectMapper, DataSource database, boolean multiple) {
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.database = Objects.requireNonNull(database);
+    this.multiple = multiple;
   }
 
   @Override
@@ -32,7 +35,13 @@ final class DbSqlHandler implements HttpHandler {
       exchange.dispatch(this);
       return;
     }
-    int queries = Helper.getQueries(exchange);
+    
+    int queries = 1;
+    if(multiple)
+    {
+      queries = Helper.getQueries(exchange);
+    }
+    
     World[] worlds = new World[queries];
     try (Connection connection = database.getConnection();
          PreparedStatement statement = connection.prepareStatement(
@@ -51,13 +60,16 @@ final class DbSqlHandler implements HttpHandler {
     }
     exchange.getResponseHeaders().put(
         Headers.CONTENT_TYPE, JSON_UTF8);
-    if (queries == 1)
+    
+    if (multiple)
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
+      // If a multiple query then response must be an array
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
     }
     else
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
+      // If a single query then response must be an object
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
     }
   }
 }

+ 0 - 1
undertow/src/main/java/hello/FortunesMongoHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.MustacheFactory;
-import com.google.common.net.MediaType;
 import com.mongodb.DB;
 import com.mongodb.DBCursor;
 import com.mongodb.DBObject;

+ 0 - 1
undertow/src/main/java/hello/FortunesSqlHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.MustacheFactory;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;

+ 9 - 3
undertow/src/main/java/hello/HelloWebServer.java

@@ -124,11 +124,17 @@ public final class HelloWebServer {
             .addPrefixPath("/json",
                 new JsonHandler(objectMapper))
             .addPrefixPath("/db/mysql",
-                new DbSqlHandler(objectMapper, mysql))
+                new DbSqlHandler(objectMapper, mysql, false))
+            .addPrefixPath("/queries/mysql",
+                new DbSqlHandler(objectMapper, mysql, true))
             .addPrefixPath("/db/postgresql",
-                new DbSqlHandler(objectMapper, postgresql))
+                new DbSqlHandler(objectMapper, postgresql, false))
+            .addPrefixPath("/queries/postgresql",
+                new DbSqlHandler(objectMapper, postgresql, true))
             .addPrefixPath("/db/mongodb",
-                new DbMongoHandler(objectMapper, mongodb))
+                new DbMongoHandler(objectMapper, mongodb, false))
+            .addPrefixPath("/queries/mongodb",
+                new DbMongoHandler(objectMapper, mongodb, true))
             .addPrefixPath("/fortunes/mysql",
                 new FortunesSqlHandler(mustacheFactory, mysql))
             .addPrefixPath("/fortunes/postgresql",

+ 0 - 1
undertow/src/main/java/hello/JsonHandler.java

@@ -1,7 +1,6 @@
 package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;

+ 0 - 1
undertow/src/main/java/hello/PlaintextHandler.java

@@ -1,6 +1,5 @@
 package hello;
 
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;

+ 0 - 2
undertow/src/main/java/hello/UpdatesMongoHandler.java

@@ -1,7 +1,6 @@
 package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DB;
 import com.mongodb.DBObject;
@@ -43,7 +42,6 @@ final class UpdatesMongoHandler implements HttpHandler {
       // produce the correct output and side effects.
       //
       DBObject object = database.getCollection("World").findOne(key);
-      int oldRandomNumber = ((Number) object.get("randomNumber")).intValue();
       int newRandomNumber = Helper.randomWorld();
       object.put("randomNumber", newRandomNumber);
       database.getCollection("World").update(key, object);

+ 0 - 1
undertow/src/main/java/hello/UpdatesSqlHandler.java

@@ -1,7 +1,6 @@
 package hello;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;