Author: apetrelli
Date: Sun Dec  6 18:02:10 2009
New Revision: 887725

URL: http://svn.apache.org/viewvc?rev=887725&view=rev
Log:
TILESSB-16
Added a specific map for session scope under JSP.
Fixed CompleteAutoloadTilesContainerFactory.
Fixed getting the current locale in DefaultLocaleResolver.

Added:
    
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
   (with props)
Modified:
    
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java
    
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
    
tiles/sandbox/trunk/tiles3/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java?rev=887725&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
 Sun Dec  6 18:02:10 2009
@@ -0,0 +1,273 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.jsp.context;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.PageContext;
+
+import org.apache.tiles.request.util.MapEntry;
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet request
+ * attributes.</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+final class JspSessionScopeMap implements Map<String, Object> {
+
+    /**
+     * The request object to use.
+     */
+    private PageContext request = null;
+
+    private static final int scopeId = PageContext.SESSION_SCOPE;
+
+    /**
+     * Constructor.
+     *
+     * @param request The request object to use.
+     */
+    public JspSessionScopeMap(PageContext pageContext) {
+        this.request = pageContext;
+    }
+
+
+    /** {...@inheritdoc} */
+    public void clear() {
+       if (request.getSession() == null) {
+               return;
+       }
+        Iterator<String> keys = keySet().iterator();
+        while (keys.hasNext()) {
+            request.removeAttribute(keys.next(), scopeId);
+        }
+    }
+
+
+    /** {...@inheritdoc} */
+    public boolean containsKey(Object key) {
+       if (request.getSession() == null) {
+               return false;
+       }
+        return (request.getAttribute(key(key), scopeId) != null);
+    }
+
+
+    /** {...@inheritdoc} */
+    public boolean containsValue(Object value) {
+       if (request.getSession() == null) {
+               return false;
+       }
+        if (value == null) {
+            return (false);
+        }
+        Enumeration<String> keys = request.getAttributeNamesInScope(scopeId);
+        while (keys.hasMoreElements()) {
+            Object next = request.getAttribute(keys.nextElement(), scopeId);
+            if (next == value) {
+                return (true);
+            }
+        }
+        return (false);
+    }
+
+
+    /** {...@inheritdoc} */
+    public Set<Map.Entry<String, Object>> entrySet() {
+        Set<Map.Entry<String, Object>> set = new HashSet<Map.Entry<String, 
Object>>();
+       if (request.getSession() != null) {
+               Enumeration<String> keys = 
request.getAttributeNamesInScope(scopeId);
+               String key;
+               while (keys.hasMoreElements()) {
+                   key = keys.nextElement();
+                   set.add(new MapEntry<String, Object>(key,
+                           request.getAttribute(key, scopeId), true));
+               }
+       }
+        return (set);
+    }
+
+
+    /** {...@inheritdoc} */
+    @Override
+    public boolean equals(Object o) {
+        PageContext otherRequest = ((JspSessionScopeMap) o).request;
+        if (otherRequest.getSession() == null) {
+               return request.getSession() == null;
+        } else if (request.getSession() == null) {
+               return false;
+        }
+        boolean retValue = true;
+        for (Enumeration<String> attribs = request
+                .getAttributeNamesInScope(scopeId); attribs
+                .hasMoreElements()
+                && retValue;) {
+            String attributeName = attribs.nextElement();
+            retValue = request.getAttribute(attributeName, scopeId).equals(
+                    otherRequest.getAttribute(attributeName));
+        }
+
+        return retValue;
+    }
+
+
+    /** {...@inheritdoc} */
+    public Object get(Object key) {
+       if (request.getSession() == null) {
+               return null;
+       }
+        return (request.getAttribute(key(key), scopeId));
+    }
+
+
+    /** {...@inheritdoc} */
+    @Override
+    public int hashCode() {
+       if (request.getSession() == null) {
+               return 0;
+       }
+        return (request.hashCode()) + scopeId;
+    }
+
+
+    /** {...@inheritdoc} */
+    public boolean isEmpty() {
+       if (request.getSession() == null) {
+               return true;
+       }
+        return (size() < 1);
+    }
+
+
+    /** {...@inheritdoc} */
+    public Set<String> keySet() {
+        Set<String> set = new HashSet<String>();
+       if (request.getSession() != null) {
+               Enumeration<String> keys = 
request.getAttributeNamesInScope(scopeId);
+               while (keys.hasMoreElements()) {
+                   set.add(keys.nextElement());
+               }
+       }
+        return (set);
+    }
+
+
+    /** {...@inheritdoc} */
+    public Object put(String key, Object value) {
+       forceSessionCreation();
+        if (value == null) {
+            return (remove(key));
+        }
+        String skey = key(key);
+        Object previous = request.getAttribute(skey, scopeId);
+        request.setAttribute(skey, value, scopeId);
+        return (previous);
+    }
+
+
+
+    /** {...@inheritdoc} */
+    public void putAll(Map<? extends String, ? extends Object> map) {
+       forceSessionCreation();
+        Iterator<? extends String> keys = map.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = keys.next();
+            request.setAttribute(key, map.get(key), scopeId);
+        }
+    }
+
+
+    /** {...@inheritdoc} */
+    public Object remove(Object key) {
+       if (request.getSession() == null) {
+               return null;
+       }
+        String skey = key(key);
+        Object previous = request.getAttribute(skey, scopeId);
+        request.removeAttribute(skey, scopeId);
+        return (previous);
+    }
+
+
+    /** {...@inheritdoc} */
+    public int size() {
+        int n = 0;
+       if (request.getSession() != null) {
+               Enumeration<String> keys = 
request.getAttributeNamesInScope(scopeId);
+               while (keys.hasMoreElements()) {
+                   keys.nextElement();
+                   n++;
+               }
+       }
+        return (n);
+    }
+
+
+    /** {...@inheritdoc} */
+    public Collection<Object> values() {
+        List<Object> list = new ArrayList<Object>();
+        if (request.getSession() != null) {
+               Enumeration<String> keys = 
request.getAttributeNamesInScope(scopeId);
+               while (keys.hasMoreElements()) {
+                   list.add(request.getAttribute(keys.nextElement()));
+               }
+        }
+        return (list);
+    }
+
+
+    /**
+     * Returns the string representation of the key.
+     *
+     * @param key The key.
+     * @return The string representation of the key.
+     * @throws IllegalArgumentException If the key is <code>null</code>.
+     */
+    private String key(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException();
+        } else if (key instanceof String) {
+            return ((String) key);
+        } else {
+            return (key.toString());
+        }
+    }
+
+
+       private void forceSessionCreation() {
+               ServletRequest servletRequest = request.getRequest();
+       if (servletRequest instanceof HttpServletRequest) {
+                       HttpServletRequest httpRequest = (HttpServletRequest) 
servletRequest;
+                       httpRequest.getSession();
+               }
+       }
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspSessionScopeMap.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java?rev=887725&r1=887724&r2=887725&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java
 Sun Dec  6 18:02:10 2009
@@ -44,8 +44,7 @@
  * @version $Rev$ $Date$
  */
 @ScopeOrder({"page", "request", "session", "application"})
-public class JspTilesRequestContext extends TilesRequestContextWrapper
-    implements Request {
+public class JspTilesRequestContext extends TilesRequestContextWrapper {
 
     /**
      * The current page context.
@@ -156,7 +155,7 @@
 
     public Map<String, Object> getSessionScope() {
         if ((sessionScope == null) && (pageContext != null)) {
-            sessionScope = new JspScopeMap(pageContext, 
PageContext.SESSION_SCOPE);
+            sessionScope = new JspSessionScopeMap(pageContext);
         }
         return (sessionScope);
     }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java?rev=887725&r1=887724&r2=887725&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
 Sun Dec  6 18:02:10 2009
@@ -44,7 +44,7 @@
     /** {...@inheritdoc} */
     public Locale resolveLocale(Request request) {
         Locale retValue = null;
-        Map<String, Object> session = request.getContext("request");
+        Map<String, Object> session = request.getContext("session");
         if (session != null) {
             retValue = (Locale) session.get(DefaultLocaleResolver.LOCALE_KEY);
         }

Modified: 
tiles/sandbox/trunk/tiles3/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java?rev=887725&r1=887724&r2=887725&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
 (original)
+++ 
tiles/sandbox/trunk/tiles3/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
 Sun Dec  6 18:02:10 2009
@@ -65,6 +65,7 @@
 import org.apache.tiles.impl.mgmt.CachingTilesContainer;
 import org.apache.tiles.locale.LocaleResolver;
 import org.apache.tiles.mvel.MVELAttributeEvaluator;
+import org.apache.tiles.mvel.ScopeVariableResolverFactory;
 import org.apache.tiles.mvel.TilesContextBeanVariableResolverFactory;
 import org.apache.tiles.mvel.TilesContextVariableResolverFactory;
 import org.apache.tiles.ognl.AnyScopePropertyAccessor;
@@ -288,9 +289,12 @@
      */
     private MVELAttributeEvaluator createMVELEvaluator() {
         TilesRequestContextHolder requestHolder = new 
TilesRequestContextHolder();
-        VariableResolverFactory variableResolverFactory = new 
TilesContextVariableResolverFactory(
+        VariableResolverFactory variableResolverFactory = new 
ScopeVariableResolverFactory(
                 requestHolder);
         variableResolverFactory
+                .setNextFactory(new TilesContextVariableResolverFactory(
+                        requestHolder));
+        variableResolverFactory
                 .setNextFactory(new TilesContextBeanVariableResolverFactory(
                         requestHolder));
         MVELAttributeEvaluator mvelEvaluator = new 
MVELAttributeEvaluator(requestHolder,


Reply via email to