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/02/01 19:50:27 UTC

svn commit: r617600 - in /tapestry/tapestry5/trunk: ./ tapestry-core/src/main/java/org/apache/tapestry/ tapestry-core/src/main/java/org/apache/tapestry/internal/services/ tapestry-core/src/main/java/org/apache/tapestry/services/ tapestry-core/src/main/...

Author: hlship
Date: Fri Feb  1 10:49:55 2008
New Revision: 617600

URL: http://svn.apache.org/viewvc?rev=617600&view=rev
Log:
TAPESTRY-1994: tapestry-upload processes requests with multipart content even if Tapestry doesn't recognize the page

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Unreachable.tml
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Unreachable.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryConstants.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/IgnoredPathsFilter.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/IgnoredPathsFilterTest.java
    tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry/upload/services/UploadModule.java
    tapestry/tapestry5/trunk/tapestry-upload/src/site/site.xml
    tapestry/tapestry5/trunk/tapestry5.ipr

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryConstants.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryConstants.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryConstants.java Fri Feb  1 10:49:55 2008
@@ -105,6 +105,17 @@
      */
     public static final String COMPRESS_WHITESPACE_SYMBOL = "tapestry.compress-whitespace";
 
+    /**
+     * Time interval defining how often Tapestry will check for updates to local files (including classes). This number
+     * can be raised in a production environment.
+     */
+    public static final String FILE_CHECK_INTERVAL_SYMBOL = "tapestry.file-check-interval";
+
+    /**
+     * Time interval that sets how long Tapestry will wait to obtain the exclusive lock needed to check local files.
+     */
+    public static final String FILE_CHECK_UPDATE_TIMEOUT_SYMBOL = "tapestry.file-check-update-timeout";
+
     private TapestryConstants()
     {
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/IgnoredPathsFilter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/IgnoredPathsFilter.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/IgnoredPathsFilter.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/IgnoredPathsFilter.java Fri Feb  1 10:49:55 2008
@@ -14,16 +14,16 @@
 
 package org.apache.tapestry.internal.services;
 
-import org.apache.tapestry.services.Request;
-import org.apache.tapestry.services.RequestFilter;
-import org.apache.tapestry.services.RequestHandler;
-import org.apache.tapestry.services.Response;
+import org.apache.tapestry.services.HttpServletRequestFilter;
+import org.apache.tapestry.services.HttpServletRequestHandler;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.regex.Pattern;
 
-public class IgnoredPathsFilter implements RequestFilter
+public class IgnoredPathsFilter implements HttpServletRequestFilter
 {
     private final Pattern[] _ignoredPatterns;
 
@@ -41,14 +41,23 @@
         }
     }
 
-    public boolean service(Request request, Response response, RequestHandler handler) throws IOException
+    public boolean service(HttpServletRequest request, HttpServletResponse response, HttpServletRequestHandler handler)
+            throws IOException
     {
-        String path = request.getPath();
+        // The servlet path should be "/", and path info is everything after that.
+
+        String path = request.getServletPath();
+        String pathInfo = request.getPathInfo();
+
+        if (pathInfo != null) path += pathInfo;
+
 
         for (Pattern p : _ignoredPatterns)
         {
             if (p.matcher(path).matches()) return false;
         }
+
+        // Not a match, so let it go.
 
         return handler.service(request, response);
     }

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?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- 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 Fri Feb  1 10:49:55 2008
@@ -115,7 +115,7 @@
         binder.bind(ResponseRenderer.class, ResponseRendererImpl.class);
         binder.bind(RequestPathOptimizer.class, RequestPathOptimizerImpl.class);
         binder.bind(NullFieldStrategySource.class, NullFieldStrategySourceImpl.class);
-        binder.bind(RequestFilter.class, IgnoredPathsFilter.class).withId("IgnoredPathsFilter");
+        binder.bind(HttpServletRequestFilter.class, IgnoredPathsFilter.class).withId("IgnoredPathsFilter");
         binder.bind(PageResourcesSource.class, PageResourcesSourceImpl.class);
     }
 
@@ -458,6 +458,15 @@
         configuration.add("Service", new ServiceAnnotationObjectProvider(), "before:Alias");
     }
 
+
+    public static void contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter> configuration,
+
+                                                           @InjectService("IgnoredPathsFilter")
+                                                           HttpServletRequestFilter ignoredPathsFilter)
+    {
+        configuration.add("IgnoredPaths", ignoredPathsFilter);
+    }
+
     /**
      * Continues a number of filters into the RequestHandler service: <dl> <dt>StaticFiles</dt> <dd>Checks to see if the
      * request is for an actual file, if so, returns true to let the servlet container process the request</dd>
@@ -465,8 +474,7 @@
      * cached data has changed (see {@link org.apache.tapestry.internal.services.CheckForUpdatesFilter}).
      * <dt>ErrorFilter</dt> <dd>Catches request errors and lets the {@link org.apache.tapestry.services.RequestExceptionHandler}
      * handle them</dd> <dt>Localization</dt> <dd>Determines the locale for the current request from header data or
-     * cookies in the request</dd> <dt>IgnoredPaths</dt> <dd>Forces Tapestry to ignore paths, based on regular
-     * expressions contributed to the IgnoredPathsFilter service.  Ordered after StaticFiles.</dd>
+     * cookies in the request</dd>
      * <dt>StoreIntoGlobals</dt> <dd>Stores the request and response into the {@link
      * org.apache.tapestry.services.RequestGlobals} service (this is repeated at the end of the pipeline, in case any
      * filter substitutes the request or response). </dl>
@@ -476,17 +484,15 @@
                                          final RequestExceptionHandler exceptionHandler,
 
                                          // @Inject not needed because its a long, not a String
-                                         @Symbol("tapestry.file-check-interval") @IntermediateType(TimeInterval.class)
+                                         @Symbol(TapestryConstants.FILE_CHECK_INTERVAL_SYMBOL)
+                                         @IntermediateType(TimeInterval.class)
                                          long checkInterval,
 
-                                         @Symbol("tapestry.file-check-update-timeout")
+                                         @Symbol(TapestryConstants.FILE_CHECK_UPDATE_TIMEOUT_SYMBOL)
                                          @IntermediateType(TimeInterval.class)
                                          long updateTimeout,
 
-                                         LocalizationSetter localizationSetter,
-
-                                         @InjectService("IgnoredPathsFilter")
-                                         RequestFilter ignoredPathsFilter)
+                                         LocalizationSetter localizationSetter)
     {
         RequestFilter staticFilesFilter = new StaticFilesFilter(context);
 
@@ -530,8 +536,6 @@
 
         configuration.add("StaticFiles", staticFilesFilter);
 
-        configuration.add("IgnoredPaths", ignoredPathsFilter, "after:StaticFiles");
-
         configuration.add("ErrorFilter", errorFilter);
 
         configuration.add("StoreIntoGlobals", storeIntoGlobals);
@@ -1669,8 +1673,8 @@
         // Remember this is request-to-request time, presumably it'll take the developer more than
         // one second to make a change, save it, and switch back to the browser.
 
-        configuration.add("tapestry.file-check-interval", "1 s");
-        configuration.add("tapestry.file-check-update-timeout", "50 ms");
+        configuration.add(TapestryConstants.FILE_CHECK_INTERVAL_SYMBOL, "1 s");
+        configuration.add(TapestryConstants.FILE_CHECK_UPDATE_TIMEOUT_SYMBOL, "50 ms");
 
         // This should be overridden for particular applications.
         configuration.add(TapestryConstants.SUPPORTED_LOCALES_SYMBOL, "en,it,zh_CN");

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Fri Feb  1 10:49:55 2008
@@ -984,4 +984,25 @@
     {
         expect(request.isXHR()).andReturn(isXHR).atLeastOnce();
     }
+
+    protected void train_getPathInfo(HttpServletRequest request, String pathInfo)
+    {
+        expect(request.getPathInfo()).andReturn(pathInfo).atLeastOnce();
+    }
+
+    protected final void train_service(HttpServletRequestHandler handler, HttpServletRequest request,
+                                       HttpServletResponse response, boolean result) throws IOException
+    {
+        expect(handler.service(request, response)).andReturn(result);
+    }
+
+    protected final void train_getServletPath(HttpServletRequest request, String path)
+    {
+        expect(request.getServletPath()).andReturn(path).atLeastOnce();
+    }
+
+    protected final HttpServletRequestHandler mockHttpServletRequestHandler()
+    {
+        return newMock(HttpServletRequestHandler.class);
+    }
 }

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Unreachable.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Unreachable.tml?rev=617600&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Unreachable.tml (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Unreachable.tml Fri Feb  1 10:49:55 2008
@@ -0,0 +1,3 @@
+<html>
+    <h1>This page should not be reachable, due to IgnoredPathsFilter.</h1>
+</html>
\ No newline at end of file

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?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- 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 Fri Feb  1 10:49:55 2008
@@ -1289,31 +1289,31 @@
 
         String[] paths = new String[]{"//input[@id='textfield']",
 
-                                      "//input[@id='passwordfield']",
+                "//input[@id='passwordfield']",
 
-                                      "//textarea[@id='textarea']",
+                "//textarea[@id='textarea']",
 
-                                      "//input[@id='checkbox']",
+                "//input[@id='checkbox']",
 
-                                      "//select[@id='select']",
+                "//select[@id='select']",
 
-                                      "//input[@id='radio1']",
+                "//input[@id='radio1']",
 
-                                      "//input[@id='radio2']",
+                "//input[@id='radio2']",
 
-                                      "//input[@id='datefield']",
+                "//input[@id='datefield']",
 
-                                      "//button[@id='datefield:trigger']",
+                "//button[@id='datefield:trigger']",
 
-                                      "//select[@id='palette:avail']",
+                "//select[@id='palette:avail']",
 
-                                      "//button[@id='palette:select']",
+                "//button[@id='palette:select']",
 
-                                      "//button[@id='palette:deselect']",
+                "//button[@id='palette:deselect']",
 
-                                      "//select[@id='palette']",
+                "//select[@id='palette']",
 
-                                      "//input[@id='submit']"};
+                "//input[@id='submit']"};
 
         for (String path : paths)
         {
@@ -1538,5 +1538,16 @@
 
         assertTextPresent("RenderErrorDemo", "class " + RenderErrorDemo.class.getName(), "RenderErrorDemo:border",
                           "RenderErrorDemo:echo");
+    }
+
+    /**
+     * TAPESTRY-1594
+     */
+    @Test
+    public void ignored_paths_filter()
+    {
+        start("Unreachable Page");
+
+        assertTextPresent("HTTP ERROR: 404");
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java Fri Feb  1 10:49:55 2008
@@ -139,6 +139,7 @@
 
             new Item("ValidBeanEditorDemo", "Client Validation Demo", "BeanEditor with validation enabled"),
 
+            new Item("Unreachable", "Unreachable Page", "page not reachable due to IgnoredPathsFilter"),
 
             new Item("renderabledemo", "Renderable Demo", "shows that render phase methods can return a Renderable"),
 

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Unreachable.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Unreachable.java?rev=617600&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Unreachable.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/Unreachable.java Fri Feb  1 10:49:55 2008
@@ -0,0 +1,19 @@
+// 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.
+// 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.app1.pages;
+
+public class Unreachable
+{
+}

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java Fri Feb  1 10:49:55 2008
@@ -18,6 +18,7 @@
 import org.apache.tapestry.integration.app1.data.Track;
 import org.apache.tapestry.ioc.MappedConfiguration;
 import org.apache.tapestry.ioc.OrderedConfiguration;
+import org.apache.tapestry.ioc.Configuration;
 import org.apache.tapestry.ioc.annotations.Marker;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.services.Request;
@@ -107,6 +108,11 @@
         configuration.add(TapestryConstants.COMPRESS_WHITESPACE_SYMBOL, "false");
 
         configuration.add("app.injected-symbol", "Symbol contributed to ApplicationDefaults");
+    }
+
+    public static void contributeIgnoredPathsFilter(Configuration<String> configuration)
+    {
+        configuration.add("/unreachable");
     }
 
     public ToDoDatabase buildToDoDatabase()

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/IgnoredPathsFilterTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/IgnoredPathsFilterTest.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/IgnoredPathsFilterTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/IgnoredPathsFilterTest.java Fri Feb  1 10:49:55 2008
@@ -15,13 +15,13 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry.services.Request;
-import org.apache.tapestry.services.RequestFilter;
-import org.apache.tapestry.services.RequestHandler;
-import org.apache.tapestry.services.Response;
+import org.apache.tapestry.services.HttpServletRequestFilter;
+import org.apache.tapestry.services.HttpServletRequestHandler;
 import org.apache.tapestry.test.TapestryTestCase;
 import org.testng.annotations.Test;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
@@ -30,11 +30,12 @@
     @Test
     public void no_match() throws IOException
     {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
+        HttpServletRequest request = mockHttpServletRequest();
+        HttpServletResponse response = mockHttpServletResponse();
+        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
 
-        train_getPath(request, "/barney");
+        train_getServletPath(request, "/");
+        train_getPathInfo(request, "barney");
 
         train_service(handler, request, response, true);
 
@@ -43,7 +44,31 @@
 
         replay();
 
-        RequestFilter filter = new IgnoredPathsFilter(configuration);
+        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
+
+        assertTrue(filter.service(request, response, handler));
+
+        verify();
+    }
+
+    @Test
+    public void no_path_info() throws Exception
+    {
+        HttpServletRequest request = mockHttpServletRequest();
+        HttpServletResponse response = mockHttpServletResponse();
+        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
+
+        train_getServletPath(request, "/");
+        train_getPathInfo(request, null);
+
+        train_service(handler, request, response, true);
+
+        List<String> configuration = CollectionFactory.newList("/fred");
+
+
+        replay();
+
+        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
 
         assertTrue(filter.service(request, response, handler));
 
@@ -53,17 +78,18 @@
     @Test
     public void path_excluded() throws Exception
     {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
+        HttpServletRequest request = mockHttpServletRequest();
+        HttpServletResponse response = mockHttpServletResponse();
+        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
 
-        train_getPath(request, "/barney/rubble");
+        train_getServletPath(request, "/");
+        train_getPathInfo(request, "barney/rubble");
 
         List<String> configuration = CollectionFactory.newList("/barney.*");
 
         replay();
 
-        RequestFilter filter = new IgnoredPathsFilter(configuration);
+        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
 
         assertFalse(filter.service(request, response, handler));
 

Modified: tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry/upload/services/UploadModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry/upload/services/UploadModule.java?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry/upload/services/UploadModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry/upload/services/UploadModule.java Fri Feb  1 10:49:55 2008
@@ -66,10 +66,13 @@
         return multipartDecoder;
     }
 
+    /**
+     * Contributes a filter, "MultipartFilter" after "IgnoredPaths".
+     */
     public static void contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter> configuration,
                                                            MultipartDecoder multipartDecoder)
     {
-        configuration.add("MultipartFilter", new MultipartServletRequestFilter(multipartDecoder));
+        configuration.add("MultipartFilter", new MultipartServletRequestFilter(multipartDecoder), "after:IgnoredPaths");
     }
 
     public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)

Modified: tapestry/tapestry5/trunk/tapestry-upload/src/site/site.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-upload/src/site/site.xml?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-upload/src/site/site.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-upload/src/site/site.xml Fri Feb  1 10:49:55 2008
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   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.
--->
-
+<!-- 
+   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.
+-->
+
 <project name="Tapestry File Upload">
     <bannerLeft>
         <name>Tapestry 5</name>
@@ -42,7 +42,7 @@
         </menu>
 
         <menu name="Documentation">
-            <item name="Reference" href="index.html"/>
+            <item name="Reference" href="ref/index.html"/>
         </menu>
 
         <menu ref="reports"/>

Modified: tapestry/tapestry5/trunk/tapestry5.ipr
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry5.ipr?rev=617600&r1=617599&r2=617600&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry5.ipr (original)
+++ tapestry/tapestry5/trunk/tapestry5.ipr Fri Feb  1 10:49:55 2008
@@ -1,67 +1,102 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project relativePaths="false" version="4">
-  <component name="AntConfiguration">
-    <defaultAnt bundledAnt="true" />
-  </component>
   <component name="BuildJarProjectSettings">
     <option name="BUILD_JARS_ON_MAKE" value="false" />
   </component>
+  <component name="CCaseConfig">
+    <option name="checkoutReserved" value="false" />
+    <option name="markExternalChangeAsUpToDate" value="true" />
+    <option name="checkInUseHijack" value="true" />
+    <option name="useUcmModel" value="true" />
+    <option name="isOffline" value="false" />
+    <option name="synchOutside" value="false" />
+    <option name="isHistoryResticted" value="true" />
+    <option name="useIdenticalSwitch" value="true" />
+    <option name="synchActivitiesOnRefresh" value="true" />
+    <option name="lastScr" value="" />
+    <option name="scrTextFileName" value="" />
+    <option name="historyRevisionsNumber" value="4" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
   <component name="CodeStyleProjectProfileManger">
     <option name="PROJECT_PROFILE" />
     <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
   </component>
   <component name="CodeStyleSettingsManager">
-    <option name="PER_PROJECT_SETTINGS">
-      <value>
-        <option name="KEEP_LINE_BREAKS" value="false" />
-        <option name="BRACE_STYLE" value="2" />
-        <option name="CLASS_BRACE_STYLE" value="2" />
-        <option name="METHOD_BRACE_STYLE" value="2" />
-        <option name="ELSE_ON_NEW_LINE" value="true" />
-        <option name="CATCH_ON_NEW_LINE" value="true" />
-        <option name="FINALLY_ON_NEW_LINE" value="true" />
-        <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
-        <option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
-        <option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
-        <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
-        <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" />
-        <option name="FIELD_NAME_PREFIX" value="_" />
-        <option name="OPTIMIZE_IMPORTS_ON_THE_FLY" value="true" />
-        <option name="ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY" value="true" />
-        <option name="CALL_PARAMETERS_WRAP" value="1" />
-        <option name="METHOD_PARAMETERS_WRAP" value="1" />
-        <option name="THROWS_LIST_WRAP" value="1" />
-        <option name="THROWS_KEYWORD_WRAP" value="1" />
-        <option name="ARRAY_INITIALIZER_WRAP" value="1" />
-        <option name="WRAP_COMMENTS" value="true" />
-        <option name="PARAMETER_ANNOTATION_WRAP" value="5" />
-        <ADDITIONAL_INDENT_OPTIONS fileType="js">
-          <option name="INDENT_SIZE" value="4" />
-          <option name="CONTINUATION_INDENT_SIZE" value="8" />
-          <option name="TAB_SIZE" value="4" />
-          <option name="USE_TAB_CHARACTER" value="false" />
-          <option name="SMART_TABS" value="false" />
-          <option name="LABEL_INDENT_SIZE" value="0" />
-          <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-        </ADDITIONAL_INDENT_OPTIONS>
-      </value>
-    </option>
-    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
+    <option name="PER_PROJECT_SETTINGS" />
+    <option name="USE_PER_PROJECT_SETTINGS" value="false" />
   </component>
   <component name="CompilerConfiguration">
     <option name="DEFAULT_COMPILER" value="Javac" />
-    <option name="DEPLOY_AFTER_MAKE" value="2" />
-    <excludeFromCompile>
-      <directory url="file://$PROJECT_DIR$/quickstart/src/main/resources" includeSubdirectories="true" />
-    </excludeFromCompile>
+    <option name="DEPLOY_AFTER_MAKE" value="0" />
     <resourceExtensions>
-      <entry name=".+\.(properties|xml|html|dtd|tld|tml|js|css)" />
+      <entry name=".+\.(properties|xml|html|dtd|tld)" />
       <entry name=".+\.(gif|png|jpeg|jpg)" />
     </resourceExtensions>
     <wildcardResourcePatterns>
-      <entry name="!?*.java" />
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
     </wildcardResourcePatterns>
   </component>
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+    <option name="REVERSE_PATCH" value="false" />
+  </component>
+  <component name="DaemonCodeAnalyzer">
+    <disable_hints />
+  </component>
+  <component name="DebuggerManager">
+    <breakpoint_any>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+    </breakpoint_any>
+    <breakpoint_rules />
+    <ui_properties />
+  </component>
   <component name="DependenciesAnalyzeManager">
     <option name="myForwardDirection" value="false" />
   </component>
@@ -85,37 +120,19 @@
   <component name="EntryPointsManager">
     <entry_points version="2.0" />
   </component>
-  <component name="FacetAutodetectingManager">
-    <autodetection-disabled>
-      <facet-type id="web">
-        <modules>
-          <module name="tutorial1" />
-          <module name="quickstart">
-            <files>
-              <file url="file://$PROJECT_DIR$/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml" />
-            </files>
-          </module>
-          <module name="tapestry-core">
-            <files>
-              <file url="file://$PROJECT_DIR$/tapestry-core/src/test/app1/WEB-INF/web.xml" />
-              <file url="file://$PROJECT_DIR$/tapestry-core/target/site-webapp/WEB-INF/web.xml" />
-            </files>
-          </module>
-          <module name="tapestry-project" />
-          <module name="tapestry-spring" />
-          <module name="tapestry-upload" />
-        </modules>
-      </facet-type>
-      <facet-type id="hibernate">
-        <modules>
-          <module name="tapestry-hibernate">
-            <files>
-              <file url="file://$PROJECT_DIR$/tapestry-hibernate/src/test/resources/hibernate.cfg.xml" />
-            </files>
-          </module>
-        </modules>
-      </facet-type>
-    </autodetection-disabled>
+  <component name="ErrorTreeViewConfiguration">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="HIDE_WARNINGS" value="false" />
+  </component>
+  <component name="FindManager">
+    <FindUsagesManager>
+      <setting name="OPEN_NEW_TAB" value="false" />
+    </FindUsagesManager>
+  </component>
+  <component name="HierarchyBrowserManager">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="SORT_ALPHABETICALLY" value="false" />
+    <option name="HIDE_CLASSES_WHERE_METHOD_NOT_IMPLEMENTED" value="false" />
   </component>
   <component name="IdProvider" IDEtalkID="5869BD07806E60386FB39DF824C84757" />
   <component name="InspectionProjectProfileManager">
@@ -162,12 +179,12 @@
     <option name="IS_EMACS_ERRORS_MODE" value="true" />
     <option name="ADDITIONAL_OPTIONS_STRING" value="" />
   </component>
-  <component name="MavenImporterState">
-    <option name="autoImport">
-      <set>
-        <option value="$PROJECT_DIR$/pom.xml" />
-      </set>
-    </option>
+  <component name="MavenBuilder">
+    <option name="jreName" value="1.5" />
+  </component>
+  <component name="ModuleEditorState">
+    <option name="LAST_EDITED_MODULE_NAME" />
+    <option name="LAST_EDITED_TAB_NAME" />
   </component>
   <component name="Palette2">
     <group name="Swing">
@@ -291,11 +308,57 @@
     </group>
   </component>
   <component name="ProjectFileVersion" converted="true" />
+  <component name="ProjectLevelVcsManager">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
   <component name="ProjectModuleManager">
     <modules />
   </component>
+  <component name="ProjectReloadState">
+    <option name="STATE" value="0" />
+  </component>
   <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/bin" />
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1" splitterProportion="0.5">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <showStructure />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="MemberChooser.copyJavadoc" value="false" />
+    <property name="GoToClass.includeLibraries" value="false" />
+    <property name="MemberChooser.showClasses" value="true" />
+    <property name="MemberChooser.sorted" value="false" />
+    <property name="GoToFile.includeJavaFiles" value="false" />
+    <property name="GoToClass.toSaveIncludeLibraries" value="false" />
+  </component>
+  <component name="Regex">
+    <option name="pos1" value="218" />
+    <option name="pos2" value="218" />
+    <option name="pos3" value="162" />
+    <option name="pos4" value="444" />
+    <option name="pos5" value="162" />
+    <option name="autoUpdate" value="true" />
+    <option name="referenceOn" value="false" />
+    <option name="referencePos" value="0" />
+    <option name="showLabels" value="true" />
   </component>
   <component name="ResourceManagerContainer">
     <option name="myResourceBundles">
@@ -311,27 +374,174 @@
     <option name="GENERATE_IIOP_STUBS" value="false" />
     <option name="ADDITIONAL_OPTIONS_STRING" value="" />
   </component>
-  <component name="SvnBranchConfigurationManager">
-    <option name="myConfigurationMap">
-      <map>
-        <entry key="$PROJECT_DIR$">
-          <value>
-            <SvnBranchConfiguration>
-              <option name="branchUrls">
-                <list>
-                  <option value="https://svn.apache.org/repos/asf/tapestry/tapestry5/branches" />
-                  <option value="https://svn.apache.org/repos/asf/tapestry/tapestry5/tags" />
-                </list>
-              </option>
-              <option name="trunkUrl" value="https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk" />
-            </SvnBranchConfiguration>
-          </value>
-        </entry>
-      </map>
-    </option>
+  <component name="RubyDocSettings">
+    <RUBY_DOC NAME="DEFAULTS" VALUE="TRUE" />
+    <RUBY_DOC NAME="NUMBER" VALUE="0" />
+  </component>
+  <component name="RunManager">
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <option name="VM_PARAMETERS" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+    </configuration>
+    <configuration default="true" type="Remote" factoryName="Remote">
+      <option name="USE_SOCKET_TRANSPORT" value="true" />
+      <option name="SERVER_MODE" value="false" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="ADDITIONAL_CLASS_PATH" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="wholeProject" />
+      </option>
+      <envs />
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+    </configuration>
+    <list size="0" />
+    <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
+      <Host>localhost</Host>
+      <Port>5050</Port>
+    </configuration>
+  </component>
+  <component name="StarteamConfiguration">
+    <option name="SERVER" value="" />
+    <option name="PORT" value="49201" />
+    <option name="USER" value="" />
+    <option name="PASSWORD" value="" />
+    <option name="PROJECT" value="" />
+    <option name="VIEW" value="" />
+    <option name="ALTERNATIVE_WORKING_PATH" value="" />
+    <option name="LOCK_ON_CHECKOUT" value="false" />
+    <option name="UNLOCK_ON_CHECKIN" value="false" />
+  </component>
+  <component name="StructureViewFactory">
+    <option name="AUTOSCROLL_MODE" value="true" />
+    <option name="AUTOSCROLL_FROM_SOURCE" value="false" />
+    <option name="ACTIVE_ACTIONS" value="" />
+  </component>
+  <component name="SvnConfiguration">
+    <option name="USER" value="" />
+    <option name="PASSWORD" value="" />
+    <option name="LAST_MERGED_REVISION" />
+    <option name="UPDATE_RUN_STATUS" value="false" />
+    <option name="UPDATE_RECURSIVELY" value="true" />
+    <option name="MERGE_DRY_RUN" value="false" />
+    <configuration useDefault="false">/Users/Howard/.subversion</configuration>
+  </component>
+  <component name="Talios.JiraConfigurationComponent" enableIssueTracking="false" autoRefresh="false" useExternalBrowser="false" refreshTimeout="0" annotateissues="false">
+    <servers />
+    <columns>
+      <column id="created" position="0" width="-1" />
+      <column id="key" position="1" width="-1" />
+      <column id="component" position="2" width="-1" />
+      <column id="title" position="3" width="-1" />
+      <column id="type" position="4" width="-1" />
+      <column id="priority" position="5" width="-1" />
+      <column id="status" position="6" width="-1" />
+      <column id="resolution" position="7" width="-1" />
+      <column id="assignee" position="8" width="-1" />
+      <column id="reporter" position="9" width="-1" />
+      <column id="updated" position="10" width="-1" />
+      <column id="dueDate" position="11" width="-1" />
+      <column id="version" position="12" width="-1" />
+      <column id="fixVersion" position="13" width="-1" />
+    </columns>
+  </component>
+  <component name="TodoView">
+    <todo-panel id="selected-file">
+      <are-packages-shown value="false" />
+      <are-modules-shown value="false" />
+      <flatten-packages value="false" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="all">
+      <are-packages-shown value="true" />
+      <are-modules-shown value="false" />
+      <flatten-packages value="false" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="default-changelist">
+      <are-packages-shown value="false" />
+      <are-modules-shown value="false" />
+      <flatten-packages value="false" />
+      <is-autoscroll-to-source value="false" />
+    </todo-panel>
+  </component>
+  <component name="TrackLink.CheckinHandlerFactory" checkbox="false" filtering="false" dialogWidth="700" dialogHeight="580" />
+  <component name="TrackLink.DashboardWindow" wasConnectedAlready="false" autoStart="false" discoverWorkspace="true" workspace="" integrate="0" codelinks_default_selection="true" vcslinks_default_selection="true" open_in_new_tab="true">
+    <DashboardRootNode>
+      <ExpandedNodes />
+    </DashboardRootNode>
   </component>
   <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="svn" />
+    <mapping directory="" vcs="" />
+  </component>
+  <component name="VssConfiguration">
+    <option name="CLIENT_PATH" value="" />
+    <option name="SRCSAFEINI_PATH" value="" />
+    <option name="USER_NAME" value="" />
+    <option name="PWD" value="" />
+    <CheckoutOptions>
+      <option name="COMMENT" value="" />
+      <option name="DO_NOT_GET_LATEST_VERSION" value="false" />
+      <option name="REPLACE_WRITABLE" value="false" />
+      <option name="RECURSIVE" value="false" />
+    </CheckoutOptions>
+    <CheckinOptions>
+      <option name="COMMENT" value="" />
+      <option name="KEEP_CHECKED_OUT" value="false" />
+      <option name="RECURSIVE" value="false" />
+    </CheckinOptions>
+    <AddOptions>
+      <option name="STORE_ONLY_LATEST_VERSION" value="false" />
+      <option name="CHECK_OUT_IMMEDIATELY" value="false" />
+    </AddOptions>
+    <UndocheckoutOptions>
+      <option name="MAKE_WRITABLE" value="false" />
+      <option name="REPLACE_LOCAL_COPY" value="0" />
+      <option name="RECURSIVE" value="false" />
+    </UndocheckoutOptions>
+    <GetOptions>
+      <option name="REPLACE_WRITABLE" value="0" />
+      <option name="MAKE_WRITABLE" value="false" />
+      <option name="ANSWER_NEGATIVELY" value="false" />
+      <option name="ANSWER_POSITIVELY" value="false" />
+      <option name="RECURSIVE" value="false" />
+      <option name="VERSION" />
+    </GetOptions>
   </component>
   <component name="WebServicesPlugin" addRequiredLibraries="true" />
 </project>