Explorar el Código

Updated Wicket version and improved resource responses. (#2929)

* Migrate AbstractResourceS to IresourceS

* Updated Wicket to 7.8.0
Andrea Del Bene hace 8 años
padre
commit
b47b173bdd

+ 3 - 3
.gitignore

@@ -7,9 +7,9 @@ node_modules/
 .lein-deps-sum
 
 # eclipse
-.classpath
-.project
-.settings
+**/.classpath
+**/.project
+**/.settings
 
 # maven
 target/

+ 0 - 37
frameworks/Java/wicket/.classpath

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry including="**/*.java" kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>

+ 0 - 42
frameworks/Java/wicket/.project

@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>hellowicket</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-	</natures>
-</projectDescription>

+ 1 - 1
frameworks/Java/wicket/pom.xml

@@ -20,7 +20,7 @@
 	</licenses>
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<wicket.version>7.6.0</wicket.version>
+		<wicket.version>7.8.0</wicket.version>
 		<slf4j.version>1.7.25</slf4j.version>
 	</properties>
 	<dependencies>

+ 42 - 47
frameworks/Java/wicket/src/main/java/hellowicket/HelloDbResponse.java

@@ -1,67 +1,62 @@
 package hellowicket;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.util.string.StringValue;
-
-import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.concurrent.ThreadLocalRandom;
 
-public class HelloDbResponse extends AbstractResource
+import javax.sql.DataSource;
+
+import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.util.string.StringValue;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+public class HelloDbResponse implements IResource
 {
   private static final long serialVersionUID = 1L;
 
   private static final int DB_ROWS = 10000;
   private static final String TEXT_PLAIN = "text/plain";
 
-  protected ResourceResponse newResourceResponse(Attributes attributes)
+  @Override
+  public void respond(Attributes attributes) 
   {
-    final StringValue queriesParam = attributes.getRequest().getQueryParameters().getParameterValue("queries");
-    int qs = queriesParam.toInt(1);
-    if (qs < 1)
-    {
-      qs = 1;
-    }
-    else if (qs > 500)
-    {
-      qs = 500;
-    }
-    final int queries = qs;
-
-    final ResourceResponse response = new ResourceResponse();
-
-    try
-    {
-      final byte[] data = getDataFromDatabase(queriesParam, queries);
-      final WebResponse webResponse = (WebResponse) attributes.getResponse();
-      webResponse.setContentLength(data.length);
-      webResponse.setContentType(HelloJsonResponse.APPLICATION_JSON);
-      response.setWriteCallback(new WriteCallback()
-      {
-        public void writeData(Attributes attributes)
-        {
-          webResponse.write(data);
-        }
-      });
-    }
-    catch (Exception ex)
-    {
-      response.setContentType(TEXT_PLAIN);
-      response.setError(500, ex.getClass().getSimpleName() + ": " + ex.getMessage());
-      ex.printStackTrace();
-    }
-    return response;
-  }
+	  final StringValue queriesParam = attributes.getRequest().getQueryParameters().getParameterValue("queries");
+	  int qs = queriesParam.toInt(1);
+	  if (qs < 1)
+	  {
+		  qs = 1;
+	  }
+	  else if (qs > 500)
+	  {
+		  qs = 500;
+	  }
+	  final int queries = qs;
+		
+	  try 
+	  {
+		byte[] data = getDataFromDatabase(queriesParam, queries);
 
-  @Override
-  protected void setResponseHeaders(final ResourceResponse resourceResponse, final Attributes attributes) {
+		final WebResponse webResponse = (WebResponse) attributes.getResponse();
+		webResponse.setContentLength(data.length);
+		webResponse.setContentType(HelloJsonResponse.APPLICATION_JSON);
+		webResponse.write(data);
+	  } 
+	  catch (Exception ex)
+	  {
+		WebResponse response = (WebResponse) attributes.getResponse();
+		
+		response.setContentType(TEXT_PLAIN);
+		response.setStatus(500);
+		response.write(ex.getClass().getSimpleName() + ": " + ex.getMessage());
+		
+		ex.printStackTrace();
+	  }
   }
-
+  
   private byte[] getDataFromDatabase(final StringValue queriesParam, final int queries)
       throws SQLException, JsonProcessingException
   {

+ 22 - 33
frameworks/Java/wicket/src/main/java/hellowicket/HelloJsonResponse.java

@@ -1,13 +1,14 @@
 package hellowicket;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
+import java.io.IOException;
+
 import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.request.resource.IResource;
 
-import java.io.IOException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
 
-public class HelloJsonResponse extends AbstractResource
+public class HelloJsonResponse implements IResource
 {
   private static final long serialVersionUID = 1L;
 
@@ -19,33 +20,21 @@ public class HelloJsonResponse extends AbstractResource
     MAPPER.registerModule(new AfterburnerModule());
   }
 
-  protected ResourceResponse newResourceResponse(Attributes attributes)
-  {
-    final ResourceResponse response = new ResourceResponse();
-    response.setWriteCallback(new WriteCallback()
-    {
-      public void writeData(Attributes attributes)
-      {
-        try
-        {
-          final WebResponse webResponse = (WebResponse) attributes.getResponse();
-          webResponse.setContentLength(27);
-          webResponse.setContentType(APPLICATION_JSON);
-          JsonMessage message = new JsonMessage(HELLO_WORLD);
-          byte[] json = MAPPER.writeValueAsBytes(message);
-          webResponse.write(json);
-        }
-        catch (IOException ex)
-        {
-          // do nothing
-        }
-      }
-    });
-    return response;
-  }
-
   @Override
-  protected void setResponseHeaders(final ResourceResponse resourceResponse, final Attributes attributes) {
-
-  }
+  public void respond(Attributes attributes) 
+  {
+	try
+	  {
+	    final WebResponse webResponse = (WebResponse) attributes.getResponse();
+	    webResponse.setContentLength(27);
+	    webResponse.setContentType(APPLICATION_JSON);
+	    JsonMessage message = new JsonMessage(HELLO_WORLD);
+	    byte[] json = MAPPER.writeValueAsBytes(message);
+	    webResponse.write(json);
+	  }
+	  catch (IOException ex)
+	  {
+	   // do nothing
+	  }
+	}
 }

+ 43 - 53
frameworks/Java/wicket/src/main/java/hellowicket/dbupdates/HelloDbUpdatesResource.java

@@ -1,14 +1,15 @@
 package hellowicket.dbupdates;
 
-import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.resource.AbstractResource;
-
-import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.concurrent.ThreadLocalRandom;
 
+import javax.sql.DataSource;
+
+import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.resource.IResource;
+
 import hellowicket.HelloJsonResponse;
 import hellowicket.WicketApplication;
 import hellowicket.World;
@@ -17,13 +18,14 @@ import hellowicket.World;
  * A resource that implements the requirements for
  * <a href="http://www.techempower.com/benchmarks/#section=code">Test type 5: Database updates</a>
  */
-public class HelloDbUpdatesResource extends AbstractResource
+public class HelloDbUpdatesResource implements IResource
 {
   private static final long serialVersionUID = 1L;
 
   private static final int DB_ROWS = 10000;
 
-  protected ResourceResponse newResourceResponse(Attributes attributes)
+  @Override
+  public void respond(Attributes attributes)
   {
     int _queries = attributes.getRequest().getQueryParameters().getParameterValue("queries").toInt(1);
     if (_queries < 1)
@@ -36,60 +38,48 @@ public class HelloDbUpdatesResource extends AbstractResource
     }
     final int queries = _queries;
 
-    final ResourceResponse response = new ResourceResponse();
+    try
+    {
+      final ThreadLocalRandom random = ThreadLocalRandom.current();
+      DataSource dataSource = WicketApplication.get().getDataSource();
 
-    response.setWriteCallback(new WriteCallback() {
-      public void writeData(Attributes attributes)
+      World[] worlds = new World[queries];
+      try (Connection connection = dataSource.getConnection();
+           PreparedStatement query = connection.prepareStatement(
+                   "SELECT * FROM World WHERE id = ?",
+                   ResultSet.TYPE_FORWARD_ONLY,
+                   ResultSet.CONCUR_READ_ONLY);
+           PreparedStatement update = connection.prepareStatement(
+                   "UPDATE World SET randomNumber = ? WHERE id= ?"))
       {
-        try
+        for (int i = 0; i < queries; i++)
         {
-          final ThreadLocalRandom random = ThreadLocalRandom.current();
-          DataSource dataSource = WicketApplication.get().getDataSource();
-
-          World[] worlds = new World[queries];
-          try (Connection connection = dataSource.getConnection();
-               PreparedStatement query = connection.prepareStatement(
-                       "SELECT * FROM World WHERE id = ?",
-                       ResultSet.TYPE_FORWARD_ONLY,
-                       ResultSet.CONCUR_READ_ONLY);
-               PreparedStatement update = connection.prepareStatement(
-                       "UPDATE World SET randomNumber = ? WHERE id= ?"))
+          query.setInt(1, random.nextInt(DB_ROWS) + 1);
+          World world;
+          try (ResultSet resultSet = query.executeQuery())
           {
-            for (int i = 0; i < queries; i++)
-            {
-              query.setInt(1, random.nextInt(DB_ROWS) + 1);
-              World world;
-              try (ResultSet resultSet = query.executeQuery())
-              {
-                resultSet.next();
-                world = new World(
-                    resultSet.getInt("id"),
-                    resultSet.getInt("randomNumber"));
-              }
-              world.randomNumber = random.nextInt(DB_ROWS) + 1;
-              update.setInt(1, world.randomNumber);
-              update.setInt(2, world.id);
-              update.executeUpdate();
-              worlds[i] = world;
-            }
+            resultSet.next();
+            world = new World(
+                resultSet.getInt("id"),
+                resultSet.getInt("randomNumber"));
           }
-
-          byte[] data = HelloJsonResponse.MAPPER.writeValueAsBytes(worlds);
-          final WebResponse webResponse = (WebResponse) attributes.getResponse();
-          webResponse.setContentLength(data.length);
-          webResponse.setContentType(HelloJsonResponse.APPLICATION_JSON);
-          webResponse.write(data);
-        }
-        catch (Exception ex)
-        {
-          // do nothing
+          world.randomNumber = random.nextInt(DB_ROWS) + 1;
+          update.setInt(1, world.randomNumber);
+          update.setInt(2, world.id);
+          update.executeUpdate();
+          worlds[i] = world;
         }
       }
-    });
-    return response;
-  }
 
-  @Override
-  protected void setResponseHeaders(final ResourceResponse resourceResponse, final Attributes attributes) {
+      byte[] data = HelloJsonResponse.MAPPER.writeValueAsBytes(worlds);
+      final WebResponse webResponse = (WebResponse) attributes.getResponse();
+      webResponse.setContentLength(data.length);
+      webResponse.setContentType(HelloJsonResponse.APPLICATION_JSON);
+      webResponse.write(data);
+    }
+    catch (Exception ex)
+    {
+      // do nothing
+    }
   }
 }

+ 10 - 19
frameworks/Java/wicket/src/main/java/hellowicket/plaintext/HelloTextResource.java

@@ -1,37 +1,28 @@
 package hellowicket.plaintext;
 
-import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.resource.AbstractResource;
-
 import java.nio.charset.Charset;
 
+import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.resource.IResource;
+
 /**
  * A resource that implements the requirements for
  * <a href="http://www.techempower.com/benchmarks/#section=code">Test type 6: Plaintext</a>
  */
-public class HelloTextResource extends AbstractResource
+public class HelloTextResource implements IResource
 {
   private static final long serialVersionUID = 1L;
 
   private static final String CONTENT_TYPE = "text/plain";
   private static final byte[] DATA = "Hello, World!".getBytes(Charset.forName("UTF-8"));
 
-  protected ResourceResponse newResourceResponse(Attributes attributes)
+  @Override
+  public void respond(Attributes attributes)
   {
-    ResourceResponse response = new ResourceResponse();
-    response.setWriteCallback(new WriteCallback() {
-      public void writeData(Attributes attributes)
-      {
-        final WebResponse webResponse = (WebResponse) attributes.getResponse();
-        webResponse.setContentType(CONTENT_TYPE);
-        webResponse.setContentLength(DATA.length);
-        webResponse.write(DATA);
-      }
-    });
-    return response;
-  }
 
-  @Override
-  protected void setResponseHeaders(final ResourceResponse resourceResponse, final Attributes attributes) {
+    final WebResponse webResponse = (WebResponse) attributes.getResponse();
+    webResponse.setContentType(CONTENT_TYPE);
+    webResponse.setContentLength(DATA.length);
+    webResponse.write(DATA);
   }
 }