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="<template>" 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>