You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/06/24 03:13:05 UTC
svn commit: r550147 [2/2] - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry/ main/java/org/apache/tapestry/corelib/base/
main/java/org/apache/tapestry/corelib/components/
main/java/org/apache/tapestry/internal/services/ ma...
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java Sat Jun 23 18:13:03 2007
@@ -51,7 +51,6 @@
import org.apache.tapestry.annotations.SetupRender;
import org.apache.tapestry.beaneditor.Validate;
import org.apache.tapestry.corelib.data.GridPagerPosition;
-import org.apache.tapestry.dom.DefaultMarkupModel;
import org.apache.tapestry.dom.Document;
import org.apache.tapestry.grid.GridDataSource;
import org.apache.tapestry.internal.InternalConstants;
@@ -67,7 +66,6 @@
import org.apache.tapestry.internal.bindings.ValidateBindingFactory;
import org.apache.tapestry.internal.grid.ListGridDataSource;
import org.apache.tapestry.internal.grid.NullDataSource;
-import org.apache.tapestry.internal.services.ActionLinkHandler;
import org.apache.tapestry.internal.services.AliasImpl;
import org.apache.tapestry.internal.services.AliasManagerImpl;
import org.apache.tapestry.internal.services.ApplicationGlobalsImpl;
@@ -84,11 +82,11 @@
import org.apache.tapestry.internal.services.ClasspathAssetAliasManagerImpl;
import org.apache.tapestry.internal.services.CommonResourcesInjectionProvider;
import org.apache.tapestry.internal.services.ComponentActionDispatcher;
+import org.apache.tapestry.internal.services.ComponentActionRequestHandlerImpl;
import org.apache.tapestry.internal.services.ComponentClassResolverImpl;
import org.apache.tapestry.internal.services.ComponentDefaultProviderImpl;
import org.apache.tapestry.internal.services.ComponentInstanceResultProcessor;
import org.apache.tapestry.internal.services.ComponentInstantiatorSource;
-import org.apache.tapestry.internal.services.ComponentInvocationMap;
import org.apache.tapestry.internal.services.ComponentLifecycleMethodWorker;
import org.apache.tapestry.internal.services.ComponentMessagesSourceImpl;
import org.apache.tapestry.internal.services.ComponentResourcesInjectionProvider;
@@ -118,7 +116,7 @@
import org.apache.tapestry.internal.services.InternalModule;
import org.apache.tapestry.internal.services.LinkActionResponseGenerator;
import org.apache.tapestry.internal.services.LinkFactory;
-import org.apache.tapestry.internal.services.MarkupWriterImpl;
+import org.apache.tapestry.internal.services.MarkupWriterFactoryImpl;
import org.apache.tapestry.internal.services.MetaDataLocatorImpl;
import org.apache.tapestry.internal.services.MetaWorker;
import org.apache.tapestry.internal.services.MixinAfterWorker;
@@ -126,15 +124,13 @@
import org.apache.tapestry.internal.services.ObjectComponentEventResultProcessor;
import org.apache.tapestry.internal.services.OnEventWorker;
import org.apache.tapestry.internal.services.PageLifecycleAnnotationWorker;
-import org.apache.tapestry.internal.services.PageLinkHandler;
import org.apache.tapestry.internal.services.PageRenderDispatcher;
+import org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl;
import org.apache.tapestry.internal.services.PageRenderSupportImpl;
import org.apache.tapestry.internal.services.PageResponseRenderer;
import org.apache.tapestry.internal.services.ParameterWorker;
import org.apache.tapestry.internal.services.PersistWorker;
import org.apache.tapestry.internal.services.PersistentFieldManagerImpl;
-import org.apache.tapestry.internal.services.StringValueEncoder;
-import org.apache.tapestry.internal.services.ValueEncoderSourceImpl;
import org.apache.tapestry.internal.services.PropertyConduitSourceImpl;
import org.apache.tapestry.internal.services.RenderCommandWorker;
import org.apache.tapestry.internal.services.RequestGlobalsImpl;
@@ -153,6 +149,7 @@
import org.apache.tapestry.internal.services.StaticFilesFilter;
import org.apache.tapestry.internal.services.StreamResponseResultProcessor;
import org.apache.tapestry.internal.services.StringResultProcessor;
+import org.apache.tapestry.internal.services.StringValueEncoder;
import org.apache.tapestry.internal.services.SupportsInformalParametersWorker;
import org.apache.tapestry.internal.services.TranslatorDefaultSourceImpl;
import org.apache.tapestry.internal.services.TranslatorSourceImpl;
@@ -160,6 +157,7 @@
import org.apache.tapestry.internal.services.UpdateListenerHub;
import org.apache.tapestry.internal.services.ValidationConstraintGeneratorImpl;
import org.apache.tapestry.internal.services.ValidationMessagesSourceImpl;
+import org.apache.tapestry.internal.services.ValueEncoderSourceImpl;
import org.apache.tapestry.ioc.AnnotationProvider;
import org.apache.tapestry.ioc.Configuration;
import org.apache.tapestry.ioc.Location;
@@ -180,7 +178,6 @@
import org.apache.tapestry.ioc.services.ClassFactory;
import org.apache.tapestry.ioc.services.Coercion;
import org.apache.tapestry.ioc.services.CoercionTuple;
-import org.apache.tapestry.ioc.services.ComponentDefaultProvider;
import org.apache.tapestry.ioc.services.PipelineBuilder;
import org.apache.tapestry.ioc.services.PropertyAccess;
import org.apache.tapestry.ioc.services.PropertyShadowBuilder;
@@ -233,18 +230,7 @@
binder.bind(BeanModelSource.class, BeanModelSourceImpl.class);
binder.bind(BeanBlockSource.class, BeanBlockSourceImpl.class);
binder.bind(ComponentDefaultProvider.class, ComponentDefaultProviderImpl.class);
- }
-
- public static MarkupWriterFactory build(final ComponentInvocationMap componentInvocationMap)
- {
- // Temporary ...
- return new MarkupWriterFactory()
- {
- public MarkupWriter newMarkupWriter()
- {
- return new MarkupWriterImpl(new DefaultMarkupModel(), componentInvocationMap);
- }
- };
+ binder.bind(MarkupWriterFactory.class, MarkupWriterFactoryImpl.class);
}
public static Alias build(Log log,
@@ -1306,9 +1292,9 @@
ResourceStreamer streamer,
- PageLinkHandler pageLinkHandler,
+ PageRenderRequestHandler pageRenderRequestHandler,
- ActionLinkHandler actionLinkHandler,
+ ComponentActionRequestHandler componentActionRequestHandler,
ComponentClassResolver componentClassResolver,
@@ -1318,7 +1304,7 @@
// Looks for the root path and renders the start page
configuration.add("RootPath", new RootPathDispatcher(componentClassResolver,
- pageLinkHandler, _pageResponseRenderer, startPageName), "before:Asset");
+ pageRenderRequestHandler, _pageResponseRenderer, startPageName), "before:Asset");
// This goes first because an asset to be streamed may have an file extension, such as
// ".html", that will confuse the later dispatchers.
@@ -1329,19 +1315,33 @@
"before:PageRender");
configuration.add("PageRender", new PageRenderDispatcher(componentClassResolver,
- pageLinkHandler, _pageResponseRenderer));
+ pageRenderRequestHandler));
- configuration.add(
- "ComponentAction",
- new ComponentActionDispatcher(actionLinkHandler),
- "after:PageRender");
+ configuration.add("ComponentAction", new ComponentActionDispatcher(
+ componentActionRequestHandler), "after:PageRender");
}
+ /**
+ * Contributes meta data defaults:
+ * <dl>
+ * <dt>{@link PersistentFieldManagerImpl#META_KEY}
+ * <dd>{@link PersistentFieldManagerImpl#DEFAULT_STRATEGY}
+ * <dt>{@link TapestryConstants#RESPONSE_CONTENT_TYPE}
+ * <dd>text/html
+ * <dt>{@link TapestryConstants#RESPONSE_ENCODING}
+ * <dd>UTF-8
+ * </dl>
+ *
+ * @param configuration
+ */
public void contributeMetaDataLocator(MappedConfiguration<String, String> configuration)
{
configuration.add(
PersistentFieldManagerImpl.META_KEY,
PersistentFieldManagerImpl.DEFAULT_STRATEGY);
+
+ configuration.add(TapestryConstants.RESPONSE_CONTENT_TYPE, "text/html");
+ configuration.add(TapestryConstants.RESPONSE_ENCODING, "UTF-8");
}
/**
@@ -1498,4 +1498,27 @@
configuration.add(String.class, new GenericValueEncoderFactory(new StringValueEncoder()));
configuration.add(Enum.class, new EnumValueEncoderFactory());
}
+
+ public PageRenderRequestHandler buildPageRenderRequestHandler(
+ List<PageRenderRequestFilter> configuration, Log log, ServiceResources resources)
+ {
+ return _pipelineBuilder.build(
+ log,
+ PageRenderRequestHandler.class,
+ PageRenderRequestFilter.class,
+ configuration,
+ resources.autobuild(PageRenderRequestHandlerImpl.class));
+ }
+
+ public ComponentActionRequestHandler buildComponentActionRequestHandler(
+ List<ComponentActionRequestFilter> configuration, Log log, ServiceResources resources)
+ {
+ return _pipelineBuilder.build(
+ log,
+ ComponentActionRequestHandler.class,
+ ComponentActionRequestFilter.class,
+ configuration,
+ resources.autobuild(ComponentActionRequestHandlerImpl.class));
+ }
+
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt Sat Jun 23 18:13:03 2007
@@ -91,7 +91,7 @@
greeting=Bienvenue en arriere
+----+
- Programattically, you may inject your component message catalog into your class, as an instance of the Messages interface:
+ Programatically, you may inject your component message catalog into your class, as an instance of the Messages interface:
+----+
@Inject
@@ -153,5 +153,18 @@
Tapestry does not yet support changing the locale, but that will be available shortly. The intent is to mimic Tapestry 4 behavior: store a cookie
on the client to provide the default for the locale on the next visit, and store a locale name in the session (if a session exists). <<TODO: I believe
this has been implemented by Kent.>>
+
+Output Content Type and Charset
+
+ When Tapestry renders a page, the very first step is to determine the output content type and charset.
+
+ This information is obtained from meta data on the page itself. Meta data is specified using the
+ {{{../apidocs/org/apache/tapestry/annotations/Meta.html}Meta}} annotation.
+
+ First, the response content type is obtained via meta-data key "tapestry.response-content-type". This value defaults to "text/html".
+
+ Next, the encoding is obtained via meta-data key "tapestry.response-encoding". This value defaults to "UTF-8". This is only necessary if
+ the content type does not provide a charset parameter (i.e., "text/html;charset=ISO-8559-1"). The encoding becomes the charset.
+
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java Sat Jun 23 18:13:03 2007
@@ -1,17 +1,17 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed 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.
-
+// Copyright 2006, 2007 The Apache Software Foundation
+//
+// Licensed 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.tapestry.integration;
import java.io.BufferedInputStream;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentActionDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentActionDispatcherTest.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentActionDispatcherTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentActionDispatcherTest.java Sat Jun 23 18:13:03 2007
@@ -23,6 +23,7 @@
import org.apache.tapestry.internal.InternalConstants;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.services.ActionResponseGenerator;
+import org.apache.tapestry.services.ComponentActionRequestHandler;
import org.apache.tapestry.services.Dispatcher;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.Response;
@@ -33,7 +34,7 @@
@Test
public void no_dot_or_colon_in_path() throws Exception
{
- ActionLinkHandler handler = newActionLinkHandler();
+ ComponentActionRequestHandler handler = newComponentActionRequestHandler();
Request request = mockRequest();
Response response = mockResponse();
@@ -48,9 +49,9 @@
verify();
}
- protected final ActionLinkHandler newActionLinkHandler()
+ protected final ComponentActionRequestHandler newComponentActionRequestHandler()
{
- return newMock(ActionLinkHandler.class);
+ return newMock(ComponentActionRequestHandler.class);
}
@Test
@@ -125,7 +126,7 @@
@Test
public void page_activation_context_in_request() throws Exception
{
- ActionLinkHandler handler = newActionLinkHandler();
+ ComponentActionRequestHandler handler = newComponentActionRequestHandler();
Request request = mockRequest();
Response response = mockResponse();
ActionResponseGenerator generator = newMock(ActionResponseGenerator.class);
@@ -157,7 +158,7 @@
private void test(String requestPath, String logicalPageName, String nestedComponentId,
String eventType, String... context) throws IOException
{
- ActionLinkHandler handler = newActionLinkHandler();
+ ComponentActionRequestHandler handler = newComponentActionRequestHandler();
Request request = mockRequest();
Response response = mockResponse();
ActionResponseGenerator generator = newMock(ActionResponseGenerator.class);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentDefaultProviderImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentDefaultProviderImplTest.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentDefaultProviderImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentDefaultProviderImplTest.java Sat Jun 23 18:13:03 2007
@@ -20,11 +20,11 @@
import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry.ioc.services.ComponentDefaultProvider;
import org.apache.tapestry.ioc.services.PropertyAccess;
import org.apache.tapestry.ioc.services.PropertyAdapter;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.BindingSource;
+import org.apache.tapestry.services.ComponentDefaultProvider;
import org.testng.annotations.Test;
public class ComponentDefaultProviderImplTest extends InternalBaseTestCase
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MetaDataLocatorImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MetaDataLocatorImplTest.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MetaDataLocatorImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MetaDataLocatorImplTest.java Sat Jun 23 18:13:03 2007
@@ -22,7 +22,6 @@
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.model.ComponentModel;
-import org.apache.tapestry.services.ComponentClassResolver;
import org.apache.tapestry.services.MetaDataLocator;
import org.testng.annotations.Test;
@@ -70,7 +69,6 @@
ComponentResources containerResources = mockComponentResources();
ComponentModel model = mockComponentModel();
ComponentModel containerModel = mockComponentModel();
- ComponentClassResolver resolver = mockComponentClassResolver();
String key = "foo.bar";
String value = "zaphod";
@@ -178,7 +176,6 @@
{
ComponentResources resources = mockComponentResources();
ComponentModel model = mockComponentModel();
- ComponentClassResolver resolver = mockComponentClassResolver();
String key = "foo.bar";
String value = "zaphod";
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java Sat Jun 23 18:13:03 2007
@@ -26,6 +26,7 @@
import org.apache.tapestry.services.ComponentClassResolver;
import org.apache.tapestry.services.ComponentEventResultProcessor;
import org.apache.tapestry.services.Dispatcher;
+import org.apache.tapestry.services.PageRenderRequestHandler;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.Response;
import org.testng.annotations.Test;
@@ -38,7 +39,7 @@
ComponentClassResolver resolver = mockComponentClassResolver();
PageResponseRenderer renderer = mockPageResponseRenderer();
RequestPageCache cache = mockRequestPageCache();
- PageLinkHandler handler = new PageLinkHandlerImpl(cache, null);
+ PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, null, null, null);
Request request = mockRequest();
Response response = mockResponse();
@@ -48,7 +49,7 @@
replay();
- Dispatcher d = new PageRenderDispatcher(resolver, handler, renderer);
+ Dispatcher d = new PageRenderDispatcher(resolver, handler);
assertFalse(d.dispatch(request, response));
@@ -61,7 +62,7 @@
{
ComponentClassResolver resolver = mockComponentClassResolver();
PageResponseRenderer renderer = mockPageResponseRenderer();
- PageLinkHandler handler = newMock(PageLinkHandler.class);
+ PageRenderRequestHandler handler = newMock(PageRenderRequestHandler.class);
Request request = mockRequest();
Response response = mockResponse();
@@ -69,7 +70,7 @@
replay();
- Dispatcher d = new PageRenderDispatcher(resolver, handler, renderer);
+ Dispatcher d = new PageRenderDispatcher(resolver, handler);
assertFalse(d.dispatch(request, response));
@@ -119,9 +120,9 @@
replay();
- PageLinkHandler handler = new PageLinkHandlerImpl(cache, processor);
+ PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer, response);
- Dispatcher d = new PageRenderDispatcher(resolver, handler, renderer);
+ Dispatcher d = new PageRenderDispatcher(resolver, handler);
assertTrue(d.dispatch(request, response));
@@ -167,9 +168,9 @@
replay();
- PageLinkHandler handler = new PageLinkHandlerImpl(cache, processor);
+ PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer, response);
- Dispatcher d = new PageRenderDispatcher(resolver, handler, renderer);
+ Dispatcher d = new PageRenderDispatcher(resolver, handler);
assertTrue(d.dispatch(request, response));
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestEncodingInitializerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestEncodingInitializerImplTest.java?view=auto&rev=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestEncodingInitializerImplTest.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestEncodingInitializerImplTest.java Sat Jun 23 18:13:03 2007
@@ -0,0 +1,104 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed 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.tapestry.internal.services;
+
+import org.apache.tapestry.TapestryConstants;
+import org.apache.tapestry.internal.InternalComponentResources;
+import org.apache.tapestry.internal.structure.ComponentPageElement;
+import org.apache.tapestry.internal.structure.Page;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.MetaDataLocator;
+import org.apache.tapestry.services.Request;
+import org.testng.annotations.Test;
+
+public class RequestEncodingInitializerImplTest extends InternalBaseTestCase
+{
+ @Test
+ public void encoding_in_content_type()
+ {
+ RequestPageCache cache = mockRequestPageCache();
+ Page page = mockPage();
+ ComponentPageElement element = mockComponentPageElement();
+ InternalComponentResources resources = mockInternalComponentResources();
+ MetaDataLocator locator = mockMetaDataLocator();
+ Request request = mockRequest();
+ String pageName = "MyPage";
+
+ train_get(cache, pageName, page);
+ train_getRootElement(page, element);
+ train_getComponentResources(element, resources);
+
+ train_findMeta(
+ locator,
+ TapestryConstants.RESPONSE_CONTENT_TYPE,
+ resources,
+ "text/html;charset=zebra");
+
+ request.setEncoding("zebra");
+
+ replay();
+
+ RequestEncodingInitializer init = new RequestEncodingInitializerImpl(cache, locator,
+ request);
+
+ init.initializeRequestEncoding(pageName);
+
+ verify();
+ }
+
+ @Test
+ public void encoding_on_second_meta_data()
+ {
+ RequestPageCache cache = mockRequestPageCache();
+ Page page = mockPage();
+ ComponentPageElement element = mockComponentPageElement();
+ InternalComponentResources resources = mockInternalComponentResources();
+ MetaDataLocator locator = mockMetaDataLocator();
+ Request request = mockRequest();
+ String pageName = "MyPage";
+ String encoding = "ostritch";
+
+ train_get(cache, pageName, page);
+ train_getRootElement(page, element);
+ train_getComponentResources(element, resources);
+
+ train_findMeta(locator, TapestryConstants.RESPONSE_CONTENT_TYPE, resources, "text/html");
+
+ train_findMeta(locator, TapestryConstants.RESPONSE_ENCODING, resources, encoding);
+
+ request.setEncoding(encoding);
+
+ replay();
+
+ RequestEncodingInitializer init = new RequestEncodingInitializerImpl(cache, locator,
+ request);
+
+ init.initializeRequestEncoding(pageName);
+
+ verify();
+ }
+
+ protected final void train_findMeta(MetaDataLocator locator, String metaDataKey,
+ InternalComponentResources resources, String metaDataValue)
+ {
+ expect(locator.findMeta(metaDataKey, resources)).andReturn(metaDataValue);
+ }
+
+ protected final MetaDataLocator mockMetaDataLocator()
+ {
+ return newMock(MetaDataLocator.class);
+ }
+
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestImplTest.java?view=diff&rev=550147&r1=550146&r2=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestImplTest.java Sat Jun 23 18:13:03 2007
@@ -12,51 +12,96 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.services.Request;
-import org.apache.tapestry.services.Session;
-import org.testng.annotations.Test;
-
-public class RequestImplTest extends InternalBaseTestCase
-{
- @Test
- public void get_session_doesnt_exist()
- {
- HttpServletRequest sr = mockHttpServletRequest();
-
- train_getSession(sr, false, null);
-
- replay();
-
- Request request = new RequestImpl(sr);
-
- assertNull(request.getSession(false));
-
- verify();
- }
-
- @Test
- public void force_session_create()
- {
- HttpServletRequest sr = mockHttpServletRequest();
- HttpSession ss = mockHttpSession();
-
- train_getSession(sr, true, ss);
-
- train_getAttribute(ss, "foo", "bar");
-
- replay();
-
- Request request = new RequestImpl(sr);
- Session session = request.getSession(true);
-
- assertEquals(session.getAttribute("foo"), "bar");
-
- verify();
- }
-}
+package org.apache.tapestry.internal.services;
+
+import java.io.UnsupportedEncodingException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.Request;
+import org.apache.tapestry.services.Session;
+import org.testng.annotations.Test;
+
+public class RequestImplTest extends InternalBaseTestCase
+{
+ @Test
+ public void get_session_doesnt_exist()
+ {
+ HttpServletRequest sr = mockHttpServletRequest();
+
+ train_getSession(sr, false, null);
+
+ replay();
+
+ Request request = new RequestImpl(sr);
+
+ assertNull(request.getSession(false));
+
+ verify();
+ }
+
+ @Test
+ public void force_session_create()
+ {
+ HttpServletRequest sr = mockHttpServletRequest();
+ HttpSession ss = mockHttpSession();
+
+ train_getSession(sr, true, ss);
+
+ train_getAttribute(ss, "foo", "bar");
+
+ replay();
+
+ Request request = new RequestImpl(sr);
+ Session session = request.getSession(true);
+
+ assertEquals(session.getAttribute("foo"), "bar");
+
+ verify();
+ }
+
+ @Test
+ public void set_encoding_success() throws Exception
+ {
+ HttpServletRequest sr = mockHttpServletRequest();
+
+ String encoding = "the-encoding";
+
+ sr.setCharacterEncoding(encoding);
+
+ replay();
+
+ new RequestImpl(sr).setEncoding(encoding);
+
+ verify();
+ }
+
+ @Test
+ public void set_encoding_failure() throws Exception
+ {
+ HttpServletRequest sr = mockHttpServletRequest();
+
+ String encoding = "the-encoding";
+ UnsupportedEncodingException exception = new UnsupportedEncodingException("Oops.");
+
+ sr.setCharacterEncoding(encoding);
+ getMocksControl().andThrow(exception);
+
+ replay();
+
+ try
+ {
+ new RequestImpl(sr).setEncoding(encoding);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertSame(ex.getCause(), exception);
+ }
+
+ verify();
+
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/util/ContentTypeTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/util/ContentTypeTest.java?view=auto&rev=550147
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/util/ContentTypeTest.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/util/ContentTypeTest.java Sat Jun 23 18:13:03 2007
@@ -0,0 +1,129 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed 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.tapestry.internal.util;
+
+import java.util.List;
+
+import org.apache.tapestry.internal.util.ContentType;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class ContentTypeTest extends Assert
+{
+ @Test
+ public void simple_equals()
+ {
+ ContentType master = new ContentType("text/html");
+
+ assertFalse(master.equals(null));
+ assertFalse(master.equals(this));
+ assertTrue(master.equals(master));
+ assertTrue(master.equals(new ContentType("text/html")));
+ assertFalse(master.equals(new ContentType("foo/bar")));
+ assertFalse(master.equals(new ContentType("text/plain")));
+ }
+
+ @Test
+ public void equals_with_parameters()
+ {
+ ContentType master = new ContentType("text/html;charset=utf-8");
+
+ assertFalse(master.equals(new ContentType("text/html")));
+ assertTrue(master.equals(new ContentType("text/html;charset=utf-8")));
+ assertFalse(master.equals(new ContentType("text/html;charset=utf-8;foo=bar")));
+
+ // Check that keys are case insensitive
+
+ assertTrue(master.equals(new ContentType("text/html;Charset=utf-8")));
+
+ master = new ContentType("text/html;foo=bar;biff=bazz");
+
+ assertTrue(master.equals(new ContentType("text/html;foo=bar;biff=bazz")));
+ assertTrue(master.equals(new ContentType("text/html;Foo=bar;Biff=bazz")));
+ assertTrue(master.equals(new ContentType("text/html;biff=bazz;foo=bar")));
+ }
+
+ @Test
+ public void parse_with_parameters() throws Exception
+ {
+ ContentType contentType = new ContentType("text/html;charset=utf-8");
+
+ assertEquals(contentType.getBaseType(), "text");
+
+ assertEquals(contentType.getSubType(), "html");
+
+ assertEquals(contentType.getMimeType(), "text/html");
+
+ List<String> parameterNames = contentType.getParameterNames();
+ assertEquals(parameterNames.size(), 1);
+
+ assertEquals(parameterNames.get(0), "charset");
+
+ String charset = contentType.getParameter("charset");
+ assertEquals(charset, "utf-8");
+
+ String nonexistant = contentType.getParameter("nonexistant");
+ assertTrue(nonexistant == null);
+ }
+
+ @Test
+ public void parse_without_parameters() throws Exception
+ {
+ ContentType contentType = new ContentType("text/html");
+
+ assertEquals(contentType.getBaseType(), "text");
+
+ assertEquals(contentType.getSubType(), "html");
+
+ assertEquals(contentType.getMimeType(), "text/html");
+
+ assertTrue(contentType.getParameterNames().isEmpty());
+ }
+
+ @Test
+ public void unparse_with_parameters() throws Exception
+ {
+ ContentType contentType = new ContentType();
+
+ contentType.setBaseType("text");
+ contentType.setSubType("html");
+ contentType.setParameter("charset", "utf-8");
+
+ assertEquals(contentType.unparse(), "text/html;charset=utf-8");
+ }
+
+ @Test
+ public void unparse_no_parameters() throws Exception
+ {
+ ContentType contentType = new ContentType();
+
+ contentType.setBaseType("text");
+ contentType.setSubType("html");
+
+ assertEquals(contentType.unparse(), "text/html");
+ }
+
+ @Test
+ public void to_string_is_unparse()
+ {
+ ContentType contentType = new ContentType();
+
+ contentType.setBaseType("text");
+ contentType.setSubType("html");
+ contentType.setParameter("charset", "utf-8");
+
+ assertEquals(contentType.toString(), contentType.unparse());
+ }
+}