Author: mck
Date: Fri Sep  7 12:44:35 2018
New Revision: 1840290

URL: http://svn.apache.org/viewvc?rev=1840290&view=rev
Log:
Fix stuck thread on hashmap
https://issues.apache.org/jira/browse/TILES-599
Patch by shakeelabbas1
This closes #16

Modified:
    tiles/framework/branches/TILES_3_0_X/   (props changed)
    
tiles/framework/branches/TILES_3_0_X/tiles-core/src/main/java/org/apache/tiles/preparer/factory/BasicPreparerFactory.java

Propchange: tiles/framework/branches/TILES_3_0_X/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep  7 12:44:35 2018
@@ -1,3 +1,3 @@
 /tiles/framework/branches/TILES_3_0_X:1484307
 /tiles/framework/tags/tiles-parent-3.0.8:1814482
-/tiles/framework/trunk:829356,836356,880940,880948,887758,900938-902966,904552,921998,931637,949559,950449,982366-982367,989864-990230,996297,1042419,1061995,1080544,1080580-1081105,1427572,1427704,1840285
+/tiles/framework/trunk:829356,836356,880940,880948,887758,900938-902966,904552,921998,931637,949559,950449,982366-982367,989864-990230,996297,1042419,1061995,1080544,1080580-1081105,1427572,1427704,1839853,1840285

Modified: 
tiles/framework/branches/TILES_3_0_X/tiles-core/src/main/java/org/apache/tiles/preparer/factory/BasicPreparerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/branches/TILES_3_0_X/tiles-core/src/main/java/org/apache/tiles/preparer/factory/BasicPreparerFactory.java?rev=1840290&r1=1840289&r2=1840290&view=diff
==============================================================================
--- 
tiles/framework/branches/TILES_3_0_X/tiles-core/src/main/java/org/apache/tiles/preparer/factory/BasicPreparerFactory.java
 (original)
+++ 
tiles/framework/branches/TILES_3_0_X/tiles-core/src/main/java/org/apache/tiles/preparer/factory/BasicPreparerFactory.java
 Fri Sep  7 12:44:35 2018
@@ -20,8 +20,10 @@
  */
 package org.apache.tiles.preparer.factory;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.tiles.preparer.ViewPreparer;
 import org.apache.tiles.request.Request;
@@ -49,12 +51,14 @@ public class BasicPreparerFactory implem
      * Maps a preparer name to the instantiated preparer.
      */
     protected Map<String, ViewPreparer> preparers;
+    protected Set<String> knownPreparers;
 
     /**
      * Constructor.
      */
     public BasicPreparerFactory() {
-        this.preparers = new HashMap<String, ViewPreparer>();
+        this.preparers = new ConcurrentHashMap<String, ViewPreparer>();
+        this.knownPreparers = Collections.newSetFromMap(new 
ConcurrentHashMap<String, Boolean>());
     }
 
 
@@ -68,8 +72,12 @@ public class BasicPreparerFactory implem
      */
     public ViewPreparer getPreparer(String name, Request context) {
 
-        if (!preparers.containsKey(name)) {
-            preparers.put(name, createPreparer(name));
+        if (!knownPreparers.contains(name)) {
+            knownPreparers.add(name);
+            ViewPreparer preparer = createPreparer(name);
+            if (preparer != null) {
+               preparers.put(name, preparer);
+            }
         }
 
         return preparers.get(name);


Reply via email to