Browse Source

Fix Tapestry (#5182)

* Fix Tapestry

* add comment
Nate 5 years ago
parent
commit
aa42742681

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

@@ -11,7 +11,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.target>11</maven.compiler.target>
         <maven.compiler.target>11</maven.compiler.target>
-        <tapestry-release-version>5.5.0-beta-2</tapestry-release-version>
+        <tapestry-release-version>5.5.0-beta-3</tapestry-release-version>
         <servlet-api-release-version>3.1.0</servlet-api-release-version>
         <servlet-api-release-version>3.1.0</servlet-api-release-version>
         <jaxb.version>2.4.0-b180830.0438</jaxb.version>
         <jaxb.version>2.4.0-b180830.0438</jaxb.version>
         <testng-release-version>5.14.10</testng-release-version>
         <testng-release-version>5.14.10</testng-release-version>

+ 10 - 8
frameworks/Java/tapestry/src/main/java/hello/pages/Query.java

@@ -49,15 +49,17 @@ public class Query
     else if (queries > 500) {
     else if (queries > 500) {
       queries = 500;
       queries = 500;
     }
     }
-    final World[] worlds = new World[queries];
 
 
-    // For generating a random row ID
-    final Random rand = ThreadLocalRandom.current();
-
-    for (int i = 0; i < queries; i++) {
-      // Read object from database
-      worlds[i] = (World)session.get(World.class, new Integer(rand.nextInt(DB_ROWS) + 1));
-    }
+    // Since we're using hibernate ORM which has a 1st level cache
+    // that can't be turned off, we instead pick distinct random numbers
+    // to avoid failing query verification
+    final World[] worlds = ThreadLocalRandom
+            .current()
+            .ints(1, DB_ROWS + 1)
+            .distinct()
+            .limit(queries)
+            .mapToObj(id -> session.get(World.class, id))
+            .toArray(World[]::new);
 
 
     // Send reponse
     // Send reponse
     String response = "";
     String response = "";