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 2008/01/15 00:16:52 UTC

svn commit: r611966 [2/2] - in /tapestry/tapestry5/trunk: tapestry-core/src/main/java/org/apache/tapestry/ tapestry-core/src/main/java/org/apache/tapestry/internal/ tapestry-core/src/main/java/org/apache/tapestry/internal/bindings/ tapestry-core/src/ma...

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/pages/Start.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/pages/Start.java?rev=611966&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/pages/Start.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/pages/Start.java Mon Jan 14 15:16:45 2008
@@ -0,0 +1,49 @@
+// Copyright 2008 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.app4.pages;
+
+import org.apache.tapestry.annotations.InjectPage;
+
+public class Start
+{
+    @InjectPage
+    private Destination _destination;
+
+    private String _input;
+
+    public String getInput()
+    {
+        return _input;
+    }
+
+    public void setInput(String input)
+    {
+        _input = input;
+    }
+
+    Object onSuccess()
+    {
+        _destination.setValue(_input);
+
+        return _destination;
+    }
+
+    Object onActionFromBypass()
+    {
+        _destination.setValue("automatic value");
+
+        return _destination;
+    }
+}

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/services/AppModule.java?rev=611966&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/services/AppModule.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app4/services/AppModule.java Mon Jan 14 15:16:45 2008
@@ -0,0 +1,30 @@
+// Copyright 2008 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.app4.services;
+
+import org.apache.tapestry.TapestryConstants;
+import org.apache.tapestry.ioc.MappedConfiguration;
+
+/**
+ * A module that exists for testing the immediate response mode: sending markup in response to action requests, rather
+ * than sending a redirect.
+ */
+public class AppModule
+{
+    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
+    {
+        configuration.add(TapestryConstants.SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS_SYMBOL, "true");
+    }
+}

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetFactoryTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetFactoryTest.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetFactoryTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetFactoryTest.java Mon Jan 14 15:16:45 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 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.
@@ -39,6 +39,8 @@
 
         train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
 
+        getMocksControl().times(2); // Cache of the raw path, not the final path which may be optimized
+
         replay();
 
         ClasspathAssetFactory factory = new ClasspathAssetFactory(cache, aliasManager);
@@ -81,6 +83,8 @@
 
         train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
 
+        getMocksControl().times(2); // 2nd time is the toString() call
+
         replay();
 
         AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager);
@@ -89,7 +93,7 @@
 
         assertSame(asset.getResource(), r);
         assertEquals(asset.toClientURL(), expectedClientURL);
-        assertEquals(asset.toString(), asset.toClientURL());
+        assertEquals(asset.toString(), expectedClientURL);
 
         verify();
     }
@@ -110,6 +114,8 @@
 
         train_toClientURL(aliasManager, "foo/Bar.ABC123.txt", expectedClientURL);
 
+        getMocksControl().times(2); // 2nd time is the toString() call
+
         replay();
 
         AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager);
@@ -118,7 +124,7 @@
 
         assertSame(asset.getResource(), r);
         assertEquals(asset.toClientURL(), expectedClientURL);
-        assertEquals(asset.toString(), asset.toClientURL());
+        assertEquals(asset.toString(), expectedClientURL);
 
         verify();
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessorTest.java Mon Jan 14 15:16:45 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 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.
@@ -15,12 +15,10 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.tapestry.ComponentResources;
-import org.apache.tapestry.Link;
 import org.apache.tapestry.internal.structure.Page;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.apache.tapestry.runtime.Component;
 import org.apache.tapestry.services.ComponentEventResultProcessor;
-import org.apache.tapestry.services.Response;
 import org.slf4j.Logger;
 import org.testng.annotations.Test;
 
@@ -39,9 +37,7 @@
         Logger logger = mockLogger();
         RequestPageCache cache = mockRequestPageCache();
         Page page = mockPage();
-        LinkFactory factory = mockLinkFactory();
-        Response response = mockResponse();
-        Link link = mockLink();
+        ActionRenderResponseGenerator generator = mockActionRenderResponseGenerator();
 
         train_getComponentResources(result, resources);
         train_getContainer(resources, null);
@@ -49,14 +45,12 @@
         train_getPageName(resources, PAGE_NAME);
         train_get(cache, PAGE_NAME, page);
 
-        train_createPageLink(factory, page, link);
-
-        response.sendRedirect(link);
+        generator.generateResponse(page);
 
         replay();
 
-        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, response,
-                                                                                                  cache, factory);
+        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
+                                                                                                  generator);
 
         processor.processComponentEvent(result, source, METHOD_DESCRIPTION);
 
@@ -74,9 +68,8 @@
         Logger logger = mockLogger();
         RequestPageCache cache = mockRequestPageCache();
         Page page = mockPage();
-        LinkFactory factory = mockLinkFactory();
-        Response response = mockResponse();
-        Link link = mockLink();
+        ActionRenderResponseGenerator generator = mockActionRenderResponseGenerator();
+
 
         train_getComponentResources(value, valueResources);
 
@@ -92,17 +85,16 @@
         train_getPageName(valueResources, PAGE_NAME);
         train_get(cache, PAGE_NAME, page);
 
-        train_createPageLink(factory, page, link);
-
-        response.sendRedirect(link);
+        generator.generateResponse(page);
 
         replay();
 
-        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, response,
-                                                                                                  cache, factory);
+        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
+                                                                                                  generator);
 
         processor.processComponentEvent(value, source, METHOD_DESCRIPTION);
 
         verify();
     }
+
 }

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?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- 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 Mon Jan 14 15:16:45 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 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.
@@ -99,19 +99,13 @@
         train_get(cache, "foo/Bar", page);
         train_getRootElement(page, rootElement);
 
-        train_triggerEvent(
-                rootElement,
-                TapestryConstants.ACTIVATE_EVENT,
-                new Object[0],
-                null,
-                false);
+        train_triggerEvent(rootElement, TapestryConstants.ACTIVATE_EVENT, new Object[0], null, false);
 
-        renderer.renderPageResponse(page, response);
+        renderer.renderPageResponse(page);
 
         replay();
 
-        PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor,
-                                                                            renderer, response);
+        PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer, response);
 
         Dispatcher d = new PageRenderDispatcher(resolver, handler);
 
@@ -152,15 +146,13 @@
         train_get(cache, "foo/Bar", page);
         train_getRootElement(page, rootElement);
 
-        train_triggerEvent(rootElement, TapestryConstants.ACTIVATE_EVENT, new Object[]
-                {"zip", "zoom"}, null, false);
+        train_triggerEvent(rootElement, TapestryConstants.ACTIVATE_EVENT, new Object[]{"zip", "zoom"}, null, false);
 
-        renderer.renderPageResponse(page, response);
+        renderer.renderPageResponse(page);
 
         replay();
 
-        PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor,
-                                                                            renderer, response);
+        PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer, response);
 
         Dispatcher d = new PageRenderDispatcher(resolver, handler);
 
@@ -174,13 +166,10 @@
         return newMock(ComponentEventResultProcessor.class);
     }
 
-    private void train_triggerEvent(ComponentPageElement element, String eventType,
-                                    Object[] context, ComponentEventHandler handler, boolean handled)
+    private void train_triggerEvent(ComponentPageElement element, String eventType, Object[] context,
+                                    ComponentEventHandler handler, boolean handled)
     {
-        expect(
-                element.triggerEvent(
-                        eq(eventType),
-                        aryEq(context),
-                        isA(ComponentEventHandler.class))).andReturn(handled);
+        expect(element.triggerEvent(eq(eventType), aryEq(context), isA(ComponentEventHandler.class))).andReturn(
+                handled);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestPathOptimizerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestPathOptimizerImplTest.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestPathOptimizerImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/RequestPathOptimizerImplTest.java Mon Jan 14 15:16:45 2008
@@ -53,6 +53,8 @@
 
                               {"", "", "/asset/foo.gif", "asset/foo.gif"},
 
+                              {"", "/griddemo.grid.columns.sort/title", "/assets/default.css", "/assets/default.css"},
+
                               {"/example", "/", "/example/assets/tapestry/default.css", "assets/tapestry/default.css"},
 
                               {"/example", "/newaccount", "/example/assets/tapestry/default.css",

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ResponseRendererImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ResponseRendererImplTest.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ResponseRendererImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ResponseRendererImplTest.java Mon Jan 14 15:16:45 2008
@@ -62,7 +62,7 @@
 
         train_get(cache, pageName, page);
 
-        pageResponseRenderer.renderPageResponse(page, response);
+        pageResponseRenderer.renderPageResponse(page);
 
         replay();
 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/annotations/Scope.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/annotations/Scope.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/annotations/Scope.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/annotations/Scope.java Mon Jan 14 15:16:45 2008
@@ -26,16 +26,15 @@
 import java.lang.annotation.Target;
 
 /**
- * An optional annotation that may be placed on a service building method of a module. The
- * annotation overrides the default scope for services (the default being a global singleton that is
- * instantiated on demand) for an alternate lifecycle. Alternate lifecycles are typically used to
- * bind a service implementation to a single thread or request. Modules may define new scopes. Each
- * scope should have a corresponding {@link ServiceLifecycle} implementation. The linkage from scope
- * name to service lifecycle occurs via a contribution to the {@link ServiceLifecycleSource} service
- * configuration.
+ * An optional annotation that may be placed on a service building method of a module, or on the implementation class
+ * (when using service binding). The annotation overrides the default scope for services (the default being a global
+ * singleton that is instantiated on demand) for an alternate lifecycle. Alternate lifecycles are typically used to bind
+ * a service implementation to a single thread or request. Modules may define new scopes. Each scope should have a
+ * corresponding {@link ServiceLifecycle} implementation. The linkage from scope name to service lifecycle occurs via a
+ * contribution to the {@link ServiceLifecycleSource} service configuration.
  * <p/>
- * The annotation may also be placed directly on a service implementation class, when using service
- * autobuilding (via the {@link ServiceBinder}.
+ * The annotation may also be placed directly on a service implementation class, when using service autobuilding (via
+ * the {@link ServiceBinder}.
  */
 @Target(
         {TYPE, METHOD})

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/AbstractServiceCreator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/AbstractServiceCreator.java?rev=611966&r1=611965&r2=611966&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/AbstractServiceCreator.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/AbstractServiceCreator.java Mon Jan 14 15:16:45 2008
@@ -1,4 +1,4 @@
-// Copyright 2007 The Apache Software Foundation
+// Copyright 2007, 2008 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.
@@ -15,6 +15,7 @@
 package org.apache.tapestry.ioc.internal;
 
 import org.apache.tapestry.ioc.ObjectCreator;
+import org.apache.tapestry.ioc.ObjectLocator;
 import org.apache.tapestry.ioc.ServiceBuilderResources;
 import org.apache.tapestry.ioc.ServiceResources;
 import static org.apache.tapestry.ioc.internal.ConfigurationType.*;
@@ -28,9 +29,8 @@
 import java.util.Map;
 
 /**
- * Abstract implementation of {@link ObjectCreator} geared towards the creation of the core service
- * implementation, either by invoking a service builder method on a module, or by invoking a
- * constructor.
+ * Abstract implementation of {@link ObjectCreator} geared towards the creation of the core service implementation,
+ * either by invoking a service builder method on a module, or by invoking a constructor.
  */
 public abstract class AbstractServiceCreator implements ObjectCreator
 {
@@ -61,15 +61,15 @@
         _logger = resources.getLogger();
 
         _parameterDefaults.put(String.class, _serviceId);
+        _parameterDefaults.put(ObjectLocator.class, resources);
         _parameterDefaults.put(ServiceResources.class, resources);
         _parameterDefaults.put(Logger.class, _logger);
         _parameterDefaults.put(Class.class, resources.getServiceInterface());
     }
 
     /**
-     * Returns a map (based on _parameterDefaults) that includes (possibly) an additional mapping
-     * containing the collected configuration data. This involves scanning the parameters and
-     * generic types.
+     * Returns a map (based on _parameterDefaults) that includes (possibly) an additional mapping containing the
+     * collected configuration data. This involves scanning the parameters and generic types.
      */
     protected final Map<Class, Object> getParameterDefaultsWithConfiguration(Class[] parameterTypes,
                                                                              Type[] genericParameterTypes)
@@ -157,9 +157,9 @@
     }
 
     /**
-     * Extracts from a generic type the underlying parameterized type. I.e., for List<Runnable>,
-     * will return Runnable. This is limited to simple parameterized types, not the more complex
-     * cases involving wildcards and upper/lower boundaries.
+     * Extracts from a generic type the underlying parameterized type. I.e., for List<Runnable>, will return Runnable.
+     * This is limited to simple parameterized types, not the more complex cases involving wildcards and upper/lower
+     * boundaries.
      *
      * @param type the genetic type of the parameter, i.e., List<Runnable>
      * @return the parameterize type (i.e. Runnable.class if type represents List<Runnable>).
@@ -176,15 +176,15 @@
     }
 
     /**
-     * "Sniffs" a generic type to find the underlying parameterized type. If the Type is a class,
-     * then Object.class is returned. Otherwise, the type must be a ParameterizedType. We check to
-     * make sure it has the correct number of a actual types (1 for a Collection or List, 2 for a
-     * Map). The actual types must be classes (wildcards just aren't supported)
+     * "Sniffs" a generic type to find the underlying parameterized type. If the Type is a class, then Object.class is
+     * returned. Otherwise, the type must be a ParameterizedType. We check to make sure it has the correct number of a
+     * actual types (1 for a Collection or List, 2 for a Map). The actual types must be classes (wildcards just aren't
+     * supported)
      *
      * @param type      a Class or ParameterizedType to inspect
      * @param typeIndex the index within the ParameterizedType to extract
-     * @return the actual type, or Object.class if the input type is not generic, or null if any
-     *         other pre-condition is not met
+     * @return the actual type, or Object.class if the input type is not generic, or null if any other pre-condition is
+     *         not met
      */
     private static Class findParameterizedTypeFromGenericType(Type type, int typeIndex)
     {