Author: ivaynberg
Date: Mon Mar 1 22:37:53 2010
New Revision: 917764
URL: http://svn.apache.org/viewvc?rev=917764&view=rev
Log:
test fixes
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
(contents, props changed)
- copied, changed from r917565,
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
(contents, props changed)
- copied, changed from r917565,
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/AttributeModifierComponentTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/ResourceTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/AutolinkPageExpectedResult_1.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java Mon
Mar 1 22:37:53 2010
@@ -928,7 +928,7 @@
sharedResources = newSharedResources(resourceReferenceRegistry);
// set up default request mapper
- setRootRequestMapper(new SystemMapper(getResourceSettings()));
+ setRootRequestMapper(new SystemMapper(this));
pageFactory = newPageFactory();
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java Mon
Mar 1 22:37:53 2010
@@ -23,7 +23,7 @@
import org.apache.wicket.ng.request.mapper.ResourceReferenceMapper;
import org.apache.wicket.ng.request.mapper.ThreadsafeCompoundRequestMapper;
import
org.apache.wicket.ng.request.mapper.parameters.SimplePageParametersEncoder;
-import org.apache.wicket.settings.IResourceSettings;
+import org.apache.wicket.util.IProvider;
/**
@@ -37,14 +37,31 @@
/**
* Constructor
*/
- public SystemMapper(IResourceSettings settings)
+ public SystemMapper(Application application)
{
register(RestartResponseAtInterceptPageException.MAPPER);
register(new HomePageMapper());
register(new PageInstanceMapper());
register(new BookmarkableMapper());
register(new ResourceReferenceMapper(new
SimplePageParametersEncoder(),
- settings.getParentFolderPlaceholder()));
+ new ParentFolderPlaceholderProvider(application)));
register(new BufferedResponseMapper());
}
+
+ private static class ParentFolderPlaceholderProvider implements
IProvider<String>
+ {
+ private final Application application;
+
+ public ParentFolderPlaceholderProvider(Application application)
+ {
+ this.application = application;
+ }
+
+ public String get()
+ {
+ return
application.getResourceSettings().getParentFolderPlaceholder();
+ }
+
+
+ }
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java Mon
Mar 1 22:37:53 2010
@@ -277,6 +277,17 @@
public void setQueryParameter(String name, Object value)
{
removeQueryParameters(name);
+ addQueryParameter(name, value);
+ }
+
+ /**
+ * Convenience method that removes adds a query parameter with given
name
+ *
+ * @param name
+ * @param value
+ */
+ public void addQueryParameter(String name, Object value)
+ {
if (value != null)
{
QueryParameter parameter = new QueryParameter(name,
value.toString());
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java
Mon Mar 1 22:37:53 2010
@@ -24,6 +24,9 @@
import org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder;
import
org.apache.wicket.ng.request.mapper.parameters.SimplePageParametersEncoder;
import org.apache.wicket.ng.resource.ResourceReference;
+import org.apache.wicket.util.IProvider;
+import org.apache.wicket.util.NullProvider;
+import org.apache.wicket.util.lang.Checks;
import org.apache.wicket.util.lang.Classes;
/**
@@ -44,7 +47,7 @@
public class ResourceReferenceMapper extends AbstractResourceReferenceMapper
{
private final IPageParametersEncoder pageParametersEncoder;
- private final String relativePathPartEscapeSequence;
+ private final IProvider<String> relativePathPartEscapeSequence;
/**
* Construct.
@@ -53,8 +56,9 @@
* @param relativePathPartEscapeSequence
*/
public ResourceReferenceMapper(IPageParametersEncoder
pageParametersEncoder,
- String relativePathPartEscapeSequence)
+ IProvider<String> relativePathPartEscapeSequence)
{
+ Checks.argumentNotNull("relativePathPartEscapeSequence",
"relativePathPartEscapeSequence");
this.pageParametersEncoder = pageParametersEncoder;
this.relativePathPartEscapeSequence =
relativePathPartEscapeSequence;
}
@@ -64,7 +68,7 @@
*/
public ResourceReferenceMapper()
{
- this(new SimplePageParametersEncoder(), null);
+ this(new SimplePageParametersEncoder(), new
NullProvider<String>());
}
/**
@@ -74,11 +78,11 @@
{
Url url = request.getUrl();
- if (relativePathPartEscapeSequence != null)
+ if (relativePathPartEscapeSequence.get() != null)
{
for (int i = 0; i < url.getSegments().size(); i++)
{
- if
(url.getSegments().get(i).equals(relativePathPartEscapeSequence))
+ if
(url.getSegments().get(i).equals(relativePathPartEscapeSequence.get()))
{
url.getSegments().set(i, "..");
}
@@ -159,13 +163,13 @@
url = encodePageParameters(url, parameters,
pageParametersEncoder);
}
- if (relativePathPartEscapeSequence != null)
+ if (relativePathPartEscapeSequence.get() != null)
{
for (int i = 0; i < url.getSegments().size();
i++)
{
if
("..".equals(url.getSegments().get(i)))
{
- url.getSegments().set(i,
relativePathPartEscapeSequence);
+ url.getSegments().set(i,
relativePathPartEscapeSequence.get());
}
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
Mon Mar 1 22:37:53 2010
@@ -33,6 +33,7 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -48,7 +49,7 @@
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ng.mock.MockRequestParameters;
import org.apache.wicket.ng.request.Url;
-import org.apache.wicket.protocol.http.RequestUtils;
+import org.apache.wicket.ng.request.Url.QueryParameter;
import org.apache.wicket.protocol.http.WicketURLDecoder;
import org.apache.wicket.protocol.http.WicketURLEncoder;
import org.apache.wicket.util.file.File;
@@ -162,7 +163,7 @@
private String method;
- private final ValueMap parameters = new ValueMap();
+ private final LinkedHashMap<String, String[]> parameters = new
LinkedHashMap<String, String[]>();
private String path;
@@ -385,6 +386,23 @@
return "/context";
}
+ public Cookie getCookie(String name)
+ {
+ Cookie[] cookies = getCookies();
+ if (cookies == null)
+ {
+ return null;
+ }
+ for (Cookie cookie : cookies)
+ {
+ if (cookie.getName().equals(name))
+ {
+ return cookie;
+ }
+ }
+ return null;
+ }
+
/**
* Get all of the cookies for this request.
*
@@ -607,7 +625,15 @@
*/
public String getParameter(final String name)
{
- return parameters.getString(name);
+ String[] param = parameters.get(name);
+ if (param == null)
+ {
+ return null;
+ }
+ else
+ {
+ return param[0];
+ }
}
/**
@@ -617,7 +643,9 @@
*/
public Map<String, Object> getParameterMap()
{
- return parameters;
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.putAll(parameters);
+ return Collections.unmodifiableMap(map);
}
/**
@@ -704,7 +732,7 @@
for (Iterator<String> iterator =
parameters.keySet().iterator(); iterator.hasNext();)
{
final String name = iterator.next();
- final String value = parameters.getString(name);
+ final String value = getParameter(name);
if (name != null)
{
buf.append(WicketURLEncoder.QUERY_INSTANCE.encode(name));
@@ -1121,7 +1149,34 @@
*/
public void setParameter(final String name, final String value)
{
- parameters.put(name, value);
+ if (value == null)
+ {
+ parameters.remove(name);
+ }
+ else
+ {
+ parameters.put(name, new String[] { value });
+ }
+ }
+
+ public void addParameter(final String name, final String value)
+ {
+ if (value == null)
+ {
+ return;
+ }
+ String[] val = parameters.get(name);
+ if (val == null)
+ {
+ parameters.put(name, new String[] { value });
+ }
+ else
+ {
+ String[] newval = new String[val.length + 1];
+ System.arraycopy(val, 0, newval, 0, val.length);
+ newval[val.length] = value;
+ parameters.put(name, newval);
+ }
}
/**
@@ -1182,9 +1237,12 @@
setPath(url.substring(0, index));
String queryString = url.substring(index + 1);
- Map<String, String[]> params = new HashMap<String,
String[]>();
- RequestUtils.decodeUrlParameters(queryString, params);
- parameters.putAll(params);
+
+ parameters.clear();
+ for (QueryParameter parameter : Url.parse("?" +
queryString).getQueryParameters())
+ {
+ addParameter(parameter.getName(),
parameter.getValue());
+ }
}
}
@@ -1349,39 +1407,6 @@
// }
/**
- * Initialize the request parameters from the given redirect string
that redirects back to a
- * particular component for display.
- *
- * @param redirect
- * The redirect string to display from
- */
- public void setRequestToRedirectString(final String redirect)
- {
- parameters.clear();
-
- int queryStringPos = redirect.indexOf('?');
-
- // Decode the parameters
- if (queryStringPos != -1)
- {
- final String queryString =
redirect.substring(queryStringPos + 1);
- RequestUtils.decodeParameters(queryString, parameters);
- }
-
- // We need to absolutize the redirect URL as we are not as
smart as a web-browser
- // (WICKET-702)
- url = redirect;
- if ((url.length() == 0) || (url.charAt(0) != '/'))
- {
- url = getContextPath() + getServletPath() + "/" +
redirect;
- }
-
- // Remove occurrences of ".." from the path
- url = RequestUtils.removeDoubleDots(url);
- log.info("Redirecting to " + url);
- }
-
- /**
* Helper method to create some default headers for the request
*/
private void setDefaultHeaders()
@@ -1424,7 +1449,11 @@
for (Iterator<String> iterator =
post.getParameterNames().iterator(); iterator.hasNext();)
{
final String name = iterator.next();
- url.setQueryParameter(name,
post.getParameterValue(name.toString()));
+ List<org.apache.wicket.util.string.StringValue>
values = post.getParameterValues(name);
+ for (org.apache.wicket.util.string.StringValue
value : values)
+ {
+ url.addQueryParameter(name,
value.toString());
+ }
}
String body = url.toString().substring(1);
return body.getBytes();
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
Mon Mar 1 22:37:53 2010
@@ -23,7 +23,6 @@
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
@@ -35,7 +34,6 @@
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
-import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.util.value.ValueMap;
@@ -57,8 +55,6 @@
private String characterEncoding = "UTF-8";
- private int code = HttpServletResponse.SC_OK;
-
private final List<Cookie> cookies = new ArrayList<Cookie>();
private String errorMessage = null;
@@ -264,22 +260,13 @@
return characterEncoding;
}
- /**
- * Get the response code for this request.
- *
- * @return The response code
- */
- public int getCode()
- {
- return code;
- }
/**
* Get all of the cookies that have been added to the response.
*
* @return The collection of cookies
*/
- public Collection<Cookie> getCookies()
+ public List<Cookie> getCookies()
{
return cookies;
}
@@ -382,7 +369,7 @@
*
* @return The status code
*/
- public int getStatus()
+ public Integer getStatus()
{
return status;
}
@@ -411,7 +398,6 @@
{
cookies.clear();
headers.clear();
- code = HttpServletResponse.SC_OK;
errorMessage = null;
redirectLocation = null;
status = HttpServletResponse.SC_OK;
@@ -462,7 +448,7 @@
*/
public boolean isError()
{
- return (code != HttpServletResponse.SC_OK);
+ return (status != HttpServletResponse.SC_OK);
}
/**
@@ -508,7 +494,7 @@
*/
public void sendError(final int code) throws IOException
{
- this.code = code;
+ status = code;
errorMessage = null;
}
@@ -524,7 +510,7 @@
*/
public void sendError(final int code, final String msg) throws
IOException
{
- this.code = code;
+ status = code;
errorMessage = msg;
}
@@ -580,24 +566,6 @@
*/
public void sendRedirect(String location) throws IOException
{
- // If the location starts with ../
- if (location.startsWith("../"))
- {
- // Test if the current url has a / in it. (a mount)
- String url = getURL();
- int index = url.lastIndexOf("/");
- if (index != -1)
- {
- // Then we have to recalculate what the real
redirect is for the next request
- // which is just getContext() +
getServletPath() + "/" + location;
- url = url.substring(0, index + 1) + location;
- url = RequestUtils.removeDoubleDots(url);
-
- // stril the servlet path again from it.
- index = url.indexOf("/");
- location = url.substring(index + 1);
- }
- }
redirectLocation = location;
}
@@ -817,4 +785,27 @@
{
setStatus(status);
}
+
+ /**
+ * @deprecated use {...@link #getDocument()}
+ * @return
+ */
+ @Deprecated
+ public String getTextResponse()
+ {
+ return getDocument();
+ }
+
+ public String getBinaryResponse()
+ {
+ String ctheader = getHeader("Content-Length");
+ if (ctheader == null)
+ {
+ return getDocument();
+ }
+ else
+ {
+ return getDocument().substring(0,
Integer.valueOf(ctheader));
+ }
+ }
}
\ No newline at end of file
Copied:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
(from r917565,
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java)
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java&p1=wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java&r1=917565&r2=917764&rev=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
Mon Mar 1 22:37:53 2010
@@ -1,51 +1,34 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.redirect;
-
-import org.apache.wicket.WicketTestCase;
-
-public class RestartWithMountedPageTest extends WicketTestCase
-{
-
- /**
- * Construct.
- */
- public RestartWithMountedPageTest()
- {
- super();
- }
-
- /**
- * Construct.
- *
- * @param name
- */
- public RestartWithMountedPageTest(String name)
- {
- super(name);
- }
-
- /**
- * Tests that a protected page can redirect to a login page from
mounted pages.
- */
- public void testWithMountedLoginPage()
- {
- tester.getApplication().mountBookmarkablePage("/login",
LoginPage.class);
- tester.startPage(ProtectedPage.class);
- tester.assertRenderedPage(LoginPage.class);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.util;
+
+/**
+ * Provider that provides {...@code null}s. Convenient to have to avoid a
double {...@code null} check for
+ * the provider and its provided instance.
+ *
+ * @author igor.vaynberg
+ * @param <T>
+ */
+public class NullProvider<T> implements IProvider<T>
+{
+
+ public T get()
+ {
+ return null;
+ }
+
+}
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
------------------------------------------------------------------------------
svn:executable = *
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/NullProvider.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
(from r917565,
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java)
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java&p1=wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java&r1=917565&r2=917764&rev=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
Mon Mar 1 22:37:53 2010
@@ -1,51 +1,45 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.redirect;
-
-import org.apache.wicket.WicketTestCase;
-
-public class RestartWithMountedPageTest extends WicketTestCase
-{
-
- /**
- * Construct.
- */
- public RestartWithMountedPageTest()
- {
- super();
- }
-
- /**
- * Construct.
- *
- * @param name
- */
- public RestartWithMountedPageTest(String name)
- {
- super(name);
- }
-
- /**
- * Tests that a protected page can redirect to a login page from
mounted pages.
- */
- public void testWithMountedLoginPage()
- {
- tester.getApplication().mountBookmarkablePage("/login",
LoginPage.class);
- tester.startPage(ProtectedPage.class);
- tester.assertRenderedPage(LoginPage.class);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.util;
+
+/**
+ * Provider that always provides the specified value.
+ *
+ * @author igor.vaynberg
+ * @param <T>
+ */
+public class ValueProvider<T> implements IProvider<T>
+{
+ private final T value;
+
+ /**
+ * Construct.
+ *
+ * @param value
+ * value to provide
+ */
+ public ValueProvider(T value)
+ {
+ this.value = value;
+ }
+
+ public T get()
+ {
+ return value;
+ }
+
+}
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
------------------------------------------------------------------------------
svn:executable = *
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/ValueProvider.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
Mon Mar 1 22:37:53 2010
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.util.tester;
+import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
@@ -67,7 +68,6 @@
import org.apache.wicket.ng.mock.MockApplication;
import org.apache.wicket.ng.mock.MockPageManager;
import org.apache.wicket.ng.mock.MockSessionStore;
-import org.apache.wicket.ng.mock.MockWebResponse;
import org.apache.wicket.ng.request.IRequestMapper;
import org.apache.wicket.ng.request.Url;
import org.apache.wicket.ng.request.component.PageParameters;
@@ -86,8 +86,10 @@
import org.apache.wicket.protocol.http.MockServletContext;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
+import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
import org.apache.wicket.protocol.http.mock.MockHttpSession;
import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.ServletWebResponse;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
import org.apache.wicket.util.IProvider;
@@ -151,17 +153,17 @@
private int redirectCount;
private MockHttpServletRequest lastRequest;
- private MockWebResponse lastResponse;
+ private MockHttpServletResponse lastResponse;
private final List<MockHttpServletRequest> previousRequests = new
ArrayList<MockHttpServletRequest>();
- private final List<MockWebResponse> previousResponses = new
ArrayList<MockWebResponse>();
+ private final List<MockHttpServletResponse> previousResponses = new
ArrayList<MockHttpServletResponse>();
private final ThreadContext oldThreadContext;
/** current request */
private MockHttpServletRequest request;
/** current response */
- private MockWebResponse response;
+ private MockHttpServletResponse response;
/** current session */
private Session session;
@@ -265,11 +267,11 @@
{
request = new MockHttpServletRequest(application, hsession,
servletContext);
request.setURL(request.getContextPath() +
request.getServletPath() + "/");
- response = new MockWebResponse();
+ response = new MockHttpServletResponse(request);
- requestCycle = application.createRequestCycle(new
ServletWebRequest(request,
- request.getFilterPrefix()), response);
+ requestCycle =
application.createRequestCycle(createServletWebRequest(),
+ createServletWebResponse());
requestCycle.setCleanupFeedbackMessagesOnDetach(false);
ThreadContext.setRequestCycle(requestCycle);
@@ -282,6 +284,38 @@
/**
+ * @return
+ */
+ private ServletWebResponse createServletWebResponse()
+ {
+ return new ServletWebResponse(request, response)
+ {
+ @Override
+ public void sendRedirect(String url)
+ {
+ super.sendRedirect(url);
+ try
+ {
+
getHttpServletResponse().sendRedirect(url);
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ /**
+ * @return
+ */
+ private ServletWebRequest createServletWebRequest()
+ {
+ return new ServletWebRequest(request,
request.getFilterPrefix());
+ }
+
+
+ /**
*
*/
private void createNewSession()
@@ -299,7 +333,7 @@
public void setRequest(MockHttpServletRequest request)
{
this.request = request;
- requestCycle.setRequest(new ServletWebRequest(request,
request.getServletPath()));
+ applyRequest();
}
@@ -424,13 +458,15 @@
}
}
- requestCycle.setRequest(new ServletWebRequest(request,
request.getFilterPrefix()));
+ applyRequest();
+ requestCycle.scheduleRequestHandlerAfterCurrent(null);
if (!requestCycle.processRequestAndDetach())
{
return false;
}
+
recordRequestResponse();
setupNextRequestCycle();
@@ -443,7 +479,8 @@
"Possible infinite redirect
detected. Bailing out.");
}
++redirectCount;
- Url newUrl =
Url.parse(lastResponse.getRedirectUrl());
+ Url newUrl =
Url.parse(lastResponse.getRedirectLocation());
+
if (newUrl.isAbsolute())
{
throw new WicketRuntimeException("Can
not follow absolute redirect URL.");
@@ -524,14 +561,14 @@
/**
* @return last response or <code>null</code>> if no response has been
produced yet.
*/
- public MockWebResponse getLastResponse()
+ public MockHttpServletResponse getLastResponse()
{
return lastResponse;
}
public String getLastResponseAsString()
{
- return lastResponse.getTextResponse().toString();
+ return lastResponse.getDocument();
}
/**
@@ -545,7 +582,7 @@
/**
* @return list of prior responses
*/
- public List<MockWebResponse> getPreviousResponses()
+ public List<MockHttpServletResponse> getPreviousResponses()
{
return Collections.unmodifiableList(previousResponses);
}
@@ -965,10 +1002,8 @@
*/
public Result ifContains(String pattern)
{
- return isTrue("pattern '" + pattern + "' not found in:\n" +
- getLastResponse().getTextResponse(),
getLastResponse().getTextResponse()
- .toString()
- .matches("(?s).*" + pattern + ".*"));
+ return isTrue("pattern '" + pattern + "' not found in:\n" +
getLastResponseAsString(),
+ getLastResponseAsString().toString().matches("(?s).*" +
pattern + ".*"));
}
/**
@@ -1197,7 +1232,7 @@
public void assertResultPage(final Class<?> pageClass, final String
filename) throws Exception
{
// Validate the document
- String document =
getLastResponse().getTextResponse().toString();
+ String document = getLastResponseAsString();
DiffUtil.validatePage(document, pageClass, filename, true);
}
@@ -1213,7 +1248,7 @@
public Result isResultPage(final String expectedDocument) throws
Exception
{
// Validate the document
- String document =
getLastResponse().getTextResponse().toString();
+ String document = getLastResponseAsString();
return isTrue("expected rendered page equals",
document.equals(expectedDocument));
}
@@ -1275,7 +1310,7 @@
*/
public void dumpPage()
{
- log.info(getLastResponse().getTextResponse().toString());
+ log.info(getLastResponseAsString());
}
/**
@@ -1338,7 +1373,7 @@
}
// Get the AJAX response
- String ajaxResponse =
getLastResponse().getTextResponse().toString();
+ String ajaxResponse = getLastResponseAsString();
// Test that the previous response was actually a AJAX response
failMessage = "The Previous response was not an AJAX response. "
@@ -1515,8 +1550,7 @@
*/
public TagTester getTagByWicketId(String wicketId)
{
- return
TagTester.createTagByAttribute(getLastResponse().getTextResponse().toString(),
- "wicket:id", wicketId);
+ return
TagTester.createTagByAttribute(getLastResponseAsString(), "wicket:id",
wicketId);
}
/**
@@ -1527,8 +1561,8 @@
*/
public List<TagTester> getTagsByWicketId(String wicketId)
{
- return
TagTester.createTagsByAttribute(getLastResponse().getTextResponse().toString(),
- "wicket:id", wicketId, false);
+ return
TagTester.createTagsByAttribute(getLastResponseAsString(), "wicket:id",
wicketId,
+ false);
}
/**
@@ -1541,8 +1575,7 @@
*/
public TagTester getTagById(String id)
{
- return
TagTester.createTagByAttribute(getLastResponse().getTextResponse().toString(),
"id",
- id);
+ return
TagTester.createTagByAttribute(getLastResponseAsString(), "id", id);
}
/**
@@ -1621,6 +1654,19 @@
return getLastResponse().getHeader("Content-Disposition");
}
+ /**
+ * Rebuilds {...@link ServletWebRequest} used by wicket from the mock
request used to build
+ * requests. Sometimes this method is useful when changes need to be
checked without processing
+ * a request.
+ */
+ public void applyRequest()
+ {
+ ServletWebRequest req = createServletWebRequest();
+ requestCycle.setRequest(req);
+ requestCycle.getUrlRenderer().setBaseUrl(req.getUrl());
+
+ }
+
private Result isTrue(String message, boolean condition)
{
if (condition)
@@ -1671,7 +1717,7 @@
return requestCycle;
}
- public MockWebResponse getResponse()
+ public MockHttpServletResponse getResponse()
{
return response;
}
@@ -1829,4 +1875,5 @@
}
+
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
Mon Mar 1 22:37:53 2010
@@ -416,7 +416,7 @@
@Override
public void assertResultPage(final Class<?> clazz, final String
filename) throws Exception
{
- String document =
getLastResponse().getTextResponse().toString();
+ String document = getLastResponseAsString();
DiffUtil.validatePage(document, clazz, filename, true);
}
@@ -431,7 +431,7 @@
public void assertResultPage(final String expectedDocument) throws
Exception
{
// Validate the document
- String document =
getLastResponse().getTextResponse().toString();
+ String document = getLastResponseAsString();
Assert.assertEquals(expectedDocument, document);
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/AttributeModifierComponentTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/AttributeModifierComponentTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/AttributeModifierComponentTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/AttributeModifierComponentTest.java
Mon Mar 1 22:37:53 2010
@@ -72,7 +72,7 @@
public void testComponentTagAttributeModification() throws Exception
{
// Validate the document
- String document =
tester.getLastResponse().getTextResponse().toString();
+ String document = tester.getLastResponseAsString();
log.info(document);
Assert.assertTrue(validateDocument(document));
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ResourceTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ResourceTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ResourceTest.java
(original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ResourceTest.java Mon
Mar 1 22:37:53 2010
@@ -23,6 +23,7 @@
import org.apache.wicket.ng.resource.IResource;
import org.apache.wicket.ng.resource.ResourceStreamResource;
+import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
import org.apache.wicket.util.resource.FileResourceStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,7 +64,7 @@
null, null, true)));
tester.processRequest();
- assertEquals(String.valueOf(testFile.lastModified()),
+
assertEquals(MockHttpServletResponse.formatDate(testFile.lastModified()),
tester.getLastModifiedFromResponseHeader());
assertEquals(TEST_STRING.length(),
tester.getContentLengthFromResponseHeader());
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java
Mon Mar 1 22:37:53 2010
@@ -161,26 +161,26 @@
tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
String.valueOf(choice1.getValue()));
+ tester.applyRequest();
form.onFormSubmitted();
assertTrue("running with choice1 selected - model must only
contain value of check1",
modelObject.getProp1().size() == 1 &&
modelObject.getProp1().contains(check1));
tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
String.valueOf(choice2.getValue()));
+ tester.applyRequest();
form.onFormSubmitted();
assertTrue("running with choice2 selected - model must only
contain value of check2",
modelObject.getProp1().size() == 1 &&
modelObject.getProp1().contains(check2));
// throw in some nulls into the request param to make sure they
are
// ignored
- tester.getRequest()
- .getPostParameters()
- .addParameterValue(group.getInputName(), null);
+
tester.getRequest().getPostParameters().addParameterValue(group.getInputName(),
null);
tester.getRequest().getPostParameters().addParameterValue(group.getInputName(),
String.valueOf(choice1.getValue()));
tester.getRequest().getPostParameters().addParameterValue(group.getInputName(),
String.valueOf(choice2.getValue()));
-
+ tester.applyRequest();
form.onFormSubmitted();
assertTrue(
@@ -190,6 +190,7 @@
tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
"some weird choice uuid to test error");
+ tester.applyRequest();
try
{
form.onFormSubmitted();
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTest.java
Mon Mar 1 22:37:53 2010
@@ -152,6 +152,9 @@
choice1.getValue());
tester.getRequest().getPostParameters().setParameterValue(group2.getInputName(),
choice3.getValue());
+
+ tester.applyRequest();
+
form.onFormSubmitted();
assertEquals("group: running with choice1 selected - model must
be set to value of radio1",
modelObject.getProp1(),
choice1.getDefaultModelObject());
@@ -161,12 +164,14 @@
tester.getRequest().getPostParameters().setParameterValue(group.getInputName(),
choice2.getValue());
+ tester.applyRequest();
form.onFormSubmitted();
assertEquals("group: running with choice2 selected - model must
be set to value of radio2",
modelObject.getProp1(),
choice2.getDefaultModelObject());
tester.getRequest().getPostParameters().setParameterValue(group2.getInputName(),
choice1.getValue());
+ tester.applyRequest();
try
{
form.onFormSubmitted();
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/AutolinkPageExpectedResult_1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/AutolinkPageExpectedResult_1.html?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/AutolinkPageExpectedResult_1.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/AutolinkPageExpectedResult_1.html
Mon Mar 1 22:37:53 2010
@@ -27,7 +27,7 @@
<link
href="../resource/org.apache.wicket.markup.html.link.AutolinkPage_1/test.css?-myStyle"/>
<link
href="../resource/org.apache.wicket.markup.html.link.AutolinkPage_1/test2.css?-myStyle"/>
<link
href="../resource/org.apache.wicket.markup.html.link.AutolinkPage_1/test3.css?de_DE-myStyle"/>
-<link
href="../resource/org.apache.wicket.markup.html.link.AutolinkPage_1/../../html/link/test2.css?-myStyle"/>
+<link
href="../resource/org.apache.wicket.markup.html.link.AutolinkPage_1/$up$/$up$/html/link/test2.css?-myStyle"/>
<a href="/root/test.html">Home</a>
<a href="org.apache.wicket.markup.html.link.Page1">Home</a>
<a href="http://www.google.com">Google</a>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/RestartWithMountedPageTest.java
Mon Mar 1 22:37:53 2010
@@ -22,24 +22,6 @@
{
/**
- * Construct.
- */
- public RestartWithMountedPageTest()
- {
- super();
- }
-
- /**
- * Construct.
- *
- * @param name
- */
- public RestartWithMountedPageTest(String name)
- {
- super(name);
- }
-
- /**
* Tests that a protected page can redirect to a login page from
mounted pages.
*/
public void testWithMountedLoginPage()
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
Mon Mar 1 22:37:53 2010
@@ -57,7 +57,7 @@
executeTest(StatelessComponentPage.class,
"StatelessComponentPage_mount_result.html");
tester.getRequest()
.setUrl(
-
Url.parse("stateless?0-1.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"));
+
Url.parse("stateless?0-1.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"));
try
{
tester.processRequest();
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java?rev=917764&r1=917763&r2=917764&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
Mon Mar 1 22:37:53 2010
@@ -16,7 +16,9 @@
*/
package org.apache.wicket.util.cookies;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import javax.servlet.http.Cookie;
@@ -70,21 +72,21 @@
// Save the input field's value (add it to the response's
cookie list)
persister.save(textField);
- assertNull(getRequestCookies());
+ assertTrue(getRequestCookies().isEmpty());
assertEquals(1, getResponseCookies().size());
assertEquals("test", (getResponseCookies().get(0)).getValue());
assertEquals("form.input",
(getResponseCookies().get(0)).getName());
-
assertEquals("/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication",
+ assertEquals(tester.getRequest().getContextPath() +
tester.getRequest().getServletPath(),
(getResponseCookies().get(0)).getPath());
// To remove a cookie means to add a cookie with maxAge=0.
Provided a cookie with the same
// name has been provided in the request. Thus, no changes in
our test case
persister.remove(textField);
- assertNull(getRequestCookies());
+ assertEquals(0, getRequestCookies().size());
assertEquals(1, getResponseCookies().size());
assertEquals("test", (getResponseCookies().get(0)).getValue());
assertEquals("form.input",
(getResponseCookies().get(0)).getName());
-
assertEquals("/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication",
+ assertEquals(tester.getRequest().getContextPath() +
tester.getRequest().getServletPath(),
(getResponseCookies().get(0)).getPath());
// Try to load it. Because there is no Cookie matching the
textfield's name the model's
@@ -127,11 +129,18 @@
private Collection<Cookie> getRequestCookies()
{
- return tester.getRequest().getCookies();
+ if (tester.getRequest().getCookies() == null)
+ {
+ return Collections.emptyList();
+ }
+ else
+ {
+ return Arrays.asList(tester.getRequest().getCookies());
+ }
}
private List<Cookie> getResponseCookies()
{
- return tester.getLastResponse().getCookies();
+ return tester.getResponse().getCookies();
}
}