You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2009/12/05 00:36:25 UTC
svn commit: r887453 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/ main/java/org/apache/wicket/markup/html/
main/java/org/apache/wicket/markup/html/form/
main/java/org/apache/wicket/ng/request/
main/java/org/apache/wicket/protocol/http/ ma...
Author: ivaynberg
Date: Fri Dec 4 23:36:24 2009
New Revision: 887453
URL: http://svn.apache.org/viewvc?rev=887453&view=rev
Log:
wip wicket-ng
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java Fri Dec 4 23:36:24 2009
@@ -19,6 +19,7 @@
import java.util.Locale;
import java.util.Map;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.request.IRequestCodingStrategy;
import org.apache.wicket.request.IRequestCycleProcessor;
import org.apache.wicket.request.RequestParameters;
@@ -35,9 +36,6 @@
*/
public abstract class Request
{
- /** Any Page decoded for this request */
- private Page page;
-
/** the type safe request parameters object for this request. */
private RequestParameters requestParameters;
@@ -56,7 +54,7 @@
* The URL to decode
* @return The decoded url
*/
- public String decodeURL(final String url)
+ public Url decodeURL(final Url url)
{
return url;
}
@@ -67,14 +65,6 @@
public abstract Locale getLocale();
/**
- * @return Any Page for this request
- */
- public Page getPage()
- {
- return page;
- }
-
- /**
* Gets a given (query) parameter by name.
*
* @param key
@@ -191,30 +181,7 @@
*
* @return The relative request URL for local use
*/
- public abstract String getURL();
-
- /**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
- *
- * @param page
- * The Page for this request
- */
- public void setPage(final Page page)
- {
- this.page = page;
- }
-
- /**
- * A request can say if the current request should generated a new version number. If this
- * returns true, then all the changes on a page that has versioning enabled is merged with the
- * latest version. Else it will just create a new version.
- *
- * @return true if the version must be merged with the previous latest.
- */
- public boolean mergeVersion()
- {
- return false;
- }
+ public abstract Url getUrl();
/**
* @see java.lang.Object#toString()
@@ -222,7 +189,7 @@
@Override
public String toString()
{
- return "Request[url=" + getURL() + "]";
+ return "Request[url=" + getUrl() + "]";
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java Fri Dec 4 23:36:24 2009
@@ -78,7 +78,7 @@
"<evaluate><![CDATA[clientTimeVariable = new Date().getTime();]]></evaluate>");
}
log.info(timeTaken + "ms server time taken for request " +
- RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+ RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
return responseBuffer;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java Fri Dec 4 23:36:24 2009
@@ -77,7 +77,7 @@
JavascriptUtils.SCRIPT_CLOSE_TAG + "\n");
}
log.info(timeTaken + "ms server time taken for request " +
- RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+ RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
return responseBuffer;
}
}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java Fri Dec 4 23:36:24 2009
@@ -58,7 +58,7 @@
}
log.info(timeTaken + "ms server time taken for request " +
- RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+ RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
return responseBuffer;
}
}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java Fri Dec 4 23:36:24 2009
@@ -39,7 +39,7 @@
import org.apache.wicket.markup.html.form.validation.IFormValidator;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import org.apache.wicket.protocol.http.RequestUtils;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WicketURLDecoder;
import org.apache.wicket.request.IRequestCycleProcessor;
@@ -235,7 +235,7 @@
private final Request realRequest;
- private final String url;
+ private final Url url;
/**
* Construct.
@@ -243,13 +243,11 @@
* @param realRequest
* @param url
*/
- public FormDispatchRequest(final Request realRequest, final String url)
+ public FormDispatchRequest(final Request realRequest, final Url url)
{
this.realRequest = realRequest;
this.url = realRequest.decodeURL(url);
-
- String queryString = this.url.substring(this.url.indexOf("?") + 1);
- RequestUtils.decodeUrlParameters(queryString, params);
+ this.url.putQueryParameters(params);
}
/**
@@ -316,10 +314,10 @@
}
/**
- * @see org.apache.wicket.Request#getURL()
+ * @see org.apache.wicket.Request#getUrl()
*/
@Override
- public String getURL()
+ public Url getUrl()
{
return url;
}
@@ -1157,7 +1155,7 @@
RequestCycle rc = RequestCycle.get();
IRequestCycleProcessor processor = rc.getProcessor();
final RequestParameters requestParameters = processor.getRequestCodingStrategy().decode(
- new FormDispatchRequest(rc.getRequest(), url));
+ new FormDispatchRequest(rc.getRequest(), Url.parse(url)));
IRequestTarget rt = processor.resolve(rc, requestParameters);
if (rt instanceof IListenerInterfaceRequestTarget)
{
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=887453&r1=887452&r2=887453&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 Fri Dec 4 23:36:24 2009
@@ -18,8 +18,10 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.apache.wicket.ng.protocol.http.WicketURLDecoder;
import org.apache.wicket.ng.protocol.http.WicketURLEncoder;
@@ -70,6 +72,11 @@
{
}
+ public Url(String string)
+ {
+
+ }
+
/**
* Construct.
*
@@ -120,6 +127,31 @@
}
/**
+ * Populates the provided {@code params} map with query parameters
+ *
+ * @deprecated the code should be using proper QuaryParameter oriented method, this is just to
+ * help ease migration
+ */
+ @Deprecated
+ public void putQueryParameters(Map<String, String[]> params)
+ {
+ for (QueryParameter param : getQueryParameters())
+ {
+ String[] array = params.get(param.getName());
+ if (array == null)
+ {
+ array = new String[] { param.getValue() };
+ }
+ else
+ {
+ array = Arrays.copyOf(array, array.length + 1);
+ array[array.length - 1] = param.getValue();
+ }
+ params.put(param.getName(), array);
+ }
+ }
+
+ /**
* Returns whether the URL is absolute.
*
* @return <code>true</code> if URL is absolute, <code>false</code> otherwise.
@@ -534,4 +566,14 @@
}
}
}
+
+ public void makeAbsolute()
+ {
+ if (isAbsolute())
+ {
+ return;
+ }
+
+ segments.add(null);
+ }
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java Fri Dec 4 23:36:24 2009
@@ -527,7 +527,7 @@
/**
* @return url
- * @see org.apache.wicket.Request#getURL()
+ * @see org.apache.wicket.Request#getUrl()
*/
private String getURL()
{
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java Fri Dec 4 23:36:24 2009
@@ -273,7 +273,7 @@
// we haven't done the redirect yet; record that we will be
// doing that now and redirect
session.setMetaData(BROWSER_WAS_POLLED_KEY, Boolean.TRUE);
- String url = "/" + getRequest().getURL();
+ String url = "/" + getRequest().getUrl();
throw new RestartResponseException(newBrowserInfoPage(url));
}
// if we get here, the redirect already has been done; clear
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java Fri Dec 4 23:36:24 2009
@@ -169,7 +169,7 @@
// The ServletWebRequest is created here to avoid code duplication. The getURL call doesn't
// depend on anything wicket specific
ServletWebRequest req = new ServletWebRequest(request);
- String url = req.getURL();
+ String url = req.getUrl().toString();
// WICKET-2185: strip of query string
if (url.indexOf('?') != -1)
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java Fri Dec 4 23:36:24 2009
@@ -26,6 +26,7 @@
import org.apache.wicket.Request;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.protocol.http.PageExpiredException;
import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.protocol.http.WicketURLDecoder;
@@ -114,7 +115,7 @@
*/
public RequestParameters decode(final Request request)
{
- String url = request.decodeURL(request.getURL());
+ String url = request.decodeURL(request.getUrl()).toString();
String decodedQueryParams = decodeURL(url);
if (decodedQueryParams != null)
{
@@ -395,7 +396,7 @@
private final Request request;
/** The new URL with the 'x' param decoded */
- private final String url;
+ private final Url url;
/**
* The new parameter map with the 'x' param removed and the 'new' one included
@@ -447,7 +448,7 @@
{
urlBuf.append(url.substring(pos2));
}
- this.url = urlBuf.toString();
+ this.url = Url.parse(urlBuf.toString());
}
/**
@@ -562,10 +563,10 @@
}
/**
- * @see org.apache.wicket.Request#getURL()
+ * @see org.apache.wicket.Request#getUrl()
*/
@Override
- public String getURL()
+ public Url getUrl()
{
return url;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Fri Dec 4 23:36:24 2009
@@ -23,10 +23,9 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.Application;
-import org.apache.wicket.IRedirectListener;
import org.apache.wicket.RequestContext;
-import org.apache.wicket.RequestListenerInterface;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WicketURLDecoder;
@@ -63,8 +62,6 @@
/** Marks this request as an ajax request. */
private boolean ajax;
- private boolean forceNewVersion = false;
-
/**
* Protected constructor.
*
@@ -382,10 +379,10 @@
}
/**
- * @see org.apache.wicket.Request#getURL()
+ * @see org.apache.wicket.Request#getUrl()
*/
@Override
- public String getURL()
+ public Url getUrl()
{
/*
* Servlet 2.3 specification :
@@ -419,7 +416,7 @@
// Remove leading '/'
url = url.substring(1);
}
- return url;
+ return Url.parse(url);
}
/**
@@ -455,39 +452,6 @@
this.ajax = ajax;
}
- /**
- * This method by default calls isAjax(), wicket ajax request do have an header set. And for all
- * the ajax request the versioning should be merged with the previous one. And when it sees that
- * the current request is a redirect to page request the version will also be merged with the
- * previous one because refresh in the browser or redirects to a page shouldn't generate a new
- * version.
- *
- * @see org.apache.wicket.Request#mergeVersion()
- */
- @Override
- public boolean mergeVersion()
- {
- if (forceNewVersion == true)
- {
- return false;
- }
- else
- {
- RequestListenerInterface intface = getRequestParameters().getInterface();
- return isAjax() || intface == IRedirectListener.INTERFACE;
- }
- }
-
- /**
- * Allows to create new versions even on AJAX request. This can come handly when the AJAX
- * response does a real redirect.
- *
- * @param forceNewVersion
- */
- public void setForceNewVersion(boolean forceNewVersion)
- {
- this.forceNewVersion = forceNewVersion;
- }
/**
* @see org.apache.wicket.protocol.http.WebRequest#newMultipartWebRequest(org.apache.wicket.util.lang.Bytes)
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java Fri Dec 4 23:36:24 2009
@@ -36,6 +36,7 @@
import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.html.INewBrowserWindowListener;
import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.protocol.http.PageExpiredException;
import org.apache.wicket.protocol.http.WebResponse;
import org.apache.wicket.protocol.http.request.WebErrorCodeResponseTarget;
@@ -302,12 +303,12 @@
// NOTE: we NEED to put the '/' in front as otherwise some versions
// of application servers (e.g. Jetty 5.1.x) will fail for requests
// like '/mysubdir/myfile.css'
- String url = requestCycle.getRequest().getURL();
- if ((url.length() > 0 && url.charAt(0) != '/') || url.length() == 0)
+ Url url = new Url(requestCycle.getRequest().getUrl());
+ if (!url.isAbsolute())
{
- url = '/' + url;
+ url.makeAbsolute();
}
- return new WebExternalResourceRequestTarget(url);
+ return new WebExternalResourceRequestTarget(url.toString());
}
/**
@@ -461,9 +462,6 @@
// Does page exist?
if (page != null)
{
- // Set page on request
- requestCycle.getRequest().setPage(page);
-
// see whether this resolves to a component call or just the page
final String interfaceName = requestParameters.getInterfaceName();
if (interfaceName != null)
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java Fri Dec 4 23:36:24 2009
@@ -254,7 +254,6 @@
if ((page != null) && page.getClass().equals(pageClassRef.get()))
{
requestParameters.setInterfaceName(IRedirectListener.INTERFACE.getName());
- RequestCycle.get().getRequest().setPage(page);
return new PageRequestTarget(page);
}
else
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java Fri Dec 4 23:36:24 2009
@@ -227,7 +227,9 @@
}
else
{
- response.detectContentType(requestCycle, requestCycle.getRequest().getURL());
+ response.detectContentType(requestCycle, requestCycle.getRequest()
+ .getUrl()
+ .toString());
}
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java Fri Dec 4 23:36:24 2009
@@ -18,7 +18,9 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import junit.framework.TestCase;
@@ -49,6 +51,18 @@
assertEquals(list, url.getQueryParameters());
}
+ public void testPutParameters()
+ {
+ Url url = Url.parse("foo?color=green&width=50&color=red");
+ Map<String, String[]> params = new HashMap<String, String[]>();
+ url.putQueryParameters(params);
+ assertEquals(2, params.size());
+ assertEquals("50", params.get("width")[0]);
+ assertEquals(2, params.get("color").length);
+ assertEquals("green", params.get("color")[0]);
+ assertEquals("red", params.get("color")[1]);
+ }
+
/**
*
*/