Browse Source

Added activeweb-jackson tests

ericbn 10 years ago
parent
commit
6b080e336d

+ 3 - 0
frameworks/Java/activeweb/benchmark_config

@@ -27,6 +27,9 @@
     "jackson": {
     "jackson": {
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/activeweb/json/jackson",
       "json_url": "/activeweb/json/jackson",
+      "db_url": "/activeweb/db/jackson",
+      "query_url": "/activeweb/queries/jackson?queries=",
+      "update_url": "/activeweb/updates/jackson?queries=",
       "port": 8080,
       "port": 8080,
       "approach": "Realistic",
       "approach": "Realistic",
       "classification": "Fullstack",
       "classification": "Fullstack",

+ 1 - 0
frameworks/Java/activeweb/source_code

@@ -10,4 +10,5 @@
 ./activeweb/src/main/java/app/controllers/QueriesController.java
 ./activeweb/src/main/java/app/controllers/QueriesController.java
 ./activeweb/src/main/java/app/controllers/UpdatesController.java
 ./activeweb/src/main/java/app/controllers/UpdatesController.java
 ./activeweb/src/main/java/app/models/Fortune.java
 ./activeweb/src/main/java/app/models/Fortune.java
+./activeweb/src/main/java/app/models/Message.java
 ./activeweb/src/main/java/app/models/World.java
 ./activeweb/src/main/java/app/models/World.java

+ 5 - 0
frameworks/Java/activeweb/src/main/java/app/controllers/DbController.java

@@ -16,6 +16,7 @@ limitations under the License.
 package app.controllers;
 package app.controllers;
 
 
 import app.models.World;
 import app.models.World;
+import java.io.IOException;
 import org.javalite.activeweb.AppController;
 import org.javalite.activeweb.AppController;
 
 
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.ThreadLocalRandom;
@@ -29,6 +30,10 @@ public class DbController extends AppController {
         respond(World.findById(randomNumber()).toJson(false, "id", "randomNumber")).contentType("application/json");
         respond(World.findById(randomNumber()).toJson(false, "id", "randomNumber")).contentType("application/json");
     }
     }
 
 
+    public void jackson() throws IOException {
+        JsonController.WRITER.writeValue(outputStream("application/json"), World.findById(randomNumber()));
+    }
+
     protected int randomNumber(){
     protected int randomNumber(){
         return ThreadLocalRandom.current().nextInt(10000) + 1;
         return ThreadLocalRandom.current().nextInt(10000) + 1;
     }
     }

+ 1 - 1
frameworks/Java/activeweb/src/main/java/app/controllers/FortunesController.java

@@ -33,6 +33,6 @@ public class FortunesController extends AppController {
         fortunes.add(Fortune.<Fortune>create("id", 0, "message", "Additional fortune added at request time."));
         fortunes.add(Fortune.<Fortune>create("id", 0, "message", "Additional fortune added at request time."));
         Collections.sort(fortunes);
         Collections.sort(fortunes);
         view("fortunes", fortunes);
         view("fortunes", fortunes);
-        render().noLayout();
+        render("/fortunes/index").noLayout();
     }
     }
 }
 }

+ 6 - 13
frameworks/Java/activeweb/src/main/java/app/controllers/JsonController.java

@@ -15,13 +15,12 @@ limitations under the License.
 */
 */
 package app.controllers;
 package app.controllers;
 
 
-import com.fasterxml.jackson.core.JsonProcessingException;
+import app.models.Message;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectWriter;
 import com.fasterxml.jackson.databind.ObjectWriter;
+import java.io.IOException;
 import org.javalite.activeweb.AppController;
 import org.javalite.activeweb.AppController;
 
 
-import java.util.Map;
-import java.util.TreeMap;
 
 
 /**
 /**
  * @author Igor Polevoy: 12/18/13 3:51 PM
  * @author Igor Polevoy: 12/18/13 3:51 PM
@@ -30,18 +29,12 @@ import java.util.TreeMap;
 public class JsonController extends AppController {
 public class JsonController extends AppController {
     static final ObjectWriter WRITER = new ObjectMapper().writer();
     static final ObjectWriter WRITER = new ObjectMapper().writer();
 
 
-    private Map<String, Object> newMessage() {
-        Map<String, Object> message = new TreeMap<String, Object>();
-        message.put("message", "Hello, World!");
-        return message;
-    }
-
     public void index() {
     public void index() {
-        view("message", newMessage());
-        render().noLayout().contentType("application/json");
+        view("message", new Message("Hello, World!"));
+        render("/json/index").noLayout().contentType("application/json");
     }
     }
 
 
-    public void jackson() throws JsonProcessingException {
-        respond(WRITER.writeValueAsString(newMessage())).contentType("application/json");
+    public void jackson() throws IOException {
+        WRITER.writeValue(outputStream("application/json"), new Message("Hello, World!"));
     }
     }
 }
 }

+ 6 - 1
frameworks/Java/activeweb/src/main/java/app/controllers/QueriesController.java

@@ -16,6 +16,7 @@ limitations under the License.
 package app.controllers;
 package app.controllers;
 
 
 import app.models.World;
 import app.models.World;
+import java.io.IOException;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
@@ -27,7 +28,11 @@ import java.util.List;
 public class QueriesController extends DbController {
 public class QueriesController extends DbController {
     @Override public void index() {
     @Override public void index() {
         view("worlds", getWorlds());
         view("worlds", getWorlds());
-        render().contentType("application/json");
+        render("/queries/index").contentType("application/json");
+    }
+
+    @Override public void jackson() throws IOException {
+        JsonController.WRITER.writeValue(outputStream("application/json"), getWorlds());
     }
     }
 
 
     @Override protected String getLayout() {
     @Override protected String getLayout() {

+ 4 - 4
frameworks/Java/activeweb/src/main/java/app/controllers/UpdatesController.java

@@ -24,12 +24,12 @@ import java.util.List;
  * @author Eric Nielsen
  * @author Eric Nielsen
  */
  */
 public class UpdatesController extends QueriesController {
 public class UpdatesController extends QueriesController {
-    @Override public void index() {
-        List<World> worlds = getWorlds();
+
+    @Override protected List<World> getWorlds() {
+        List<World> worlds = super.getWorlds();
         for (World world : worlds) {
         for (World world : worlds) {
             world.set("randomNumber", randomNumber()).saveIt();
             world.set("randomNumber", randomNumber()).saveIt();
         }
         }
-        view("worlds", worlds);
-        render("/queries/index").contentType("application/json"); //same template
+        return worlds;
     }
     }
 }
 }

+ 38 - 0
frameworks/Java/activeweb/src/main/java/app/models/Message.java

@@ -0,0 +1,38 @@
+/*
+Copyright 2009-2015 Igor Polevoy
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package app.models;
+
+/**
+ * @author Eric Nielsen
+ */
+public class Message {
+    private String message;
+
+    public Message() {
+    }
+
+    public Message(String message) {
+        this.message = message;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 19 - 17
frameworks/Java/activeweb/src/main/java/app/models/World.java

@@ -1,30 +1,32 @@
 /*
 /*
-Copyright 2009-2010 Igor Polevoy 
+Copyright 2009-2015 Igor Polevoy
 
 
-Licensed under the Apache License, Version 2.0 (the "License"); 
-you may not use this file except in compliance with the License. 
-You may obtain a copy of the License at 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
 
 
-http://www.apache.org/licenses/LICENSE-2.0 
+http://www.apache.org/licenses/LICENSE-2.0
 
 
-Unless required by applicable law or agreed to in writing, software 
-distributed under the License is distributed on an "AS IS" BASIS, 
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-See the License for the specific language governing permissions and 
-limitations under the License. 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
 */
 */
-
-/**
- * @author Igor Polevoy: 12/18/13 4:32 PM
- */
-
 package app.models;
 package app.models;
 
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import org.javalite.activejdbc.Model;
 import org.javalite.activejdbc.Model;
 import org.javalite.activejdbc.annotations.Table;
 import org.javalite.activejdbc.annotations.Table;
 
 
-
+/**
+ * @author Igor Polevoy: 12/18/13 4:32 PM
+ * @author Eric Nielsen
+ */
 @Table("World")
 @Table("World")
+@JsonIgnoreProperties({"frozen", "idName", "longId", "new", "valid"})
 public class World extends Model {
 public class World extends Model {
-
+    public Object getRandomNumber() {
+        return get("randomNumber");
+    }
 }
 }

+ 17 - 1
frameworks/Java/activeweb/src/test/java/app/controllers/DbControllerSpec.java

@@ -27,10 +27,26 @@ import org.junit.Ignore;
 public class DbControllerSpec extends org.javalite.activeweb.DBControllerSpec {
 public class DbControllerSpec extends org.javalite.activeweb.DBControllerSpec {
 
 
     @Test
     @Test
-    public void shouldRenderOneRecord(){
+    public void shouldRenderOneRecord() {
         //execute controller
         //execute controller
         request().get("index");
         request().get("index");
         //process result
         //process result
+        System.out.println(responseContent());
+        Map result = JsonHelper.toMap(responseContent());
+        //test result
+        a(result.size()).shouldBeEqual(2);
+        a(result.get("id")).shouldNotBeNull();
+        a(result.get("randomNumber")).shouldNotBeNull();
+        a(contentType()).shouldBeEqual("application/json");
+    }
+
+
+    @Test
+    public void shouldRenderOneRecordWithJackson() {
+        //execute controller
+        request().get("jackson");
+        //process result
+        System.out.println(responseContent());
         Map result = JsonHelper.toMap(responseContent());
         Map result = JsonHelper.toMap(responseContent());
         //test result
         //test result
         a(result.size()).shouldBeEqual(2);
         a(result.size()).shouldBeEqual(2);

+ 2 - 1
frameworks/Java/activeweb/src/test/java/app/controllers/FortunesControllerSpec.java

@@ -33,10 +33,11 @@ public class FortunesControllerSpec extends DBControllerSpec {
                 "<tr><td>11</td><td>&lt;script&gt;alert(&quot;This should not be displayed in a browser alert box.&quot;);&lt;/script&gt;</td></tr>"
                 "<tr><td>11</td><td>&lt;script&gt;alert(&quot;This should not be displayed in a browser alert box.&quot;);&lt;/script&gt;</td></tr>"
                 + "<tr><td>4</td><td>A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1</td></tr>"
                 + "<tr><td>4</td><td>A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1</td></tr>"
                 + "<tr><td>5</td><td>A computer program does what you tell it to do, not what you want it to do.</td></tr>"
                 + "<tr><td>5</td><td>A computer program does what you tell it to do, not what you want it to do.</td></tr>"
-                + "<tr><td>2</td><td>A computer scientist is someone who fixes things that aren't broken.</td></tr>");
+                + "<tr><td>2</td><td>A computer scientist is someone who fixes things that aren&apos;t broken.</td></tr>");
     }
     }
 
 
     @Ignore
     @Ignore
+    @Test
     public void shouldRenderHtmlOneMinute() {
     public void shouldRenderHtmlOneMinute() {
         long endMillis = System.currentTimeMillis() + 60*1000;
         long endMillis = System.currentTimeMillis() + 60*1000;
         do {
         do {

+ 4 - 8
frameworks/Java/activeweb/src/test/java/app/controllers/JsonControllerSpec.java

@@ -16,10 +16,9 @@ limitations under the License.
 package app.controllers;
 package app.controllers;
 
 
 import org.javalite.activeweb.ControllerSpec;
 import org.javalite.activeweb.ControllerSpec;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.Test;
 
 
-import java.util.Map;
-import org.junit.Ignore;
 
 
 /**
 /**
  * @author Igor Polevoy: 12/18/13 3:59 PM
  * @author Igor Polevoy: 12/18/13 3:59 PM
@@ -30,12 +29,7 @@ public class JsonControllerSpec extends ControllerSpec {
     @Test
     @Test
     public void shouldRenderMessage() {
     public void shouldRenderMessage() {
         request().integrateViews().get("index");
         request().integrateViews().get("index");
-        //process result
-        System.out.print(responseContent());
-        Map result = JsonHelper.toMap(responseContent());
-        //test result
-        the(result.size()).shouldBeEqual(1);
-        the(result.get("message")).shouldBeEqual("Hello, World!");
+        the(responseContent()).shouldBeEqual("{\"message\":\"Hello, World!\"}");
         the(contentType()).shouldBeEqual("application/json");
         the(contentType()).shouldBeEqual("application/json");
     }
     }
 
 
@@ -43,9 +37,11 @@ public class JsonControllerSpec extends ControllerSpec {
     public void shouldRenderMessageWithJackson() {
     public void shouldRenderMessageWithJackson() {
         request().get("jackson");
         request().get("jackson");
         the(responseContent()).shouldBeEqual("{\"message\":\"Hello, World!\"}");
         the(responseContent()).shouldBeEqual("{\"message\":\"Hello, World!\"}");
+        the(contentType()).shouldBeEqual("application/json");
     }
     }
 
 
     @Ignore
     @Ignore
+    @Test
     public void shouldRenderMessageOneMinute() {
     public void shouldRenderMessageOneMinute() {
         long endMillis = System.currentTimeMillis() + 60*1000;
         long endMillis = System.currentTimeMillis() + 60*1000;
         do {
         do {