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);