Author: fmeschbe
Date: Thu Aug 12 18:15:41 2010
New Revision: 984893
URL: http://svn.apache.org/viewvc?rev=984893&view=rev
Log:
SLING-1649 Implement the release() method on the tag handlers to clear the
fields to null once the tag handlers are released but kept in a pool.
Modified:
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/AbstractDispatcherTagHandler.java
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/DefineObjectsTag.java
Modified:
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/AbstractDispatcherTagHandler.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/AbstractDispatcherTagHandler.java?rev=984893&r1=984892&r2=984893&view=diff
==============================================================================
---
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/AbstractDispatcherTagHandler.java
(original)
+++
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/AbstractDispatcherTagHandler.java
Thu Aug 12 18:15:41 2010
@@ -148,14 +148,7 @@ public abstract class AbstractDispatcher
public void setPageContext(PageContext pageContext) {
super.setPageContext(pageContext);
-
- // init local fields, since tag might be reused
- resource = null;
- resourceType = null;
- replaceSelectors = null;
- addSelectors = null;
- replaceSuffix = null;
- path = null;
+ clear();
}
public void setResource(Resource rsrc) {
@@ -201,4 +194,19 @@ public abstract class AbstractDispatcher
getResourceType());
}
}
+
+ @Override
+ public void release() {
+ clear();
+ super.release();
+ }
+
+ private void clear() {
+ resource = null;
+ resourceType = null;
+ replaceSelectors = null;
+ addSelectors = null;
+ replaceSuffix = null;
+ path = null;
+ }
}
Modified:
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/DefineObjectsTag.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/DefineObjectsTag.java?rev=984893&r1=984892&r2=984893&view=diff
==============================================================================
---
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/DefineObjectsTag.java
(original)
+++
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/DefineObjectsTag.java
Thu Aug 12 18:15:41 2010
@@ -16,6 +16,7 @@
*/
package org.apache.sling.scripting.jsp.taglib;
+import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.sling.api.resource.Resource;
@@ -146,6 +147,12 @@ public class DefineObjectsTag extends Ta
// --------------------------< setter methonds
>----------------------------
+ @Override
+ public void setPageContext(PageContext pageContext) {
+ super.setPageContext(pageContext);
+ clear();
+ }
+
public void setRequestName(String requestName) {
this.requestName = requestName;
}
@@ -177,4 +184,35 @@ public class DefineObjectsTag extends Ta
public void setBindingsName(String name) {
this.bindingsName = name;
}
+
+ @Override
+ public void release() {
+ clear();
+ super.release();
+ }
+
+ private void clear() {
+
+ // remove all attributes set on the page context to cleanup
+ if (pageContext != null) {
+ pageContext.removeAttribute(requestName);
+ pageContext.removeAttribute(responseName);
+ pageContext.removeAttribute(resourceName);
+ pageContext.removeAttribute(resourceResolverName);
+ pageContext.removeAttribute(slingName);
+ pageContext.removeAttribute(logName);
+ pageContext.removeAttribute(nodeName);
+ pageContext.removeAttribute(bindingsName);
+ }
+
+ // reset fields
+ requestName = DEFAULT_REQUEST_NAME;
+ responseName = DEFAULT_RESPONSE_NAME;
+ resourceName = DEFAULT_RESOURCE_NAME;
+ nodeName = DEFAULT_NODE_NAME;
+ slingName = DEFAULT_SLING_NAME;
+ logName = DEFAULT_LOG_NAME;
+ bindingsName = DEFAULT_BINDINGS_NAME;
+ resourceResolverName = DEFAULT_RESOURCE_RESOLVER_NAME;
+ }
}