Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util
In directory james.mmbase.org:/tmp/cvs-serv11645

Modified Files:
      Tag: MMBase-1_8
        BasicBacking.java ContextContainer.java 
        PageContextBacking.java StandaloneContextContainer.java 
Log Message:
more fixes related to MMB-1730


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util
See also: http://www.mmbase.org/jira/browse/MMB-1730


Index: BasicBacking.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/BasicBacking.java,v
retrieving revision 1.7.2.3
retrieving revision 1.7.2.4
diff -u -b -r1.7.2.3 -r1.7.2.4
--- BasicBacking.java   16 May 2007 23:22:56 -0000      1.7.2.3
+++ BasicBacking.java   7 Oct 2008 17:22:41 -0000       1.7.2.4
@@ -28,7 +28,7 @@
 
  * @author Michiel Meeuwissen
  * @since MMBase-1.8
- * @version $Id: BasicBacking.java,v 1.7.2.3 2007/05/16 23:22:56 michiel Exp $
+ * @version $Id: BasicBacking.java,v 1.7.2.4 2008/10/07 17:22:41 michiel Exp $
  */
 
 public  class BasicBacking extends AbstractMap  implements Backing {
@@ -45,14 +45,14 @@
     private final Map b = new HashMap(); // the actual backing.
 
     private final boolean isELIgnored;
-    private  PageContext pageContext;
+    private transient PageContext pageContext;
 
     /**
      * @param pc The page-context to which variables must be reflected or 
<code>null</code> if this must not happen.
      */
     public BasicBacking(PageContext pc, boolean ignoreEL) {
         pageContext = pc;
-        isELIgnored = ignoreEL || 
"true".equals(pageContext.getServletContext().getInitParameter(ContextTag.ISELIGNORED_PARAM));
+        isELIgnored = ignoreEL || pageContext == null || 
"true".equals(pageContext.getServletContext().getInitParameter(ContextTag.ISELIGNORED_PARAM));
         if (! isELIgnored) {
             originalPageContextValues = new HashMap();
             pageContext.setAttribute(PAGECONTEXT_KEY + uniqueNumber, 
originalPageContextValues);
@@ -145,12 +145,14 @@
             originalPageContextValues.put((String) key, 
pageContext.getAttribute((String) key, SCOPE));
         }
         
+        if (pageContext != null) {
         if (value != null) {
             pageContext.setAttribute((String) key, Casting.wrap(value, 
(CharTransformer) pageContext.findAttribute(ContentTag.ESCAPER_KEY)), SCOPE);
         } else {
             pageContext.removeAttribute((String) key, SCOPE);
         }
     }
+    }
     public Object put(Object key, Object value) {
         mirrorPut(key, value);
         return b.put(key, value);
@@ -170,7 +172,7 @@
 
         
     void release() {
-        if (originalPageContextValues != null) {
+        if (originalPageContextValues != null && pageContext != null) {
             //log.debug("Restoring pageContext with " + 
originalPageContextValues);
             // restore the pageContext
             Iterator i = originalPageContextValues.entrySet().iterator();


Index: ContextContainer.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/ContextContainer.java,v
retrieving revision 1.53.2.2
retrieving revision 1.53.2.3
diff -u -b -r1.53.2.2 -r1.53.2.3
--- ContextContainer.java       21 Nov 2006 20:39:56 -0000      1.53.2.2
+++ ContextContainer.java       7 Oct 2008 17:22:41 -0000       1.53.2.3
@@ -25,7 +25,7 @@
  * there is searched for HashMaps in the HashMap.
  *
  * @author Michiel Meeuwissen
- * @version $Id: ContextContainer.java,v 1.53.2.2 2006/11/21 20:39:56 michiel 
Exp $
+ * @version $Id: ContextContainer.java,v 1.53.2.3 2008/10/07 17:22:41 michiel 
Exp $
  **/
 
 public abstract class ContextContainer extends AbstractMap implements Map {
@@ -112,7 +112,7 @@
      *
      * @since MMBase-1.8
      */
-    protected abstract Backing getBacking();
+    public abstract Backing getBacking();
 
 
     public void release(PageContext pc, ContextContainer p) {


Index: PageContextBacking.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/PageContextBacking.java,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -b -r1.11.2.1 -r1.11.2.2
--- PageContextBacking.java     21 Nov 2006 20:39:56 -0000      1.11.2.1
+++ PageContextBacking.java     7 Oct 2008 17:22:41 -0000       1.11.2.2
@@ -26,7 +26,7 @@
 
  * @author Michiel Meeuwissen
  * @since MMBase-1.8
- * @version $Id: PageContextBacking.java,v 1.11.2.1 2006/11/21 20:39:56 
michiel Exp $
+ * @version $Id: PageContextBacking.java,v 1.11.2.2 2008/10/07 17:22:41 
michiel Exp $
  */
 
 public  class PageContextBacking extends AbstractMap implements Backing {
@@ -35,7 +35,7 @@
 
     private static final int SCOPE = PageContext.PAGE_SCOPE;
 
-    private final PageContext pageContext;
+    private final transient PageContext pageContext;
 
     // We also want to store null, pageContext cannot contain those.
     private final Set nulls = new HashSet();
@@ -146,9 +146,15 @@
         return pageContext.findAttribute((String) key);
     }
     public Object getOriginal(Object key) {
+        if (key == null) return null; // pageContext cannot accept null keys
         Object value = unwrapped.get(key);
         if (value != null) return value;
+        if (pageContext.getRequest() == null) throw new 
IllegalArgumentException("PageContext " + pageContext + " has no request");
+        try {
         return pageContext.findAttribute((String) key);
+        } catch (Exception e) {
+            throw new RuntimeException(" for " + (key == null ? "NULL" : 
(key.getClass() + ":" + key)) + "  " + e.getMessage() , e);
+        }
     }
     public boolean containsKey(Object key) {
         return pageContext.findAttribute((String) key) != null ||  
nulls.contains(key);
@@ -165,7 +171,7 @@
     }
 
     public String toString() {
-        return "PAGECONTEXT BACKING " + super.toString();
+        return "PAGECONTEXT BACKING " + pageContext + " " + super.toString();
     }
 
 }


Index: StandaloneContextContainer.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/StandaloneContextContainer.java,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -b -r1.11.2.1 -r1.11.2.2
--- StandaloneContextContainer.java     22 Nov 2006 14:52:10 -0000      1.11.2.1
+++ StandaloneContextContainer.java     7 Oct 2008 17:22:41 -0000       1.11.2.2
@@ -16,7 +16,7 @@
  * This ContextContainer provides its own 'backing', it is used as 
'subcontext' in other contextes.
  *
  * @author Michiel Meeuwissen
- * @version $Id: StandaloneContextContainer.java,v 1.11.2.1 2006/11/22 
14:52:10 michiel Exp $
+ * @version $Id: StandaloneContextContainer.java,v 1.11.2.2 2008/10/07 
17:22:41 michiel Exp $
  * @since MMBase-1.8
  **/
 
@@ -40,7 +40,7 @@
     }
 
 
-    protected  Backing getBacking() {
+    public  Backing getBacking() {
         return backing;        
     }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to