[jira] [Commented] (TAP5-2453) Generic List not fully supported

2017-10-18 Thread Jochen Kemnade (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16209109#comment-16209109
 ] 

Jochen Kemnade commented on TAP5-2453:
--

[~thiagohp], any ideas?
The problem is probably that 
{{org.apache.tapestry5.plastic.MethodDescription.MethodDescription(Method)}} 
does not extract the generics information.
We'd probably have to move {{GenericsUtils}} to from {{commons}} to {{plastic}} 
and use its methods to retrieve the info.

> Generic List not fully supported
> ---
>
> Key: TAP5-2453
> URL: https://issues.apache.org/jira/browse/TAP5-2453
> Project: Tapestry 5
>  Issue Type: Bug
>  Components: tapestry-ioc
>Affects Versions: 5.4, 5.3.8
>Reporter: Jan Mynařík
>  Labels: generics
> Attachments: TapestryGenericsTest.java
>
>
> I've created an abstract generic CRUD implementation. When binding 
> implementations resulting proxies doesn't fully report parametrized type via 
> reflections.
> See attached test. In 5.3.8 it fails in all asserts,  in 5.4 only in the last 
> one.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Closed] (TAP5-2473) Improvements for GridPaginationModel

2017-10-18 Thread Jochen Kemnade (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2473?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jochen Kemnade closed TAP5-2473.

Resolution: Won't Fix

> Improvements for GridPaginationModel
> 
>
> Key: TAP5-2473
> URL: https://issues.apache.org/jira/browse/TAP5-2473
> Project: Tapestry 5
>  Issue Type: Improvement
>  Components: tapestry-core
>Affects Versions: 5.4
>Reporter: Felix Scheffer
>Priority: Trivial
>  Labels: patch
> Attachments: 0002-GridPaginationModel-improvements.patch
>
>
> The patch uses primitive types for "current page" and "ascending" in 
> GridPaginationModel to avoid null checking in the Grid component.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Closed] (TAP5-2545) Reduce lock contention during page loading

2017-10-18 Thread Jochen Kemnade (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jochen Kemnade closed TAP5-2545.

   Resolution: Fixed
Fix Version/s: 5.5.0

The sub-tasks are fixed, so I'll close this one too.

> Reduce lock contention during page loading
> --
>
> Key: TAP5-2545
> URL: https://issues.apache.org/jira/browse/TAP5-2545
> Project: Tapestry 5
>  Issue Type: Improvement
>  Components: plastic, tapestry-core
>Reporter: Michael Mikhulya
>  Labels: patch, performance
> Fix For: 5.5.0
>
>
> I investigated lock contention during concurrent page loading  
> (PageLoader.loadPage).
> There are two main producers of lock contention:
> ComponentInstantiatorSourceImpl and PlasticClassLoader.
> I created a patch for two top issues, see it in attachments.
> There is still issue with PlasticClassLoader. I will report separate issue 
> regarding it.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TAP5-2585) Expression Issues (CronExpression.java and GenericsUtils.java)

2017-10-18 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16209060#comment-16209060
 ] 

Hudson commented on TAP5-2585:
--

FAILURE: Integrated in Jenkins build tapestry-trunk-freestyle #1658 (See 
[https://builds.apache.org/job/tapestry-trunk-freestyle/1658/])
TAP5-2585: Fix whitespace check (jkemnade: rev 
c152c38f74d0439db33a951e87bb8dda25753d45)
* (edit) 
tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
TAP5-2585: remove useless ternary (jkemnade: rev 
ef290f5360dc89d5544171c1168c93e5f59c0e1e)
* (edit) 
commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java


> Expression Issues (CronExpression.java and GenericsUtils.java)
> --
>
> Key: TAP5-2585
> URL: https://issues.apache.org/jira/browse/TAP5-2585
> Project: Tapestry 5
>  Issue Type: Bug
>  Components: tapestry-ioc
>Affects Versions: 5.4.3
>Reporter: AppChecker
>Assignee: Jochen Kemnade
>  Labels: appchecker
> Fix For: 5.5.0
>
>
> Hi
> Please look following fragments of source code:
> 1) 
> [tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937]
> {code:java}for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != 
> '\t'); i++)
> {code}
> Expression (s.charAt\(i) != ' ' || s.charAt\(i) != '\t') is always true.
> Probably, is should be:
> {code:java}
> (s.charAt(i) != ' ' && s.charAt(i) != '\t')
> {code}
> 2) 
> [commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577]
> {code:java}
> isSuper ? toString(wt.getLowerBounds()) : toString(wt.getLowerBounds()));
> {code}
> It is strange that the parts of the ternary operator are same.
> These possible defect found by 
> [AppChecker|https://npo-echelon.ru/en/solutions/appchecker.php].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TAP5-2585) Expression Issues (CronExpression.java and GenericsUtils.java)

2017-10-18 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16209058#comment-16209058
 ] 

ASF subversion and git services commented on TAP5-2585:
---

Commit ef290f5360dc89d5544171c1168c93e5f59c0e1e in tapestry-5's branch 
refs/heads/master from [~jkemnade]
[ https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;h=ef290f5 ]

TAP5-2585: remove useless ternary


> Expression Issues (CronExpression.java and GenericsUtils.java)
> --
>
> Key: TAP5-2585
> URL: https://issues.apache.org/jira/browse/TAP5-2585
> Project: Tapestry 5
>  Issue Type: Bug
>  Components: tapestry-ioc
>Affects Versions: 5.4.3
>Reporter: AppChecker
>Assignee: Jochen Kemnade
>  Labels: appchecker
> Fix For: 5.5.0
>
>
> Hi
> Please look following fragments of source code:
> 1) 
> [tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937]
> {code:java}for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != 
> '\t'); i++)
> {code}
> Expression (s.charAt\(i) != ' ' || s.charAt\(i) != '\t') is always true.
> Probably, is should be:
> {code:java}
> (s.charAt(i) != ' ' && s.charAt(i) != '\t')
> {code}
> 2) 
> [commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577]
> {code:java}
> isSuper ? toString(wt.getLowerBounds()) : toString(wt.getLowerBounds()));
> {code}
> It is strange that the parts of the ternary operator are same.
> These possible defect found by 
> [AppChecker|https://npo-echelon.ru/en/solutions/appchecker.php].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TAP5-2585) Expression Issues (CronExpression.java and GenericsUtils.java)

2017-10-18 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16209057#comment-16209057
 ] 

ASF subversion and git services commented on TAP5-2585:
---

Commit c152c38f74d0439db33a951e87bb8dda25753d45 in tapestry-5's branch 
refs/heads/master from [~jkemnade]
[ https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;h=c152c38 ]

TAP5-2585: Fix whitespace check


> Expression Issues (CronExpression.java and GenericsUtils.java)
> --
>
> Key: TAP5-2585
> URL: https://issues.apache.org/jira/browse/TAP5-2585
> Project: Tapestry 5
>  Issue Type: Bug
>  Components: tapestry-ioc
>Affects Versions: 5.4.3
>Reporter: AppChecker
>Assignee: Jochen Kemnade
>  Labels: appchecker
> Fix For: 5.5.0
>
>
> Hi
> Please look following fragments of source code:
> 1) 
> [tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937]
> {code:java}for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != 
> '\t'); i++)
> {code}
> Expression (s.charAt\(i) != ' ' || s.charAt\(i) != '\t') is always true.
> Probably, is should be:
> {code:java}
> (s.charAt(i) != ' ' && s.charAt(i) != '\t')
> {code}
> 2) 
> [commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577]
> {code:java}
> isSuper ? toString(wt.getLowerBounds()) : toString(wt.getLowerBounds()));
> {code}
> It is strange that the parts of the ternary operator are same.
> These possible defect found by 
> [AppChecker|https://npo-echelon.ru/en/solutions/appchecker.php].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[1/2] tapestry-5 git commit: TAP5-2585: Fix whitespace check

2017-10-18 Thread jkemnade
Repository: tapestry-5
Updated Branches:
  refs/heads/master 0fe1446f2 -> ef290f536


TAP5-2585: Fix whitespace check


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/c152c38f
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/c152c38f
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/c152c38f

Branch: refs/heads/master
Commit: c152c38f74d0439db33a951e87bb8dda25753d45
Parents: 0fe1446
Author: Jochen Kemnade 
Authored: Wed Oct 18 11:25:30 2017 +0200
Committer: Jochen Kemnade 
Committed: Wed Oct 18 11:25:30 2017 +0200

--
 .../tapestry5/ioc/internal/services/cron/CronExpression.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c152c38f/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
--
diff --git 
a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
 
b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
index 1a71ca9..82a0bff 100644
--- 
a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
+++ 
b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java
@@ -934,7 +934,7 @@ public class CronExpression implements Serializable
 
 protected int findNextWhiteSpace(int i, String s)
 {
-for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); 
i++)
+for (; i < s.length() && (s.charAt(i) != ' ' && s.charAt(i) != '\t'); 
i++)
 {
 ;
 }



[2/2] tapestry-5 git commit: TAP5-2585: remove useless ternary

2017-10-18 Thread jkemnade
TAP5-2585: remove useless ternary


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/ef290f53
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/ef290f53
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/ef290f53

Branch: refs/heads/master
Commit: ef290f5360dc89d5544171c1168c93e5f59c0e1e
Parents: c152c38
Author: Jochen Kemnade 
Authored: Wed Oct 18 11:28:00 2017 +0200
Committer: Jochen Kemnade 
Committed: Wed Oct 18 11:28:00 2017 +0200

--
 .../java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/ef290f53/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
--
diff --git 
a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
 
b/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
index bd834a5..9bf4d00 100644
--- 
a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
+++ 
b/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
@@ -574,7 +574,7 @@ public class GenericsUtils
 final boolean isSuper = wt.getLowerBounds().length > 0;
 return String.format("? %s %s",
 isSuper ? "super" : "extends",
-isSuper ? toString(wt.getLowerBounds()) : 
toString(wt.getLowerBounds()));
+toString(wt.getLowerBounds()));
 }
 
 static String toString(Type[] types)



[jira] [Closed] (TAP5-2585) Expression Issues (CronExpression.java and GenericsUtils.java)

2017-10-18 Thread Jochen Kemnade (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jochen Kemnade closed TAP5-2585.

   Resolution: Fixed
 Assignee: Jochen Kemnade
Fix Version/s: 5.5.0

Thanks.

> Expression Issues (CronExpression.java and GenericsUtils.java)
> --
>
> Key: TAP5-2585
> URL: https://issues.apache.org/jira/browse/TAP5-2585
> Project: Tapestry 5
>  Issue Type: Bug
>  Components: tapestry-ioc
>Affects Versions: 5.4.3
>Reporter: AppChecker
>Assignee: Jochen Kemnade
>  Labels: appchecker
> Fix For: 5.5.0
>
>
> Hi
> Please look following fragments of source code:
> 1) 
> [tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/cron/CronExpression.java#L937]
> {code:java}for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != 
> '\t'); i++)
> {code}
> Expression (s.charAt\(i) != ' ' || s.charAt\(i) != '\t') is always true.
> Probably, is should be:
> {code:java}
> (s.charAt(i) != ' ' && s.charAt(i) != '\t')
> {code}
> 2) 
> [commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577|https://github.com/apache/tapestry-5/blob/95a548ec488a3c09c16117a0e6f9d3ce28db0322/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java#L577]
> {code:java}
> isSuper ? toString(wt.getLowerBounds()) : toString(wt.getLowerBounds()));
> {code}
> It is strange that the parts of the ternary operator are same.
> These possible defect found by 
> [AppChecker|https://npo-echelon.ru/en/solutions/appchecker.php].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[tapestry-5] Git Push Summary

2017-10-18 Thread jkemnade
Repository: tapestry-5
Updated Tags:  refs/tags/5.5.0-alpha-7 [created] b58621fbf


tapestry-5 git commit: increment version number

2017-10-18 Thread jkemnade
Repository: tapestry-5
Updated Branches:
  refs/heads/master b58621fbf -> 0fe1446f2


increment version number


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/0fe1446f
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/0fe1446f
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/0fe1446f

Branch: refs/heads/master
Commit: 0fe1446f2d19ebe658b0d59ed88694eb3ad76b7c
Parents: b58621f
Author: Jochen Kemnade 
Authored: Wed Oct 18 09:29:00 2017 +0200
Committer: Jochen Kemnade 
Committed: Wed Oct 18 09:29:00 2017 +0200

--
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0fe1446f/build.gradle
--
diff --git a/build.gradle b/build.gradle
index b6db510..de23bb7 100755
--- a/build.gradle
+++ b/build.gradle
@@ -33,7 +33,7 @@ project.version = tapestryVersion()
 def tapestryVersion() {
 
 def major = "5.5.0"
-def minor = "-alpha-7"
+def minor = "-alpha-8"
 
 // When building on the CI server, make sure -SNAPSHOT is appended, as it 
is a nightly build.
 // When building normally, or for a release, no suffix is desired.



[jira] [Closed] (TAP5-2558) Lock contention in PlasticClassPool

2017-10-18 Thread Jochen Kemnade (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jochen Kemnade closed TAP5-2558.

   Resolution: Fixed
 Assignee: Jochen Kemnade
Fix Version/s: 5.5.0

> Lock contention in PlasticClassPool
> ---
>
> Key: TAP5-2558
> URL: https://issues.apache.org/jira/browse/TAP5-2558
> Project: Tapestry 5
>  Issue Type: Sub-task
>  Components: plastic
>Reporter: Michael Mikhulya
>Assignee: Jochen Kemnade
>  Labels: patch, performance
> Fix For: 5.5.0
>
> Attachments: 0002-reduce-lock-contention-during-page-loading-2.patch
>
>
> This is a subtask of TAP5-2545 (Reduce lock contention during page loading).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TAP5-2558) Lock contention in PlasticClassPool

2017-10-18 Thread Jochen Kemnade (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16208857#comment-16208857
 ] 

Jochen Kemnade commented on TAP5-2558:
--

Patch applied, thanks Michael.

> Lock contention in PlasticClassPool
> ---
>
> Key: TAP5-2558
> URL: https://issues.apache.org/jira/browse/TAP5-2558
> Project: Tapestry 5
>  Issue Type: Sub-task
>  Components: plastic
>Reporter: Michael Mikhulya
>Assignee: Jochen Kemnade
>  Labels: patch, performance
> Fix For: 5.5.0
>
> Attachments: 0002-reduce-lock-contention-during-page-loading-2.patch
>
>
> This is a subtask of TAP5-2545 (Reduce lock contention during page loading).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


tapestry-5 git commit: reduce lock-contention during page loading #2

2017-10-18 Thread jkemnade
Repository: tapestry-5
Updated Branches:
  refs/heads/master 1c42cceef -> b58621fbf


reduce lock-contention during page loading #2


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/b58621fb
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/b58621fb
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/b58621fb

Branch: refs/heads/master
Commit: b58621fbf8a01e9f7fea2c19881b83f5d6de651f
Parents: 1c42cce
Author: Michael Mikhulya 
Authored: Tue Jul 19 11:55:30 2016 +0300
Committer: Jochen Kemnade 
Committed: Wed Oct 18 08:11:34 2017 +0200

--
 .../internal/plastic/PlasticClassPool.java  | 63 ++--
 .../internal/plastic/PlasticInternalUtils.java  |  7 +++
 2 files changed, 38 insertions(+), 32 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b58621fb/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
--
diff --git 
a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
 
b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
index 3cf1700..dfbb8cf 100644
--- 
a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
+++ 
b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
@@ -56,7 +56,7 @@ public class PlasticClassPool implements ClassLoaderDelegate, 
Opcodes, PlasticCl
  * Maps class names to instantiators for that class name.
  * Synchronized on the loader.
  */
-private final Map instantiators = 
PlasticInternalUtils.newMap();
+private final Map instantiators = 
PlasticInternalUtils.newConcurrentMap();
 
 private final InheritanceData emptyInheritanceData = new 
InheritanceData(null);
 
@@ -599,50 +599,49 @@ public class PlasticClassPool implements 
ClassLoaderDelegate, Opcodes, PlasticCl
 
 public ClassInstantiator getClassInstantiator(String className)
 {
-synchronized (loader)
+ClassInstantiator result = instantiators.get(className);
+
+if (result == null)
 {
-if (!instantiators.containsKey(className))
+try
 {
-try
-{
-loader.loadClass(className);
-} catch (ClassNotFoundException ex)
-{
-throw new RuntimeException(ex);
-}
+loader.loadClass(className);
+result = instantiators.get(className);
+} catch (ClassNotFoundException ex)
+{
+throw new RuntimeException(ex);
 }
+}
 
-ClassInstantiator result = instantiators.get(className);
 
-if (result == null)
-{
-// TODO: Verify that the problem is incorrect package, and not 
any other failure.
+if (result != null)
+{
+return result;
+}
 
-StringBuilder b = new StringBuilder();
-b.append("Class '")
-.append(className)
-.append("' is not a transformed class. Transformed 
classes should be in one of the following packages: ");
+// TODO: Verify that the problem is incorrect package, and not any 
other failure.
 
-String sep = "";
+StringBuilder b = new StringBuilder();
+b.append("Class '")
+.append(className)
+.append("' is not a transformed class. Transformed classes 
should be in one of the following packages: ");
 
-List names = new ArrayList(controlledPackages);
-Collections.sort(names);
+String sep = "";
 
-for (String name : names)
-{
-b.append(sep);
-b.append(name);
+List names = new ArrayList(controlledPackages);
+Collections.sort(names);
 
-sep = ", ";
-}
+for (String name : names)
+{
+b.append(sep);
+b.append(name);
 
-String message = b.append('.').toString();
+sep = ", ";
+}
 
-throw new IllegalArgumentException(message);
-}
+String message = b.append('.').toString();
 
-return result;
-}
+throw new IllegalArgumentException(message);
 }
 
 TypeCategory getTypeCategory(String typeName)