You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2009/11/25 11:52:55 UTC
svn commit: r884031 [1/3] - in /tiles/sandbox/trunk:
tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/
tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/
tiles-request/tiles-request-api/src/main/java/org...
Author: apetrelli
Date: Wed Nov 25 10:52:52 2009
New Revision: 884031
URL: http://svn.apache.org/viewvc?rev=884031&view=rev
Log:
TILESSB-16
Added a "getContext" method and refactored all the code.
The build compiles but tests do not pass!
Added:
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java
- copied, changed from r882693, tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextUtil.java
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java (with props)
Removed:
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextUtil.java
Modified:
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/NotAvailableFeatureException.java
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/Request.java
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/TilesRequestContextWrapper.java
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspTilesRequestContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java
tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletSessionScopeMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletTilesRequestContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletUtil.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletTilesRequestContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletTilesRequestContextTest.java
tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityTilesRequestContext.java
tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/DefinitionManager.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/startup/AbstractTilesInitializer.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/definition/MockOnlyLocaleTilesContext.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
tiles/sandbox/trunk/tiles3/tiles-core/src/test/java/org/apache/tiles/startup/AbstractTilesInitializerTest.java
tiles/sandbox/trunk/tiles3/tiles-el/src/main/java/org/apache/tiles/el/TilesContextBeanELResolver.java
tiles/sandbox/trunk/tiles3/tiles-el/src/test/java/org/apache/tiles/el/ELAttributeEvaluatorTest.java
tiles/sandbox/trunk/tiles3/tiles-el/src/test/java/org/apache/tiles/el/TilesContextBeanELResolverTest.java
tiles/sandbox/trunk/tiles3/tiles-el/src/test/java/org/apache/tiles/el/TilesContextELResolverTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/template/ImportAttributeFMModel.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/AddAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/AddListAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/DefinitionFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/GetAsStringFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/ImportAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/InsertAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/InsertDefinitionFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/InsertTemplateFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/PutListAttributeFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/template/SetCurrentContainerFMModelTest.java
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/ImportAttributeTag.java
tiles/sandbox/trunk/tiles3/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/UseAttributeTag.java
tiles/sandbox/trunk/tiles3/tiles-mvel/src/main/java/org/apache/tiles/mvel/TilesContextBeanVariableResolverFactory.java
tiles/sandbox/trunk/tiles3/tiles-mvel/src/test/java/org/apache/tiles/mvel/MVELAttributeEvaluatorTest.java
tiles/sandbox/trunk/tiles3/tiles-mvel/src/test/java/org/apache/tiles/mvel/TilesContextBeanVariableResolverFactoryTest.java
tiles/sandbox/trunk/tiles3/tiles-mvel/src/test/java/org/apache/tiles/mvel/TilesContextVariableResolverFactoryTest.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/main/java/org/apache/tiles/ognl/RequestScopeNestedObjectExtractor.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/main/java/org/apache/tiles/ognl/SessionScopeNestedObjectExtractor.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/main/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactory.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/test/java/org/apache/tiles/ognl/OGNLAttributeEvaluatorTest.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/test/java/org/apache/tiles/ognl/RequestScopeNestedObjectExtractorTest.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/test/java/org/apache/tiles/ognl/SessionScopeNestedObjectExtractorTest.java
tiles/sandbox/trunk/tiles3/tiles-ognl/src/test/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactoryTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/ComposeStackUtil.java
tiles/sandbox/trunk/tiles3/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/AddAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/AddListAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/DefinitionModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/GetAsStringModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertDefinitionModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/InsertTemplateModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/PutListAttributeModelTest.java
tiles/sandbox/trunk/tiles3/tiles-template/src/test/java/org/apache/tiles/template/SetCurrentContainerModelTest.java
tiles/sandbox/trunk/tiles3/tiles-test-pom/tiles-test/src/main/java/org/apache/tiles/test/preparer/RequestSettingViewPreparer.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/main/java/org/apache/tiles/velocity/template/ImportAttributeVModel.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/AddAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/AddListAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/DefinitionVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/GetAsStringVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/ImportAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/InsertAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/InsertDefinitionVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/InsertTemplateVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/PutListAttributeVModelTest.java
tiles/sandbox/trunk/tiles3/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/VelocityStyleTilesToolTest.java
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,26 @@
+package org.apache.tiles.request;
+
+import java.util.Map;
+
+import org.apache.tiles.request.scope.ContextResolver;
+import org.apache.tiles.request.util.ApplicationAccess;
+
+public abstract class AbstractRequest implements Request{
+
+ private ApplicationContext applicationContext;
+
+ public AbstractRequest(ApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ @Override
+ public ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ @Override
+ public Map<String, Object> getContext(String scope) {
+ ContextResolver resolver = ApplicationAccess.getContextResolver(applicationContext);
+ return resolver.getContext(this, scope);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractRequest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/NotAvailableFeatureException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/NotAvailableFeatureException.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/NotAvailableFeatureException.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/NotAvailableFeatureException.java Wed Nov 25 10:52:52 2009
@@ -28,7 +28,7 @@
* @version $Rev$ $Date$
* @since 2.1.4
*/
-public class NotAvailableFeatureException extends RuntimeException {
+public class NotAvailableFeatureException extends RequestException {
/**
* Constructor.
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/Request.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/Request.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/Request.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/Request.java Wed Nov 25 10:52:52 2009
@@ -53,21 +53,7 @@
*/
Map<String, String[]> getHeaderValues();
- /**
- * Return a mutable Map that maps request scope attribute names to their
- * values.
- *
- * @return The request scope map.
- */
- Map<String, Object> getRequestScope();
-
- /**
- * Return a mutable Map that maps session scope attribute names to their
- * values.
- *
- * @return The request scope map.
- */
- Map<String, Object> getSessionScope();
+ Map<String, Object> getContext(String scope);
/**
* Returns the associated application context.
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,20 @@
+package org.apache.tiles.request;
+
+public class RequestException extends RuntimeException {
+
+ public RequestException() {
+ }
+
+ public RequestException(String message) {
+ super(message);
+ }
+
+ public RequestException(Throwable cause) {
+ super(cause);
+ }
+
+ public RequestException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,10 @@
+package org.apache.tiles.request.scope;
+
+import java.util.Map;
+
+import org.apache.tiles.request.Request;
+
+public interface ContextResolver {
+
+ public Map<String, Object> getContext(Request request, String scope);
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ContextResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,22 @@
+package org.apache.tiles.request.scope;
+
+import org.apache.tiles.request.RequestException;
+
+public class NoSuchScopeException extends RequestException {
+
+ public NoSuchScopeException() {
+ }
+
+ public NoSuchScopeException(String message) {
+ super(message);
+ }
+
+ public NoSuchScopeException(Throwable cause) {
+ super(cause);
+ }
+
+ public NoSuchScopeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/NoSuchScopeException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,39 @@
+package org.apache.tiles.request.scope;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.apache.tiles.request.Request;
+import org.apache.tiles.request.util.TilesRequestContextWrapper;
+
+public class ReflectionContextResolver implements ContextResolver {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Map<String, Object> getContext(Request request, String scope) {
+ String methodName = "get" + Character.toUpperCase(scope.charAt(0))
+ + scope.substring(1) + "Scope";
+ Method method;
+ try {
+ method = request.getClass().getMethod(methodName);
+ } catch (NoSuchMethodException e) {
+ if (request instanceof TilesRequestContextWrapper) {
+ TilesRequestContextWrapper wrapper = (TilesRequestContextWrapper) request;
+ return getContext(wrapper.getWrappedRequest(), scope);
+ }
+ throw new NoSuchScopeException("No accessor method for '" + scope
+ + "' scope.", e);
+ }
+ try {
+ return (Map<String, Object>) method.invoke(request);
+ } catch (IllegalAccessException e) {
+ throw new NoSuchScopeException("No accessible method for '" + scope
+ + "' scope.", e);
+ } catch (InvocationTargetException e) {
+ throw new NoSuchScopeException(
+ "Exception during execution of accessor method for '"
+ + scope + "' scope.", e);
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java (from r882693, tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextUtil.java)
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java?p2=tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java&p1=tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextUtil.java&r1=882693&r2=884031&rev=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextUtil.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java Wed Nov 25 10:52:52 2009
@@ -1,17 +1,33 @@
package org.apache.tiles.request.util;
import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.scope.ContextResolver;
-public final class ApplicationContextUtil {
+public final class ApplicationAccess {
public static final String APPLICATION_CONTEXT_ATTRIBUTE =
ApplicationContext.class.getName() + ".ATTRIBUTE";
- private ApplicationContextUtil() {
+ public static final String CONTEXT_RESOLVER_ATTRIBUTE =
+ ContextResolver.class.getName() + ".ATTRIBUTE";
+
+ private ApplicationAccess() {
}
public static void register(ApplicationContext applicationContext) {
applicationContext.getApplicationScope().put(
APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
}
+
+ public static void registerContextResolver(ContextResolver contextResolver,
+ ApplicationContext applicationContext) {
+ applicationContext.getApplicationScope().put(
+ CONTEXT_RESOLVER_ATTRIBUTE, contextResolver);
+ }
+
+ public static ContextResolver getContextResolver(
+ ApplicationContext applicationContext) {
+ return (ContextResolver) applicationContext.getApplicationScope().get(
+ CONTEXT_RESOLVER_ATTRIBUTE);
+ }
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/TilesRequestContextWrapper.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/TilesRequestContextWrapper.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/TilesRequestContextWrapper.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/TilesRequestContextWrapper.java Wed Nov 25 10:52:52 2009
@@ -73,14 +73,9 @@
return context.getHeaderValues();
}
- /** {@inheritDoc} */
- public Map<String, Object> getRequestScope() {
- return context.getRequestScope();
- }
-
- /** {@inheritDoc} */
- public Map<String, Object> getSessionScope() {
- return context.getSessionScope();
+ @Override
+ public Map<String, Object> getContext(String scope) {
+ return context.getContext(scope);
}
/** {@inheritDoc} */
Added: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,241 @@
+/*
+ * $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.freemarker.context;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.util.MapEntry;
+
+import freemarker.core.Environment;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import freemarker.template.utility.DeepUnwrap;
+
+/**
+ * <p>
+ * Private implementation of <code>Map</code> for servlet request attributes.
+ * </p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+final class EnvironmentScopeMap implements Map<String, Object> {
+
+ /**
+ * The request object to use.
+ */
+ private Environment request = null;
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ */
+ public EnvironmentScopeMap(Environment request) {
+ this.request = request;
+ }
+
+ /** {@inheritDoc} */
+ public void clear() {
+ Iterator<String> keys = keySet().iterator();
+ while (keys.hasNext()) {
+ request.setVariable(keys.next(), null);
+ }
+ }
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return getAttribute(key(key)) != null;
+ }
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ if (value == null) {
+ return (false);
+ }
+ Set<String> keys;
+ keys = getAttributeNames();
+ for (String name : keys) {
+ Object next = getAttribute(name);
+ if (next == value) {
+ return (true);
+ }
+ }
+ return (false);
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
+ public Set<Map.Entry<String, Object>> entrySet() {
+ Set<Map.Entry<String, Object>> set = new HashSet<Map.Entry<String, Object>>();
+ Set<String> keys;
+ keys = getAttributeNames();
+ for (String name : keys) {
+ Object next = getAttribute(name);
+ set.add(new MapEntry(name, next, false));
+ }
+ return (set);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean equals(Object o) {
+ Environment otherRequest = ((EnvironmentScopeMap) o).request;
+ boolean retValue = true;
+ Set<String> keys;
+ try {
+ keys = getAttributeNames();
+ for (String name : keys) {
+ Object next = getAttribute(name);
+ TemplateModel otherVariable = otherRequest.getVariable(name);
+ if (otherVariable != null) {
+ Object otherObj = DeepUnwrap.unwrap(otherVariable);
+ retValue = (next == null && otherObj == null)
+ || (next != null && next.equals(otherObj));
+ }
+ }
+ } catch (TemplateModelException e) {
+ throw new FreemarkerRequestException("Cannot get the entry set", e);
+ }
+
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ public Object get(Object key) {
+ return getAttribute(key(key));
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public int hashCode() {
+ return (request.hashCode());
+ }
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return (size() < 1);
+ }
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ return getAttributeNames();
+ }
+
+ /** {@inheritDoc} */
+ public Object put(String key, Object value) {
+ if (value == null) {
+ return (remove(key));
+ }
+ String skey = key(key);
+ Object previous = getAttribute(skey);
+ setAttribute(skey, value);
+ return (previous);
+ }
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends Object> map) {
+ Iterator<? extends String> keys = map.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ setAttribute(key, map.get(key));
+ }
+ }
+
+ /** {@inheritDoc} */
+ public Object remove(Object key) {
+ String skey = key(key);
+ Object previous = getAttribute(skey);
+ setAttribute(skey, null);
+ return (previous);
+ }
+
+ /** {@inheritDoc} */
+ public int size() {
+ return getAttributeNames().size();
+ }
+
+ /** {@inheritDoc} */
+ public Collection<Object> values() {
+ List<Object> list = new ArrayList<Object>();
+ for(String name : getAttributeNames()) {
+ list.add(getAttribute(name));
+ }
+ 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 Object getAttribute(String name) {
+ try {
+ TemplateModel variable = request.getVariable(name);
+ if (variable != null) {
+ return DeepUnwrap.unwrap(variable);
+ }
+ return null;
+ } catch (TemplateModelException e) {
+ throw new FreemarkerRequestException(
+ "Cannot get attribute with name '" + name + "'", e);
+ }
+ }
+
+ private void setAttribute(String name, Object value) {
+ try {
+ TemplateModel model = request.getObjectWrapper().wrap(value);
+ request.setVariable(name, model);
+ } catch (TemplateModelException e) {
+ throw new FreemarkerRequestException(
+ "Error when wrapping an object setting the '" + name
+ + "' attribute", e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private Set<String> getAttributeNames() {
+ try {
+ return request.getKnownVariableNames();
+ } catch (TemplateModelException e) {
+ throw new FreemarkerRequestException(
+ "Cannot get variable names from request", e);
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/EnvironmentScopeMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreeMarkerTilesRequestContext.java Wed Nov 25 10:52:52 2009
@@ -25,6 +25,7 @@
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Locale;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -51,6 +52,8 @@
*/
private Environment env;
+ private Map<String, Object> pageScope;
+
/**
* The request objects.
*/
@@ -97,6 +100,13 @@
return env.getLocale();
}
+ public Map<String, Object> getPageScope() {
+ if (pageScope == null) {
+ pageScope = new EnvironmentScopeMap(env);
+ }
+ return pageScope;
+ }
+
/** {@inheritDoc} */
@Override
public void dispatch(String path) throws IOException {
@@ -105,18 +115,17 @@
/** {@inheritDoc} */
@Override
- public PrintWriter getPrintWriter() throws IOException {
+ public PrintWriter getPrintWriter() {
Writer writer = env.getOut();
if (writer instanceof PrintWriter) {
return (PrintWriter) writer;
- } else {
- return new PrintWriter(writer);
}
+ return new PrintWriter(writer);
}
/** {@inheritDoc} */
@Override
- public Writer getWriter() throws IOException {
+ public Writer getWriter() {
return env.getOut();
}
Added: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,21 @@
+package org.apache.tiles.freemarker.context;
+
+import org.apache.tiles.request.RequestException;
+
+public class FreemarkerRequestException extends RequestException {
+
+ public FreemarkerRequestException() {
+ }
+
+ public FreemarkerRequestException(String message) {
+ super(message);
+ }
+
+ public FreemarkerRequestException(Throwable cause) {
+ super(cause);
+ }
+
+ public FreemarkerRequestException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/freemarker/context/FreemarkerRequestException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,230 @@
+/*
+ * $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.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 JspScopeMap implements Map<String, Object> {
+
+ /**
+ * The request object to use.
+ */
+ private PageContext request = null;
+
+ private int scopeId;
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ */
+ public JspScopeMap(PageContext pageContext, int scopeId) {
+ this.request = pageContext;
+ this.scopeId = scopeId;
+ }
+
+
+ /** {@inheritDoc} */
+ public void clear() {
+ Iterator<String> keys = keySet().iterator();
+ while (keys.hasNext()) {
+ request.removeAttribute(keys.next(), scopeId);
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return (request.getAttribute(key(key), scopeId) != null);
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ 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>>();
+ 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 = ((JspScopeMap) o).request;
+ boolean retValue = true;
+ synchronized (request) {
+ 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) {
+ return (request.getAttribute(key(key), scopeId));
+ }
+
+
+ /** {@inheritDoc} */
+ @Override
+ public int hashCode() {
+ return (request.hashCode()) + scopeId;
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return (size() < 1);
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ Set<String> set = new HashSet<String>();
+ Enumeration<String> keys = request.getAttributeNamesInScope(scopeId);
+ while (keys.hasMoreElements()) {
+ set.add(keys.nextElement());
+ }
+ return (set);
+ }
+
+
+ /** {@inheritDoc} */
+ public Object put(String key, Object value) {
+ 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) {
+ 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) {
+ String skey = key(key);
+ Object previous = request.getAttribute(skey, scopeId);
+ request.removeAttribute(skey, scopeId);
+ return (previous);
+ }
+
+
+ /** {@inheritDoc} */
+ public int size() {
+ int n = 0;
+ 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>();
+ 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());
+ }
+ }
+
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/jsp/context/JspScopeMap.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=884031&r1=884030&r2=884031&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 Wed Nov 25 10:52:52 2009
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
+import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -54,6 +55,30 @@
*/
private Object[] requestObjects;
+ /**
+ * <p>The lazily instantiated <code>Map</code> of page scope
+ * attributes.</p>
+ */
+ private Map<String, Object> pageScope = null;
+
+ /**
+ * <p>The lazily instantiated <code>Map</code> of request scope
+ * attributes.</p>
+ */
+ private Map<String, Object> requestScope = null;
+
+ /**
+ * <p>The lazily instantiated <code>Map</code> of session scope
+ * attributes.</p>
+ */
+ private Map<String, Object> sessionScope = null;
+
+ /**
+ * <p>The lazily instantiated <code>Map</code> of application scope
+ * attributes.</p>
+ */
+ private Map<String, Object> applicationScope = null;
+
public static JspTilesRequestContext createServletJspRequest(ApplicationContext applicationContext, PageContext pageContext) {
return new JspTilesRequestContext(new ServletTilesRequestContext(
applicationContext, (HttpServletRequest) pageContext
@@ -103,16 +128,44 @@
/** {@inheritDoc} */
@Override
- public PrintWriter getPrintWriter() throws IOException {
+ public PrintWriter getPrintWriter() {
return new JspPrintWriterAdapter(pageContext.getOut());
}
/** {@inheritDoc} */
@Override
- public Writer getWriter() throws IOException {
+ public Writer getWriter() {
return pageContext.getOut();
}
+ public Map<String, Object> getPageScope() {
+ if ((pageScope == null) && (pageContext != null)) {
+ pageScope = new JspScopeMap(pageContext, PageContext.PAGE_SCOPE);
+ }
+ return (pageScope);
+ }
+
+ public Map<String, Object> getRequestScope() {
+ if ((requestScope == null) && (pageContext != null)) {
+ requestScope = new JspScopeMap(pageContext, PageContext.REQUEST_SCOPE);
+ }
+ return (requestScope);
+ }
+
+ public Map<String, Object> getSessionScope() {
+ if ((sessionScope == null) && (pageContext != null)) {
+ sessionScope = new JspScopeMap(pageContext, PageContext.SESSION_SCOPE);
+ }
+ return (sessionScope);
+ }
+
+ public Map<String, Object> getApplicationScope() {
+ if ((applicationScope == null) && (pageContext != null)) {
+ applicationScope = new JspScopeMap(pageContext, PageContext.APPLICATION_SCOPE);
+ }
+ return (applicationScope);
+ }
+
/** {@inheritDoc} */
@Override
public Object[] getRequestObjects() {
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java Wed Nov 25 10:52:52 2009
@@ -4,7 +4,7 @@
import javax.servlet.jsp.PageContext;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationContextUtil;
+import org.apache.tiles.request.util.ApplicationAccess;
public final class JspUtil {
@@ -13,7 +13,7 @@
public static ApplicationContext getApplicationContext(JspContext jspContext) {
return (ApplicationContext) jspContext.getAttribute(
- ApplicationContextUtil.APPLICATION_CONTEXT_ATTRIBUTE,
+ ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE,
PageContext.APPLICATION_SCOPE);
}
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletSessionScopeMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletSessionScopeMap.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletSessionScopeMap.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletSessionScopeMap.java Wed Nov 25 10:52:52 2009
@@ -20,7 +20,6 @@
*/
package org.apache.tiles.portlet.context;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
@@ -30,12 +29,13 @@
import java.util.Map;
import java.util.Set;
+import javax.portlet.PortletRequest;
import javax.portlet.PortletSession;
import org.apache.tiles.request.util.MapEntry;
/**
- * <p>Private implementation of <code>Map</code> for portlet session
+ * <p>Private implementation of <code>Map</code> for HTTP session
* attributes.</p>
*
* @version $Rev$ $Date$
@@ -43,47 +43,55 @@
final class PortletSessionScopeMap implements Map<String, Object> {
-
/**
- * Constructor.
- *
- * @param session The portlet session to use.
+ * The request object to use.
*/
- public PortletSessionScopeMap(PortletSession session) {
- this.session = session;
- }
+ private PortletRequest request;
+ private int scopeId;
/**
- * The portlet session to use.
+ * Constructor.
+ *
+ * @param request The request object to use.
*/
- private PortletSession session = null;
-
+ public PortletSessionScopeMap(PortletRequest request, int scopeId) {
+ this.request = request;
+ this.scopeId = scopeId;
+ }
/** {@inheritDoc} */
public void clear() {
- Iterator<String> keys = keySet().iterator();
- while (keys.hasNext()) {
- session.removeAttribute(keys.next());
+ PortletSession session = request.getPortletSession(false);
+ if (session != null) {
+ Iterator<String> keys = keySet().iterator();
+ while (keys.hasNext()) {
+ session.removeAttribute(keys.next(), scopeId);
+ }
}
}
/** {@inheritDoc} */
public boolean containsKey(Object key) {
- return (session.getAttribute(key(key)) != null);
+ PortletSession session = request.getPortletSession(false);
+ if (session == null) {
+ return false;
+ }
+
+ return (session.getAttribute(key(key), scopeId) != null);
}
/** {@inheritDoc} */
public boolean containsValue(Object value) {
- if (value == null) {
+ PortletSession session = request.getPortletSession(false);
+ if (session == null || value == null) {
return (false);
}
- Enumeration<String> keys =
- session.getAttributeNames(PortletSession.PORTLET_SCOPE);
+ Enumeration<String> keys = session.getAttributeNames(scopeId);
while (keys.hasMoreElements()) {
- Object next = session.getAttribute(keys.nextElement());
+ Object next = session.getAttribute(keys.nextElement(), scopeId);
if (next == value) {
return (true);
}
@@ -94,13 +102,16 @@
/** {@inheritDoc} */
public Set<Map.Entry<String, Object>> entrySet() {
+ PortletSession session = request.getPortletSession(false);
Set<Map.Entry<String, Object>> set = new HashSet<Map.Entry<String, Object>>();
- Enumeration<String> keys =
- session.getAttributeNames(PortletSession.PORTLET_SCOPE);
- String key;
- while (keys.hasMoreElements()) {
- key = keys.nextElement();
- set.add(new MapEntry<String, Object>(key, session.getAttribute(key), true));
+ if (session != null) {
+ Enumeration<String> keys = session.getAttributeNames(scopeId);
+ String key;
+ while (keys.hasMoreElements()) {
+ key = keys.nextElement();
+ set.add(new MapEntry<String, Object>(key,
+ session.getAttribute(key, scopeId), true));
+ }
}
return (set);
}
@@ -109,15 +120,22 @@
/** {@inheritDoc} */
@Override
public boolean equals(Object o) {
- PortletSession otherSession = ((PortletSessionScopeMap) o).session;
boolean retValue = true;
+
+ PortletSession session = request.getPortletSession(false);
synchronized (session) {
- for (Enumeration<String> attribs = session.getAttributeNames(); attribs
- .hasMoreElements()
- && retValue;) {
- String attributeName = attribs.nextElement();
- retValue = session.getAttribute(attributeName).equals(
- otherSession.getAttribute(attributeName));
+ PortletSession otherSession = ((PortletSessionScopeMap) o).request
+ .getPortletSession(false);
+ if (session == null) {
+ retValue = otherSession == null;
+ } else {
+ for (Enumeration<String> attribs = session.getAttributeNames(scopeId); attribs
+ .hasMoreElements()
+ && retValue;) {
+ String attributeName = attribs.nextElement();
+ retValue = session.getAttribute(attributeName, scopeId).equals(
+ otherSession.getAttribute(attributeName));
+ }
}
}
@@ -127,14 +145,24 @@
/** {@inheritDoc} */
public Object get(Object key) {
- return (session.getAttribute(key(key)));
+ PortletSession session = request.getPortletSession(false);
+ if (session == null) {
+ return null;
+ }
+
+ return (session.getAttribute(key(key), scopeId));
}
/** {@inheritDoc} */
@Override
public int hashCode() {
- return (session.hashCode());
+ PortletSession session = request.getPortletSession(false);
+ if (session == null) {
+ return 0;
+ }
+
+ return (session.hashCode() + scopeId);
}
@@ -146,11 +174,13 @@
/** {@inheritDoc} */
public Set<String> keySet() {
+ PortletSession session = request.getPortletSession(false);
Set<String> set = new HashSet<String>();
- Enumeration<String> keys =
- session.getAttributeNames(PortletSession.PORTLET_SCOPE);
- while (keys.hasMoreElements()) {
- set.add(keys.nextElement());
+ if (session != null) {
+ Enumeration<String> keys = session.getAttributeNames(scopeId);
+ while (keys.hasMoreElements()) {
+ set.add(keys.nextElement());
+ }
}
return (set);
}
@@ -158,55 +188,65 @@
/** {@inheritDoc} */
public Object put(String key, Object value) {
+ PortletSession session = request.getPortletSession();
if (value == null) {
return (remove(key));
}
String skey = key(key);
- Object previous = session.getAttribute(skey);
- session.setAttribute(skey, value);
+ Object previous = session.getAttribute(skey, scopeId);
+ session.setAttribute(skey, value, scopeId);
return (previous);
}
/** {@inheritDoc} */
public void putAll(Map<? extends String, ? extends Object> map) {
+ PortletSession session = request.getPortletSession();
Iterator<? extends String> keys = map.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
- session.setAttribute(key, map.get(key));
+ session.setAttribute(key, map.get(key), scopeId);
}
}
/** {@inheritDoc} */
public Object remove(Object key) {
+ PortletSession session = request.getPortletSession(false);
+ if (session == null) {
+ return null;
+ }
+
String skey = key(key);
- Object previous = session.getAttribute(skey);
- session.removeAttribute(skey);
+ Object previous = session.getAttribute(skey, scopeId);
+ session.removeAttribute(skey, scopeId);
return (previous);
}
/** {@inheritDoc} */
public int size() {
+ PortletSession session = request.getPortletSession(false);
int n = 0;
- Enumeration<String> keys =
- session.getAttributeNames(PortletSession.PORTLET_SCOPE);
- while (keys.hasMoreElements()) {
- keys.nextElement();
- n++;
+ if (session != null) {
+ Enumeration<String> keys = session.getAttributeNames(scopeId);
+ while (keys.hasMoreElements()) {
+ keys.nextElement();
+ n++;
+ }
}
return (n);
}
-
/** {@inheritDoc} */
public Collection<Object> values() {
+ PortletSession session = request.getPortletSession(false);
List<Object> list = new ArrayList<Object>();
- Enumeration<String> keys =
- session.getAttributeNames(PortletSession.PORTLET_SCOPE);
- while (keys.hasMoreElements()) {
- list.add(session.getAttribute(keys.nextElement()));
+ if (session != null) {
+ Enumeration<String> keys = session.getAttributeNames(scopeId);
+ while (keys.hasMoreElements()) {
+ list.add(session.getAttribute(keys.nextElement(), scopeId));
+ }
}
return (list);
}
@@ -228,6 +268,4 @@
return (key.toString());
}
}
-
-
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletTilesRequestContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletTilesRequestContext.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletTilesRequestContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletTilesRequestContext.java Wed Nov 25 10:52:52 2009
@@ -33,20 +33,19 @@
import javax.portlet.PortletRequest;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletResponse;
+import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
+import org.apache.tiles.request.AbstractRequest;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.Request;
-import org.apache.tiles.request.util.TilesApplicationContextWrapper;
/**
* Portlet-based TilesApplicationContext implementation.
*
* @version $Rev$ $Date$
*/
-public class PortletTilesRequestContext extends TilesApplicationContextWrapper
- implements Request {
+public class PortletTilesRequestContext extends AbstractRequest {
/**
* <p>The lazily instantiated <code>Map</code> of header name-value
@@ -96,6 +95,12 @@
*/
private Map<String, Object> sessionScope = null;
+ /**
+ * <p>The lazily instantiated <code>Map</code> of portlet session scope
+ * attributes.</p>
+ */
+ private Map<String, Object> portletSessionScope = null;
+
/**
* <p>Indicates whether the request is an ActionRequest or RenderRequest.
@@ -237,15 +242,21 @@
/** {@inheritDoc} */
public Map<String, Object> getSessionScope() {
if ((sessionScope == null) && (request != null)) {
- sessionScope =
- new PortletSessionScopeMap(request.getPortletSession());
+ sessionScope = new PortletSessionScopeMap(request, PortletSession.APPLICATION_SCOPE);
}
return (sessionScope);
}
/** {@inheritDoc} */
- public ApplicationContext getApplicationContext() {
- return getWrappedApplicationContext();
+ public Map<String, Object> getPortletSessionScope() {
+ if ((portletSessionScope == null) && (request != null)) {
+ portletSessionScope = new PortletSessionScopeMap(request, PortletSession.PORTLET_SCOPE);
+ }
+ return (portletSessionScope);
+ }
+
+ public Map<String, Object> getDefaultScope() {
+ return getRequestScope();
}
/** {@inheritDoc} */
@@ -313,9 +324,8 @@
public Locale getRequestLocale() {
if (request != null) {
return request.getLocale();
- } else {
- return null;
}
+ return null;
}
/** {@inheritDoc} */
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletUtil.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletUtil.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletUtil.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/portlet/context/PortletUtil.java Wed Nov 25 10:52:52 2009
@@ -25,7 +25,7 @@
import javax.portlet.PortletRequest;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationContextUtil;
+import org.apache.tiles.request.util.ApplicationAccess;
/**
@@ -75,6 +75,6 @@
public static ApplicationContext getApplicationContext(
PortletContext portletContext) {
return (ApplicationContext) portletContext
- .getAttribute(ApplicationContextUtil.APPLICATION_CONTEXT_ATTRIBUTE);
+ .getAttribute(ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE);
}
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletTilesRequestContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletTilesRequestContext.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletTilesRequestContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletTilesRequestContext.java Wed Nov 25 10:52:52 2009
@@ -32,17 +32,15 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.tiles.request.AbstractRequest;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.Request;
-import org.apache.tiles.request.util.TilesApplicationContextWrapper;
/**
* Servlet-based implementation of the TilesApplicationContext interface.
*
* @version $Rev$ $Date$
*/
-public class ServletTilesRequestContext extends TilesApplicationContextWrapper
- implements Request {
+public class ServletTilesRequestContext extends AbstractRequest {
/**
* The request object to use.
@@ -189,9 +187,8 @@
}
- /** {@inheritDoc} */
- public ApplicationContext getApplicationContext() {
- return getWrappedApplicationContext();
+ public Map<String, Object> getDefaultScope() {
+ return getRequestScope();
}
/** {@inheritDoc} */
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java Wed Nov 25 10:52:52 2009
@@ -28,7 +28,7 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationContextUtil;
+import org.apache.tiles.request.util.ApplicationAccess;
/**
* Utilities for Tiles request servlet support.
@@ -99,6 +99,6 @@
public static ApplicationContext getApplicationContext(ServletContext servletContext) {
return (ApplicationContext) servletContext
- .getAttribute(ApplicationContextUtil.APPLICATION_CONTEXT_ATTRIBUTE);
+ .getAttribute(ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE);
}
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletTilesRequestContextTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletTilesRequestContextTest.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletTilesRequestContextTest.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletTilesRequestContextTest.java Wed Nov 25 10:52:52 2009
@@ -37,9 +37,6 @@
import org.apache.shale.test.mock.MockHttpSession;
import org.apache.shale.test.mock.MockServletContext;
import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.Request;
-import org.apache.tiles.request.servlet.ServletUtil;
-import org.apache.tiles.request.servlet.ServletTilesRequestContext;
import org.easymock.classextension.EasyMock;
/**
@@ -55,7 +52,7 @@
/**
* The request context.
*/
- private Request context;
+ private ServletTilesRequestContext context;
/**
* The servlet context.
@@ -364,13 +361,13 @@
/** {@inheritDoc} */
@Override
- protected void forward(String path) throws IOException {
+ protected void forward(String path) {
forwardCount++;
}
/** {@inheritDoc} */
@Override
- public void include(String path) throws IOException {
+ public void include(String path) {
includeCount++;
}
Added: tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java?rev=884031&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java Wed Nov 25 10:52:52 2009
@@ -0,0 +1,214 @@
+/*
+ * $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.velocity.context;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.util.MapEntry;
+import org.apache.velocity.context.Context;
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet request
+ * attributes.</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+final class VelocityScopeMap implements Map<String, Object> {
+
+
+ /**
+ * The request object to use.
+ */
+ private Context request = null;
+
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ */
+ public VelocityScopeMap(Context request) {
+ this.request = request;
+ }
+
+
+ /** {@inheritDoc} */
+ public void clear() {
+ Object[] keys = request.getKeys();
+ for (Object key: keys) {
+ request.remove(key);
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return request.containsKey(key);
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ if (value == null) {
+ return (false);
+ }
+ Object[] keys = request.getKeys();
+ for (Object key : keys) {
+ Object next = request.get((String) key);
+ 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>>();
+ Object[] keys = request.getKeys();
+ for (Object key : keys) {
+ set.add(new MapEntry<String, Object>((String) key,
+ request.get((String) key), true));
+ }
+ return (set);
+ }
+
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean equals(Object o) {
+ Context otherRequest = ((VelocityScopeMap) o).request;
+ boolean retValue = true;
+ synchronized (request) {
+ for (Object key : request.getKeys()) {
+ String attributeName = (String) key;
+ retValue = request.get(attributeName).equals(
+ otherRequest.get(attributeName));
+ }
+ }
+
+ return retValue;
+ }
+
+
+ /** {@inheritDoc} */
+ public Object get(Object key) {
+ return (request.get(key(key)));
+ }
+
+
+ /** {@inheritDoc} */
+ @Override
+ public int hashCode() {
+ return (request.hashCode());
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return (size() < 1);
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ Set<String> set = new HashSet<String>();
+ for (Object key : request.getKeys()) {
+ set.add((String) key);
+ }
+ return (set);
+ }
+
+
+ /** {@inheritDoc} */
+ public Object put(String key, Object value) {
+ if (value == null) {
+ return (remove(key));
+ }
+ String skey = key(key);
+ Object previous = request.get(skey);
+ request.put(skey, value);
+ return (previous);
+ }
+
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends Object> map) {
+ Iterator<? extends String> keys = map.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ request.put(key, map.get(key));
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public Object remove(Object key) {
+ String skey = key(key);
+ Object previous = request.get(skey);
+ request.remove(skey);
+ return (previous);
+ }
+
+
+ /** {@inheritDoc} */
+ public int size() {
+ return request.getKeys().length;
+ }
+
+
+ /** {@inheritDoc} */
+ public Collection<Object> values() {
+ List<Object> list = new ArrayList<Object>();
+ for (Object key : request.getKeys()) {
+ list.add(request.get((String) key));
+ }
+ 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());
+ }
+ }
+
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityScopeMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityTilesRequestContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityTilesRequestContext.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityTilesRequestContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-velocity/src/main/java/org/apache/tiles/velocity/context/VelocityTilesRequestContext.java Wed Nov 25 10:52:52 2009
@@ -24,6 +24,7 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
+import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
@@ -61,6 +62,8 @@
*/
private Writer writer;
+ private Map<String, Object> pageScope;
+
/**
* Constructor.
*
@@ -108,21 +111,20 @@
/** {@inheritDoc} */
@Override
- public PrintWriter getPrintWriter() throws IOException {
+ public PrintWriter getPrintWriter() {
if (writer == null) {
throw new IllegalStateException(
"A writer-less Tiles request has been created, cannot return a PrintWriter");
}
if (writer instanceof PrintWriter) {
return (PrintWriter) writer;
- } else {
- return new PrintWriter(writer);
}
+ return new PrintWriter(writer);
}
/** {@inheritDoc} */
@Override
- public Writer getWriter() throws IOException {
+ public Writer getWriter() {
if (writer == null) {
throw new IllegalStateException(
"A writer-less Tiles request has been created, cannot return a PrintWriter");
@@ -151,6 +153,13 @@
return requestObjects;
}
+ public Map<String, Object> getPageScope() {
+ if (pageScope == null) {
+ pageScope = new VelocityScopeMap(ctx);
+ }
+ return pageScope;
+ }
+
public static Request createVelocityRequest(ApplicationContext applicationContext,
HttpServletRequest request, HttpServletResponse response,
Context velocityContext, Writer writer) {
Modified: tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java Wed Nov 25 10:52:52 2009
@@ -137,7 +137,7 @@
ApplicationContext applicationContext = request.getApplicationContext();
TilesContainer container = getContainer(applicationContext, key);
if (container != null) {
- request.getRequestScope().put(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
+ request.getContext("request").put(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
} else {
throw new NoSuchContainerException("The container with the key '"
+ key + "' cannot be found");
@@ -154,7 +154,7 @@
public static void setCurrentContainer(Request request,
TilesContainer container) {
if (container != null) {
- request.getRequestScope().put(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
+ request.getContext("request").put(CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
} else {
throw new NullPointerException("The container cannot be null");
}
@@ -170,7 +170,7 @@
*/
public static TilesContainer getCurrentContainer(Request request) {
ApplicationContext context = request.getApplicationContext();
- Map<String, Object> requestScope = request.getRequestScope();
+ Map<String, Object> requestScope = request.getContext("request");
TilesContainer container = (TilesContainer) requestScope.get(CURRENT_CONTAINER_ATTRIBUTE_NAME);
if (container == null) {
container = getContainer(context);
Modified: tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-api/src/test/java/org/apache/tiles/access/TilesAccessTest.java Wed Nov 25 10:52:52 2009
@@ -126,7 +126,7 @@
Map<String, Object> requestScope = new HashMap<String, Object>();
expect(context.getApplicationScope()).andReturn(attribs).anyTimes();
- expect(request.getRequestScope()).andReturn(requestScope);
+ expect(request.getContext("request")).andReturn(requestScope);
expect(request.getApplicationContext()).andReturn(context);
replay(request, context, container);
TilesAccess.setCurrentContainer(request, "myKey");
@@ -168,7 +168,7 @@
Map<String, Object> requestScope = new HashMap<String, Object>();
expect(context.getApplicationScope()).andReturn(attribs).anyTimes();
- expect(request.getRequestScope()).andReturn(requestScope);
+ expect(request.getContext("request")).andReturn(requestScope);
replay(request, context, container);
TilesAccess.setCurrentContainer(request, container);
@@ -211,7 +211,7 @@
expect(request.getApplicationContext()).andReturn(context);
expect(context.getApplicationScope()).andReturn(attribs).anyTimes();
- expect(request.getRequestScope()).andReturn(requestScope);
+ expect(request.getContext("request")).andReturn(requestScope);
replay(request, context, container);
assertEquals(container, TilesAccess.getCurrentContainer(request));
@@ -232,7 +232,7 @@
expect(request.getApplicationContext()).andReturn(context);
expect(context.getApplicationScope()).andReturn(attribs).anyTimes();
- expect(request.getRequestScope()).andReturn(requestScope);
+ expect(request.getContext("request")).andReturn(requestScope);
replay(request, context, container);
assertEquals(container, TilesAccess.getCurrentContainer(request));
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Wed Nov 25 10:52:52 2009
@@ -327,10 +327,10 @@
protected ArrayStack<AttributeContext> getContextStack(Request tilesContext) {
ArrayStack<AttributeContext> contextStack =
(ArrayStack<AttributeContext>) tilesContext
- .getRequestScope().get(ATTRIBUTE_CONTEXT_STACK);
+ .getContext("request").get(ATTRIBUTE_CONTEXT_STACK);
if (contextStack == null) {
contextStack = new ArrayStack<AttributeContext>();
- tilesContext.getRequestScope().put(ATTRIBUTE_CONTEXT_STACK,
+ tilesContext.getContext("request").put(ATTRIBUTE_CONTEXT_STACK,
contextStack);
}
@@ -373,9 +373,8 @@
ArrayStack<AttributeContext> contextStack = getContextStack(tilesContext);
if (!contextStack.isEmpty()) {
return contextStack.peek();
- } else {
- return null;
}
+ return null;
}
/**
Modified: tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/DefinitionManager.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/DefinitionManager.java?rev=884031&r1=884030&r2=884031&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/DefinitionManager.java (original)
+++ tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/DefinitionManager.java Wed Nov 25 10:52:52 2009
@@ -226,7 +226,7 @@
@SuppressWarnings("unchecked")
protected Map<String, Definition> getDefinitions(
Request request) {
- return (Map<String, Definition>) request.getRequestScope()
+ return (Map<String, Definition>) request.getContext("request")
.get(definitionsAttributeName);
}
@@ -242,10 +242,10 @@
Request request) {
Map<String, Definition> definitions =
(Map<String, Definition>) request
- .getRequestScope().get(definitionsAttributeName);
+ .getContext("request").get(definitionsAttributeName);
if (definitions == null) {
definitions = new HashMap<String, Definition>();
- request.getRequestScope()
+ request.getContext("request")
.put(definitionsAttributeName, definitions);
}
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=884031&r1=884030&r2=884031&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 Wed Nov 25 10:52:52 2009
@@ -44,7 +44,7 @@
/** {@inheritDoc} */
public Locale resolveLocale(Request request) {
Locale retValue = null;
- Map<String, Object> session = request.getSessionScope();
+ Map<String, Object> session = request.getContext("request");
if (session != null) {
retValue = (Locale) session.get(DefaultLocaleResolver.LOCALE_KEY);
}