Author: knopp
Date: Sun Mar 29 00:17:11 2009
New Revision: 759618
URL: http://svn.apache.org/viewvc?rev=759618&view=rev
Log:
various cool stuff
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java
(contents, props changed)
- copied, changed from r759532,
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParameters.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java
(with props)
Removed:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParameters.java
Modified:
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/Request.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/string/StringValue.java
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractEncoderTest.java
Modified:
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
Sun Mar 29 00:17:11 2009
@@ -2,6 +2,7 @@
import org.apache.wicket.Page;
import org.apache.wicket.RequestCycle;
+import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.Link;
public class TestPage3 extends Page
@@ -21,6 +22,9 @@
};
b.setLabel("Go Back");
add(b);
+
+ Form form = new Form("form");
+ add(form);
}
}
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=759618&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java
Sun Mar 29 00:17:11 2009
@@ -0,0 +1,63 @@
+package org.apache.wicket.markup.html.form;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.request.RequestHandler;
+import
org.apache.wicket.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+
+public class Form extends Component implements IFormSubmitListener
+{
+ private static final long serialVersionUID = 1L;
+
+ public Form(String id)
+ {
+ super(id);
+ }
+
+ public void onFormSubmitted()
+ {
+ Request r = RequestCycle.get().getRequest();
+
System.out.println(r.getRequestParameters().getParameterValue("key1"));
+ }
+
+ @Override
+ public void renderComponent()
+ {
+ Response response = RequestCycle.get().getResponse();
+
+ response.write("<form action=\"" + getURL() + "\"
method=\"post\">\n");
+ response.write("<input type=\"hidden\" name=\"key1\"
value=\"value1\">\n");
+ response.write("<input type=\"hidden\" name=\"key2\"
value=\"value2\">\n");
+ response.write("<input type=\"submit\" value=\"Submit\">");
+ response.write("</form>");
+ }
+
+ private boolean bookmarkable;
+
+ public void setBookmarkable(boolean bookmarkable)
+ {
+ this.bookmarkable = bookmarkable;
+ }
+
+ public boolean isBookmarkable()
+ {
+ return bookmarkable;
+ }
+
+ private String getURL()
+ {
+ RequestHandler handler;
+ if (isBookmarkable())
+ {
+ handler = new
BookmarkableListenerInterfaceRequestHandler(getPage(), this,
IFormSubmitListener.INTERFACE);
+ }
+ else
+ {
+ handler = new
ListenerInterfaceRequestHandler(getPage(), this, IFormSubmitListener.INTERFACE);
+ }
+ return RequestCycle.get().renderUrlFor(handler);
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/Form.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java?rev=759618&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
Sun Mar 29 00:17:11 2009
@@ -0,0 +1,37 @@
+/*
+ * 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.markup.html.form;
+
+import org.apache.wicket.IRequestListener;
+import org.apache.wicket.RequestListenerInterface;
+
+/**
+ * Listener interface that is called when a form is submitted.
+ *
+ * @author Jonathan Locke
+ */
+public interface IFormSubmitListener extends IRequestListener
+{
+ /** Listener interface */
+ public static final RequestListenerInterface INTERFACE = new
RequestListenerInterface(
+ IFormSubmitListener.class);
+
+ /**
+ * Called when a form is submitted
+ */
+ void onFormSubmitted();
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
Sun Mar 29 00:17:11 2009
@@ -48,27 +48,37 @@
{
super();
}
-
+
@Override
public void internalInit()
- {
+ {
mount(new PageInstanceEncoder());
mount(new BookmarkableEncoder());
mount(new ResourceReferenceEncoder());
}
+
+
protected RequestCycleContext newRequestCycleContext()
{
RequestCycleContext context = new RequestCycleContext()
{
- public RequestHandler decodeRequestHandler(Request
request)
+ public RequestHandler decodeRequestHandler(final
Request request)
{
- return
getRequestHandlerEncoderRegistry().decode(request);
+ String lang = null;
+ Url url = request.getUrl();
+ if (!url.getSegments().isEmpty())
+ {
+ lang = url.getSegments().remove(0);
+ }
+ return
getRequestHandlerEncoderRegistry().decode(request.requestWithUrl(url));
}
public Url encodeRequestHandler(RequestHandler handler)
{
- return
getRequestHandlerEncoderRegistry().encode(handler);
+ Url url =
getRequestHandlerEncoderRegistry().encode(handler);
+ url.getSegments().add(0, "en");
+ return url;
}
public RequestHandler
getRequestHandlerForException(Exception e)
@@ -127,7 +137,7 @@
public String getPageIdentifier()
{
return "page";
- }
+ }
public String getResourceIdentifier()
{
@@ -137,7 +147,7 @@
public ResourceReferenceRegistry getResourceReferenceRegistry()
{
return
WebApplication.this.getResourceReferenceRegistry();
- }
+ }
public RequestListenerInterface
requestListenerInterfaceFromString(String interfaceName)
{
@@ -148,7 +158,7 @@
{
return listenerInterface.getName();
}
-
+
public IPage newPageInstance(Class<? extends IPage> pageClass,
PageParameters pageParameters)
{
if (pageParameters == null)
@@ -160,25 +170,25 @@
return getPageFactory().newPage(pageClass,
pageParameters);
}
}
-
+
public IPage getPageInstance(int pageId)
{
return Page.get(pageId);
}
-
+
public Class<? extends IPage> getHomePageClass()
{
return WebApplication.this.getHomePageClass();
}
- };
-
+ };
+
public EncoderContext getEncoderContext()
{
return encoderContext;
}
-
+
private ResourceReferenceRegistry resourceReferenceRegistry;
-
+
public ResourceReferenceRegistry getResourceReferenceRegistry()
{
if (resourceReferenceRegistry == null)
@@ -187,24 +197,24 @@
}
return resourceReferenceRegistry;
}
-
+
private IPageFactory pageFactory = new DefaultPageFactory();
-
+
public IPageFactory getPageFactory()
{
return pageFactory;
}
-
+
public void mount(RequestHandlerEncoder encoder)
{
getRequestHandlerEncoderRegistry().register(encoder);
}
-
+
public abstract Class<? extends IPage> getHomePageClass();
-
+
// TODO: Do this properly
private Map<String, BufferedWebResponse> storedResponses = new
ConcurrentHashMap<String, BufferedWebResponse>();
-
+
public BufferedWebResponse getAndRemoveBufferedResponse(String
sessionId, Url url)
{
String key = sessionId + url.toString();
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java?rev=759618&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java
Sun Mar 29 00:17:11 2009
@@ -0,0 +1,75 @@
+package org.apache.wicket.request;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.wicket.util.string.StringValue;
+
+public class CombinedRequestParametersAdapter implements RequestParameters
+{
+ private final RequestParameters parameters[];
+
+ public CombinedRequestParametersAdapter(RequestParameters ...
parameters)
+ {
+ if (parameters == null)
+ {
+ throw new IllegalStateException("Argument 'parameters'
may not be null");
+ }
+ this.parameters = parameters;
+ }
+
+ public Set<String> getParameterNames()
+ {
+ Set<String> result = new HashSet<String>();
+ for (RequestParameters p : parameters)
+ {
+ result.addAll(p.getParameterNames());
+ }
+ return Collections.unmodifiableSet(result);
+ }
+
+ public StringValue getParameterValue(String name)
+ {
+ for (RequestParameters p : parameters)
+ {
+ StringValue value = p.getParameterValue(name);
+ if (!value.isNull())
+ {
+ return value;
+ }
+ }
+ return StringValue.valueOf((String)null);
+ }
+
+ public List<StringValue> getParameterValues(String name)
+ {
+ List<StringValue> result = new ArrayList<StringValue>();
+ for (RequestParameters p : parameters)
+ {
+ List<StringValue> values = p.getParameterValues(name);
+ if (values != null)
+ {
+ for (StringValue v : values)
+ {
+ if (!result.contains(v))
+ {
+ result.add(v);
+ }
+ }
+ }
+ }
+
+ if (result.isEmpty())
+ {
+ return null;
+ }
+ else
+ {
+ return Collections.unmodifiableList(result);
+ }
+ }
+
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/CombinedRequestParametersAdapter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java?rev=759618&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java
Sun Mar 29 00:17:11 2009
@@ -0,0 +1,33 @@
+package org.apache.wicket.request;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.wicket.util.string.StringValue;
+
+public class EmptyRequestParameters implements RequestParameters
+{
+
+ private EmptyRequestParameters()
+ {
+ }
+
+ public static EmptyRequestParameters INSTANCE = new
EmptyRequestParameters();
+
+ public Set<String> getParameterNames()
+ {
+ return Collections.emptySet();
+ }
+
+ public StringValue getParameterValue(String name)
+ {
+ return StringValue.valueOf((String)null);
+ }
+
+ public List<StringValue> getParameterValues(String name)
+ {
+ return null;
+ }
+
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/EmptyRequestParameters.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java
(from r759532,
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParameters.java)
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java?p2=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java&p1=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParameters.java&r1=759532&r2=759618&rev=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParameters.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java
Sun Mar 29 00:17:11 2009
@@ -31,7 +31,7 @@
*
* @author Matej Knopp
*/
-public class UrlRequestParameters implements RequestParameters
+public class UrlRequestParametersAdapter implements RequestParameters
{
private final Url url;
@@ -39,7 +39,7 @@
* Construct.
* @param url
*/
- public UrlRequestParameters(Url url)
+ public UrlRequestParametersAdapter(Url url)
{
if (url == null)
{
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRequestParametersAdapter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/Request.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/Request.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/Request.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/Request.java
Sun Mar 29 00:17:11 2009
@@ -16,8 +16,11 @@
*/
package org.apache.wicket.request.request;
+import org.apache.wicket.request.CombinedRequestParametersAdapter;
+import org.apache.wicket.request.EmptyRequestParameters;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.Url;
+import org.apache.wicket.request.UrlRequestParametersAdapter;
/**
* Request object.
@@ -34,9 +37,52 @@
public abstract Url getUrl();
/**
- * @return request parameters for this request (both POST and GET
parameters)
+ * @return POST request parameters for this request.
*/
- public abstract RequestParameters getRequestParameters();
+ public RequestParameters getPostRequestParameters()
+ {
+ return EmptyRequestParameters.INSTANCE;
+ }
+ /**
+ * @return GET request parameters for this request.
+ */
+ public RequestParameters getGetRequestParameters()
+ {
+ return new UrlRequestParametersAdapter(getUrl());
+ }
+
+ /**
+ * @return all request parameters for this request (both POST and GET
parameters)
+ */
+ public RequestParameters getRequestParameters()
+ {
+ return new
CombinedRequestParametersAdapter(getGetRequestParameters(),
getPostRequestParameters());
+ }
+
+ /**
+ * Returns request with specified URL and same POST parameters as this
request.
+ *
+ * @param url
+ * Url instance
+ * @return request with specified URL.
+ */
+ public Request requestWithUrl(final Url url)
+ {
+ return new Request()
+ {
+ @Override
+ public Url getUrl()
+ {
+ return url;
+ }
+
+ @Override
+ public RequestParameters getPostRequestParameters()
+ {
+ return Request.this.getPostRequestParameters();
+ }
+ };
+ }
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
Sun Mar 29 00:17:11 2009
@@ -16,18 +16,24 @@
*/
package org.apache.wicket.request.request;
+import java.io.BufferedReader;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
-import java.util.HashSet;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.Url;
+import org.apache.wicket.request.Url.QueryParameter;
+import org.apache.wicket.util.io.Streams;
import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.string.Strings;
@@ -125,46 +131,76 @@
return Collections.unmodifiableList(result);
}
- @Override
- public RequestParameters getRequestParameters()
+ private Map<String, List<StringValue>> postParameters = null;
+
+ public Map<String, List<StringValue>> getPostParameters()
{
- return new RequestParameters()
+ if (postParameters == null)
{
- @SuppressWarnings("unchecked")
- public Set<String> getParameterNames()
+ postParameters = new HashMap<String,
List<StringValue>>();
+ try
{
- Set<String> result = new HashSet<String>();
- Enumeration<String> e =
httpServletRequest.getParameterNames();
- while (e.hasMoreElements())
+ BufferedReader reader =
getHttpServletRequest().getReader();
+ String value = Streams.readString(reader);
+
+ if (!Strings.isEmpty(value))
{
- result.add(e.nextElement());
+ Url url = Url.parse("?" + value);
+ for (QueryParameter q :
url.getQueryParameters())
+ {
+ List<StringValue> list =
postParameters.get(q.getName());
+ if (list == null)
+ {
+ list = new
ArrayList<StringValue>();
+
postParameters.put(q.getName(), list);
+ }
+
list.add(StringValue.valueOf(q.getValue()));
+ }
}
- return Collections.unmodifiableSet(result);
}
-
- public StringValue getParameterValue(String name)
+ catch (IOException e)
{
- return
StringValue.valueOf(httpServletRequest.getParameter(name));
+ throw new WicketRuntimeException(e);
}
-
- public List<StringValue> getParameterValues(String name)
+
+ }
+ return postParameters;
+ }
+
+ private RequestParameters postRequestParameters = new
RequestParameters()
+ {
+ public Set<String> getParameterNames()
+ {
+ return
Collections.unmodifiableSet(getPostParameters().keySet());
+ }
+
+ public StringValue getParameterValue(String name)
+ {
+ List<StringValue> values =
getPostParameters().get(name);
+ if (values == null || values.isEmpty())
{
- String values[] =
httpServletRequest.getParameterValues(name);
- if (values == null)
- {
- return null;
- }
- else
- {
- List<StringValue> result = new
ArrayList<StringValue>();
- for (String s : values)
- {
-
result.add(StringValue.valueOf(s));
- }
- return
Collections.unmodifiableList(result);
- }
+ return StringValue.valueOf((String)null);
+ }
+ else
+ {
+ return values.iterator().next();
}
- };
+ }
+ public List<StringValue> getParameterValues(String name)
+ {
+ List<StringValue> values =
getPostParameters().get(name);
+ if (values != null)
+ {
+ values = Collections.unmodifiableList(values);
+ }
+ return values;
+ }
+ };
+
+ @Override
+ public RequestParameters getPostRequestParameters()
+ {
+ return postRequestParameters;
}
@Override
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java?rev=759618&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java
Sun Mar 29 00:17:11 2009
@@ -0,0 +1,233 @@
+/*
+ * 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.io;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.wicket.WicketRuntimeException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Utilities methods for working with input and output streams.
+ *
+ * @author Jonathan Locke
+ */
+public final class Streams
+{
+ private static final String XML_PROPERTIES_DTD = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>"
+ + "<!-- DTD for properties -->" + "<!ELEMENT properties
( comment?, entry* ) >"
+ + "<!ATTLIST properties" + " version CDATA #FIXED
\"1.0\">"
+ + "<!ELEMENT comment (#PCDATA) >" + "<!ELEMENT entry
(#PCDATA) >" + "<!ATTLIST entry "
+ + " key CDATA #REQUIRED>";
+
+ /**
+ * Writes the input stream to the output stream. Input is done without
a Reader object, meaning
+ * that the input is copied in its raw form.
+ *
+ * @param in
+ * The input stream
+ * @param out
+ * The output stream
+ * @return Number of bytes copied from one stream to the other
+ * @throws IOException
+ */
+ public static int copy(final InputStream in, final OutputStream out)
throws IOException
+ {
+ final byte[] buffer = new byte[4096];
+ int bytesCopied = 0;
+ while (true)
+ {
+ int byteCount = in.read(buffer, 0, buffer.length);
+ if (byteCount <= 0)
+ {
+ break;
+ }
+ out.write(buffer, 0, byteCount);
+ bytesCopied += byteCount;
+ }
+ return bytesCopied;
+ }
+
+ /**
+ * Loads properties from an XML input stream into the provided
properties object.
+ *
+ * @param properties
+ * The object to load the properties into
+ * @param inputStream
+ * @throws IOException
+ * When the input stream could not be read from
+ */
+ public static void loadFromXml(Properties properties, InputStream
inputStream)
+ throws IOException
+ {
+ if (properties == null)
+ {
+ throw new IllegalArgumentException("properties must not
be null");
+ }
+ if (inputStream == null)
+ {
+ throw new IllegalArgumentException("inputStream must
not be null");
+ }
+
+ // TODO in a Wicket version that supports Java 5 (Wicket 2.0?),
we can
+ // just use the loadFromXml method on java.util.Properties
directly
+ // rather than manual as we do here
+
+ DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
+
documentBuilderFactory.setIgnoringElementContentWhitespace(true);
+ documentBuilderFactory.setValidating(true);
+ documentBuilderFactory.setCoalescing(true);
+ documentBuilderFactory.setIgnoringComments(true);
+ try
+ {
+ DocumentBuilder db =
documentBuilderFactory.newDocumentBuilder();
+ db.setEntityResolver(new EntityResolver()
+ {
+ public InputSource resolveEntity(String
publicId, String systemId)
+ throws SAXException
+ {
+ if
(systemId.equals("http://java.sun.com/dtd/properties.dtd"))
+ {
+ InputSource inputSource;
+ inputSource = new
InputSource(new StringReader(XML_PROPERTIES_DTD));
+
inputSource.setSystemId("http://java.sun.com/dtd/properties.dtd");
+ return inputSource;
+ }
+ else
+ {
+ throw new SAXException("Invalid
system identifier: " + systemId);
+ }
+ }
+ });
+ db.setErrorHandler(new ErrorHandler()
+ {
+ public void error(SAXParseException e) throws
SAXException
+ {
+ throw e;
+ }
+
+ public void fatalError(SAXParseException e)
throws SAXException
+ {
+ throw e;
+ }
+
+ public void warning(SAXParseException e) throws
SAXException
+ {
+ throw e;
+ }
+ });
+ InputSource is = new InputSource(inputStream);
+ Document doc = db.parse(is);
+ NodeList entries =
((Element)doc.getChildNodes().item(1)).getChildNodes();
+ int len = entries.getLength();
+ for (int i = (len > 0 &&
entries.item(0).getNodeName().equals("comment")) ? 1 : 0; i < len; i++)
+ {
+ Element entry = (Element)entries.item(i);
+ if (entry.hasAttribute("key"))
+ {
+ Node node = entry.getFirstChild();
+ String val = (node == null) ? "" :
node.getNodeValue();
+
properties.setProperty(entry.getAttribute("key"), val);
+ }
+ }
+ }
+ catch (ParserConfigurationException e)
+ {
+ throw new WicketRuntimeException(e);
+ }
+ catch (SAXException e)
+ {
+ throw new WicketRuntimeException("invalid XML
properties format", e);
+ }
+ }
+
+ /**
+ * Reads a stream as a string.
+ *
+ * @param in
+ * The input stream
+ * @return The string
+ * @throws IOException
+ */
+ public static String readString(final InputStream in) throws IOException
+ {
+ return readString(new BufferedReader(new
InputStreamReader(in)));
+ }
+
+ /**
+ * Reads a string using a character encoding.
+ *
+ * @param in
+ * The input
+ * @param encoding
+ * The character encoding of the input data
+ * @return The string
+ * @throws IOException
+ */
+ public static String readString(final InputStream in, final
CharSequence encoding)
+ throws IOException
+ {
+ return readString(new BufferedReader(new InputStreamReader(in,
encoding.toString())));
+ }
+
+ /**
+ * Reads all input from a reader into a string.
+ *
+ * @param in
+ * The input
+ * @return The string
+ * @throws IOException
+ */
+ public static String readString(final Reader in) throws IOException
+ {
+ final StringBuffer buffer = new StringBuffer(2048);
+ int value;
+
+ while ((value = in.read()) != -1)
+ {
+ buffer.append((char)value);
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Private to prevent instantiation.
+ */
+ private Streams()
+ {
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/io/Streams.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/string/StringValue.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/string/StringValue.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/string/StringValue.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/util/string/StringValue.java
Sun Mar 29 00:17:11 2009
@@ -23,6 +23,8 @@
import java.text.ParseException;
import java.util.Locale;
+import org.apache.wicket.util.lang.Objects;
+
/**
* Holds an immutable String value and optionally a Locale, with methods to
convert to various
@@ -662,4 +664,24 @@
return Strings.isEmpty(text);
}
+ public boolean equals(Object value)
+ {
+ if (this == value)
+ {
+ return true;
+ }
+ if (value instanceof StringValue == false)
+ {
+ return false;
+ }
+ StringValue rhs = (StringValue) value;
+ return Objects.equal(text, rhs.text) && Objects.equal(locale,
rhs.locale);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return Objects.hashCode(text, locale);
+ }
+
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractEncoderTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractEncoderTest.java?rev=759618&r1=759617&r2=759618&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractEncoderTest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractEncoderTest.java
Sun Mar 29 00:17:11 2009
@@ -23,7 +23,7 @@
import org.apache.wicket.markup.html.link.ILinkListener;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.Url;
-import org.apache.wicket.request.UrlRequestParameters;
+import org.apache.wicket.request.UrlRequestParametersAdapter;
import org.apache.wicket.request.request.Request;
/**
@@ -54,16 +54,10 @@
return new Request()
{
@Override
- public RequestParameters getRequestParameters()
- {
- return new UrlRequestParameters(getUrl());
- }
-
- @Override
public Url getUrl()
{
return url;
- }
+ }
};
}