Author: remy.maucherat(a)jboss.com
Date: 2011-04-06 18:20:35 -0400 (Wed, 06 Apr 2011)
New Revision: 1696
Modified:
trunk/java/org/apache/jasper/compiler/Generator.java
trunk/java/org/apache/jasper/runtime/TagHandlerPool.java
Log:
- Improve instance manager use with tags.
- Since the tag class is already loaded, use it rather than reloading it all the time.
- If the instance manager is enabled for tags, use it for destroy without having to also
set the inject tags flag.
Modified: trunk/java/org/apache/jasper/compiler/Generator.java
===================================================================
--- trunk/java/org/apache/jasper/compiler/Generator.java 2011-04-06 16:22:52 UTC (rev
1695)
+++ trunk/java/org/apache/jasper/compiler/Generator.java 2011-04-06 22:20:35 UTC (rev
1696)
@@ -2312,9 +2312,9 @@
out.print(tagHandlerClassName);
out.print(")");
out.print(VAR_INSTANCEMANAGER);
- out.print(".newInstance(\"");
+ out.print(".newInstance(");
out.print(tagHandlerClassName);
- out.println("\", this.getClass().getClassLoader());");
+ out.println(".class);");
} else {
out.printin(tagHandlerClassName);
out.print(" ");
@@ -2324,23 +2324,23 @@
out.print(tagHandlerClassName);
out.println("());");
if (Constants.INJECT_TAGS) {
+ out.printin(VAR_INSTANCEMANAGER);
+ out.print(".newInstance(");
+ out.print(tagHandlerVar);
+ out.println(");");
+ }
+ }
+ }
+
+ private void writeDestroyInstance(String tagHandlerVar) {
+ if (Constants.INJECT_TAGS || Constants.USE_INSTANCE_MANAGER_FOR_TAGS) {
out.printin(VAR_INSTANCEMANAGER);
- out.print(".newInstance(");
+ out.print(".destroyInstance(");
out.print(tagHandlerVar);
out.println(");");
}
}
- }
- private void writeDestroyInstance(String tagHandlerVar) {
- if (Constants.INJECT_TAGS) {
- out.printin(VAR_INSTANCEMANAGER);
- out.print(".destroyInstance(");
- out.print(tagHandlerVar);
- out.println(");");
- }
- }
-
private void generateCustomEnd(Node.CustomTag n, String tagHandlerVar,
String tagEvalVar, String tagPushBodyCountVar) {
Modified: trunk/java/org/apache/jasper/runtime/TagHandlerPool.java
===================================================================
--- trunk/java/org/apache/jasper/runtime/TagHandlerPool.java 2011-04-06 16:22:52 UTC (rev
1695)
+++ trunk/java/org/apache/jasper/runtime/TagHandlerPool.java 2011-04-06 22:20:35 UTC (rev
1696)
@@ -122,7 +122,7 @@
// wait for us to construct a tag for this thread.
try {
if (Constants.USE_INSTANCE_MANAGER_FOR_TAGS) {
- return (Tag) instanceManager.newInstance(handlerClass.getName(),
handlerClass.getClassLoader());
+ return (Tag) instanceManager.newInstance(handlerClass);
} else {
Tag instance = (Tag) handlerClass.newInstance();
if (Constants.INJECT_TAGS) {
@@ -151,7 +151,7 @@
}
// There is no need for other threads to wait for us to release
handler.release();
- if (Constants.INJECT_TAGS) {
+ if (Constants.INJECT_TAGS || Constants.USE_INSTANCE_MANAGER_FOR_TAGS) {
try {
instanceManager.destroyInstance(handler);
} catch (Exception e) {
@@ -168,7 +168,7 @@
public synchronized void release() {
for (int i = current; i >= 0; i--) {
handlers[i].release();
- if (Constants.INJECT_TAGS) {
+ if (Constants.INJECT_TAGS || Constants.USE_INSTANCE_MANAGER_FOR_TAGS) {
try {
instanceManager.destroyInstance(handlers[i]);
} catch (Exception e) {
Show replies by date