Author: knopp
Date: Sat Apr 11 19:14:43 2009
New Revision: 764237
URL: http://svn.apache.org/viewvc?rev=764237&view=rev
Log:
Mock the stuff
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
(with props)
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
Sat Apr 11 19:14:43 2009
@@ -63,7 +63,7 @@
* <code>false</code> otherwise.
*/
public boolean wasCreatedBookmarkable();
-
+
/**
* Gets whether the page is stateless. Components on stateless page
must not render any
* stateful urls.
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
Sat Apr 11 19:14:43 2009
@@ -167,6 +167,26 @@
}
return false;
}
+
+ /**
+ * Convenience method that processes the request and detaches the
{...@link RequestCycle}.
+ *
+ * @return <code>true</code> if the request resolved to a Wicket
request, <code>false</code>
+ * otherwise.
+ */
+ public boolean processRequestAndDetach()
+ {
+ boolean result;
+ try
+ {
+ result = processRequest();
+ }
+ finally
+ {
+ detach();
+ }
+ return result;
+ }
private void executeExceptionRequestHandler(RequestHandler handler, int
retryCount)
{
@@ -306,8 +326,7 @@
catch (Exception e)
{
log.error("Error detaching
DetachCallback", e);
- }
- ;
+ };
}
set(null);
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
Sat Apr 11 19:14:43 2009
@@ -74,7 +74,7 @@
return value;
}
- public static void set(ThreadContext threadContext)
+ public static void restore(ThreadContext threadContext)
{
threadLocal.set(threadContext);
}
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,60 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.request.encoder.BookmarkableEncoder;
+import org.apache.wicket.request.encoder.PageInstanceEncoder;
+import org.apache.wicket.request.encoder.ResourceReferenceEncoder;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+import
org.apache.wicket.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+import org.apache.wicket.session.SessionStore;
+
+public class MockApplication extends Application
+{
+
+ public MockApplication()
+ {
+ }
+
+ @Override
+ protected void registerDefaultEncoders()
+ {
+ registerEncoder(new PageInstanceEncoder());
+ registerEncoder(new BookmarkableEncoder());
+ registerEncoder(new ResourceReferenceEncoder());
+ }
+
+ @Override
+ public Class<? extends IPage> getHomePage()
+ {
+ return null;
+ }
+
+ @Override
+ protected MockRequestCycle newRequestCycle(Request request, Response
response)
+ {
+ return new MockRequestCycle(request, response,
newRequestCycleContext(request, response));
+ }
+
+ @Override
+ public RenderPageRequestHandlerDelegate
getRenderPageRequestHandlerDelegate(
+ RenderPageRequestHandler renderPageRequestHandler)
+ {
+ return new
MockRenderPageRequestHandlerDelegate(renderPageRequestHandler);
+ }
+
+ @Override
+ protected PageManager newPageManager()
+ {
+ return new MockPageManager();
+ }
+
+ @Override
+ protected SessionStore newSessionStore()
+ {
+ return new MockSessionStore();
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,81 @@
+package org.apache.wicket.mock;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManagerContext;
+import org.apache.wicket.page.common.AbstractPageManager;
+import org.apache.wicket.page.common.RequestAdapter;
+
+public class MockPageManager extends AbstractPageManager
+{
+
+ public MockPageManager()
+ {
+ }
+
+ private Map<String, Map<Integer, IPage>> sessionMap = new
ConcurrentHashMap<String, Map<Integer, IPage>>();
+
+ private class MockRequestAdapter extends RequestAdapter
+ {
+ public MockRequestAdapter(PageManagerContext context)
+ {
+ super(context);
+ }
+
+ @Override
+ protected IPage getPage(int id)
+ {
+ Map<Integer, IPage> pages =
sessionMap.get(getSessionId());
+ return pages != null ? pages.get(id) : null;
+ }
+
+ @Override
+ protected void newSessionCreated()
+ {
+
+ }
+
+ @Override
+ protected void storeTouchedPages(List<IPage> touchedPages)
+ {
+ bind();
+ Map<Integer, IPage> pages =
sessionMap.get(getSessionId());
+ if (pages == null)
+ {
+ pages = new HashMap<Integer, IPage>();
+ sessionMap.put(getSessionId(), pages);
+ }
+ for (IPage page : touchedPages)
+ {
+ pages.put(page.getPageId(), page);
+ }
+ }
+ };
+
+ @Override
+ protected RequestAdapter newRequestAdapter(PageManagerContext context)
+ {
+ return new MockRequestAdapter(context);
+ }
+
+ @Override
+ public void sessionExpired(String sessionId)
+ {
+ sessionMap.remove(sessionId);
+ }
+
+ @Override
+ public boolean supportsVersioning()
+ {
+ return false;
+ }
+
+ public void destroy()
+ {
+ sessionMap.clear();
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,21 @@
+ package org.apache.wicket.mock;
+
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+import
org.apache.wicket.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+
+public class MockRenderPageRequestHandlerDelegate extends
RenderPageRequestHandlerDelegate
+{
+
+ public MockRenderPageRequestHandlerDelegate(RenderPageRequestHandler
renderPageRequestHandler)
+ {
+ super(renderPageRequestHandler);
+ }
+
+ @Override
+ public void respond(RequestCycle requestCycle)
+ {
+ getPageProvider().getPageInstance().renderPage();
+ }
+
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,20 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.request.Request;
+
+public class MockRequest extends Request
+{
+ private final Url url;
+
+ public MockRequest(Url url)
+ {
+ this.url = url;
+ }
+
+ @Override
+ public Url getUrl()
+ {
+ return url;
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,36 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.RequestCycleContext;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+
+public class MockRequestCycle extends RequestCycle
+{
+
+ public MockRequestCycle(Request request, Response response,
RequestCycleContext context)
+ {
+ super(request, response, context);
+ }
+
+ private RequestHandler forcedRequestHandler;
+
+ public void forceRequestHandler(RequestHandler requestHandler)
+ {
+ this.forcedRequestHandler = requestHandler;
+ }
+
+ @Override
+ protected RequestHandler resolveRequestHandler()
+ {
+ if (forcedRequestHandler != null)
+ {
+ return forcedRequestHandler;
+ }
+ else
+ {
+ return super.resolveRequestHandler();
+ }
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,105 @@
+package org.apache.wicket.mock;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.apache.wicket.Session;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.session.SessionStore;
+
+/**
+ * Session store that holds one session.
+ *
+ * @author Matej Knopp
+ */
+public class MockSessionStore implements SessionStore
+{
+
+ public MockSessionStore()
+ {
+
+ }
+
+ private String sessionId;
+ private Map<String, Serializable> attributes = new HashMap<String,
Serializable>();
+ private Session session;
+
+ public void bind(Request request, Session newSession)
+ {
+ session = newSession;
+ }
+
+ public void destroy()
+ {
+ cleanup();
+ }
+
+ public Serializable getAttribute(Request request, String name)
+ {
+ return attributes.get(name);
+ }
+
+ public Set<String> getAttributeNames(Request request)
+ {
+ return Collections.unmodifiableSet(attributes.keySet());
+ }
+
+ public String getSessionId(Request request, boolean create)
+ {
+ if (create && sessionId == null)
+ {
+ sessionId = UUID.randomUUID().toString();
+ }
+ return sessionId;
+ }
+
+ private void cleanup()
+ {
+ sessionId = null;
+ attributes.clear();
+ session = null;
+ }
+
+ public void invalidate(Request request)
+ {
+ for (UnboundListener l : unboundListeners)
+ {
+ l.sessionUnbound(sessionId);
+ }
+
+ cleanup();
+ }
+
+ public Session lookup(Request request)
+ {
+ return session;
+ }
+
+ private Set<UnboundListener> unboundListeners = new
CopyOnWriteArraySet<UnboundListener>();
+
+ public void registerUnboundListener(UnboundListener listener)
+ {
+ unboundListeners.add(listener);
+ }
+
+ public void removeAttribute(Request request, String name)
+ {
+ attributes.remove(name);
+ }
+
+ public void setAttribute(Request request, String name, Serializable
value)
+ {
+ attributes.put(name, value);
+ }
+
+ public void unregisterUnboundListener(UnboundListener listener)
+ {
+ unboundListeners.remove(listener);
+ }
+
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
Sat Apr 11 19:14:43 2009
@@ -15,6 +15,7 @@
* limitations under the License.
*/
package org.apache.wicket.protocol.http;
+
import java.io.IOException;
import java.io.InputStream;
@@ -73,7 +74,6 @@
*/
public static final String APP_FACT_PARAM =
"applicationFactoryClassName";
-
/**
* Checks if the request is for home page and lacks trailing slash. If
necessary redirects to
* URL with trailing slash.
@@ -84,19 +84,18 @@
* @return <code>true</code> if there is a trailing slash,
<code>false</code> if redirect was
* necessary.
*/
- private boolean checkForTrailingSlash(HttpServletRequest request,
HttpServletResponse response,
- String filterPath)
- {
+ private boolean checkForTrailingSlash(HttpServletRequest request,
HttpServletResponse response, String filterPath)
+ {
// current URI
String uri = Strings.stripJSessionId(request.getRequestURI());
-
+
// home page without trailing slash URI
- String homePageUri = request.getContextPath() + "/" +
filterPath;
+ String homePageUri = request.getContextPath() + "/" +
filterPath;
if (homePageUri.endsWith("/"))
{
homePageUri = homePageUri.substring(0,
homePageUri.length() - 1);
}
-
+
if (uri.equals(homePageUri))
{
// construct redirect URL
@@ -121,30 +120,27 @@
return true;
}
- public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
- throws IOException, ServletException
+ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException,
+ ServletException
{
try
{
- HttpServletRequest httpServletRequest =
(HttpServletRequest)request;
- HttpServletResponse httpServletResponse =
(HttpServletResponse)response;
-
+ HttpServletRequest httpServletRequest =
(HttpServletRequest) request;
+ HttpServletResponse httpServletResponse =
(HttpServletResponse) response;
+
String filterPath = getFilterPath(httpServletRequest);
-
+
webApplication.set();
-
+
if (checkForTrailingSlash(httpServletRequest,
httpServletResponse, filterPath))
{
ServletWebRequest req = new
ServletWebRequest(httpServletRequest, filterPath);
ServletWebResponse resp = new
ServletWebResponse(httpServletResponse);
-
- RequestCycle requestCycle =
webApplication.createRequestCycle(req, resp);
-
- if (requestCycle.processRequest())
- {
- requestCycle.detach();
- }
- else
+
+ RequestCycle requestCycle =
webApplication.createRequestCycle(req, resp);
+
+
+ if (!requestCycle.processRequestAndDetach())
{
chain.doFilter(request, response);
}
@@ -157,7 +153,7 @@
}
private WebApplication webApplication;
-
+
/**
* Creates the web application factory instance.
*
@@ -182,17 +178,16 @@
try
{
// Try to find the specified factory class
- final Class<?> factoryClass =
Thread.currentThread()
- .getContextClassLoader()
- .loadClass(appFactoryClassName);
+ final Class<?> factoryClass =
Thread.currentThread().getContextClassLoader().loadClass(
+ appFactoryClassName);
// Instantiate the factory
- return
(IWebApplicationFactory)factoryClass.newInstance();
+ return (IWebApplicationFactory)
factoryClass.newInstance();
}
catch (ClassCastException e)
{
- throw new WicketRuntimeException("Application
factory class " +
- appFactoryClassName + " must implement
IWebApplicationFactory");
+ throw new WicketRuntimeException("Application
factory class " + appFactoryClassName
+ + " must implement
IWebApplicationFactory");
}
catch (ClassNotFoundException e)
{
@@ -215,25 +210,25 @@
public void init(FilterConfig filterConfig) throws ServletException
{
- this.filterConfig = filterConfig;
+ this.filterConfig = filterConfig;
IWebApplicationFactory factory = getApplicationFactory();
webApplication = factory.createApplication(this);
webApplication.setName(filterConfig.getFilterName());
webApplication.setWicketFilter(this);
-
+
initFilterPath();
-
+
webApplication.set();
try
{
webApplication.initApplication();
- }
+ }
finally
{
ThreadContext.detach();
- }
+ }
}
-
+
public FilterConfig getFilterConfig()
{
return filterConfig;
@@ -255,14 +250,12 @@
catch (SecurityException e)
{
// Swallow this at INFO.
- log.info("Couldn't read web.xml to
automatically pick up servlet/filter path: " +
- e.getMessage());
+ log.info("Couldn't read web.xml to
automatically pick up servlet/filter path: " + e.getMessage());
}
if (filterPath == null)
{
- log.info("Unable to parse filter mapping
web.xml for " +
- filterConfig.getFilterName() + ". " +
"Configure with init-param " +
- FILTER_MAPPING_PARAM + " if it is not
\"/*\".");
+ log.info("Unable to parse filter mapping
web.xml for " + filterConfig.getFilterName() + ". "
+ + "Configure with init-param "
+ FILTER_MAPPING_PARAM + " if it is not \"/*\".");
}
}
};
@@ -272,114 +265,114 @@
private boolean servletMode = false;
-// private String getFilterPath(String filterName, InputStream is) throws
ServletException
-// {
-// String prefix = servletMode ? "servlet" : "filter";
-// String mapping = prefix + "-mapping";
-// String name = prefix + "-name";
-//
-// // Filter mappings look like this:
-// //
-// // <filter-mapping> <filter-name>WicketFilter</filter-name>
-// // <url-pattern>/*</url-pattern> <...> <filter-mapping>
-// try
-// {
-// ArrayList<String> urlPatterns = new ArrayList<String>();
-// XmlPullParser parser = new XmlPullParser();
-// parser.parse(is);
-//
-// while (true)
-// {
-// XmlTag elem;
-// do
-// {
-// elem = (XmlTag)parser.nextTag();
-// }
-// while (elem != null &&
(!(elem.getName().equals(mapping) && elem.isOpen())));
-//
-// if (elem == null)
-// {
-// break;
-// }
-//
-// String encounteredFilterName = null, urlPattern
= null;
-//
-// do
-// {
-// elem = (XmlTag)parser.nextTag();
-// if (elem.isOpen())
-// {
-// parser.setPositionMarker();
-// }
-// else if (elem.isClose() &&
elem.getName().equals(name))
-// {
-// encounteredFilterName =
parser.getInputFromPositionMarker(elem.getPos())
-// .toString()
-// .trim();
-// }
-// else if (elem.isClose() &&
elem.getName().equals("url-pattern"))
-// {
-// urlPattern =
parser.getInputFromPositionMarker(elem.getPos())
-// .toString()
-// .trim();
-// }
-// }
-// while (urlPattern == null ||
encounteredFilterName == null);
-//
-// if (filterName.equals(encounteredFilterName))
-// {
-// urlPatterns.add(urlPattern);
-// }
-// }
-//
-// String prefixUppered =
Character.toUpperCase(prefix.charAt(0)) + prefix.substring(1);
-//
-// // By the time we get here, we have a list of
urlPatterns we match
-// // this filter against.
-// // In all likelihood, we will only have one. If we have
none, we
-// // have an error.
-// // If we have more than one, we pick the first one to
use for any
-// // 302 redirects that require absolute URLs.
-// if (urlPatterns.size() == 0)
-// {
-// throw new IllegalArgumentException("Error
initializing Wicket" + prefixUppered +
-// " - you have no <" + mapping + ">
element with a url-pattern that uses " +
-// prefix + ": " + filterName);
-// }
-// String urlPattern = urlPatterns.get(0);
-//
-// // Check for leading '/' and trailing '*'.
-// if (!urlPattern.startsWith("/") ||
!urlPattern.endsWith("*"))
-// {
-// throw new IllegalArgumentException("<" +
mapping + "> for Wicket" + prefixUppered +
-// " \"" + filterName + "\" must start
with '/' and end with '*'.");
-// }
-//
-// // Strip trailing '*' and keep leading '/'.
-// return stripWildcard(urlPattern);
-// }
-// catch (IOException e)
-// {
-// throw new ServletException("Error finding <" + prefix +
"> " + filterName +
-// " in web.xml", e);
-// }
-// catch (ParseException e)
-// {
-// throw new ServletException("Error finding <" + prefix +
"> " + filterName +
-// " in web.xml", e);
-// }
-// catch (ResourceStreamNotFoundException e)
-// {
-// throw new ServletException("Error finding <" + prefix +
"> " + filterName +
-// " in web.xml", e);
-// }
-// }
-
- private String getFilterPath(String filterName, String name,
Node node)
+ // private String getFilterPath(String filterName, InputStream is)
throws ServletException
+ // {
+ // String prefix = servletMode ? "servlet" : "filter";
+ // String mapping = prefix + "-mapping";
+ // String name = prefix + "-name";
+ //
+ // // Filter mappings look like this:
+ // //
+ // // <filter-mapping> <filter-name>WicketFilter</filter-name>
+ // // <url-pattern>/*</url-pattern> <...> <filter-mapping>
+ // try
+ // {
+ // ArrayList<String> urlPatterns = new ArrayList<String>();
+ // XmlPullParser parser = new XmlPullParser();
+ // parser.parse(is);
+ //
+ // while (true)
+ // {
+ // XmlTag elem;
+ // do
+ // {
+ // elem = (XmlTag)parser.nextTag();
+ // }
+ // while (elem != null && (!(elem.getName().equals(mapping) &&
elem.isOpen())));
+ //
+ // if (elem == null)
+ // {
+ // break;
+ // }
+ //
+ // String encounteredFilterName = null, urlPattern = null;
+ //
+ // do
+ // {
+ // elem = (XmlTag)parser.nextTag();
+ // if (elem.isOpen())
+ // {
+ // parser.setPositionMarker();
+ // }
+ // else if (elem.isClose() && elem.getName().equals(name))
+ // {
+ // encounteredFilterName =
parser.getInputFromPositionMarker(elem.getPos())
+ // .toString()
+ // .trim();
+ // }
+ // else if (elem.isClose() && elem.getName().equals("url-pattern"))
+ // {
+ // urlPattern = parser.getInputFromPositionMarker(elem.getPos())
+ // .toString()
+ // .trim();
+ // }
+ // }
+ // while (urlPattern == null || encounteredFilterName == null);
+ //
+ // if (filterName.equals(encounteredFilterName))
+ // {
+ // urlPatterns.add(urlPattern);
+ // }
+ // }
+ //
+ // String prefixUppered = Character.toUpperCase(prefix.charAt(0)) +
prefix.substring(1);
+ //
+ // // By the time we get here, we have a list of urlPatterns we match
+ // // this filter against.
+ // // In all likelihood, we will only have one. If we have none, we
+ // // have an error.
+ // // If we have more than one, we pick the first one to use for any
+ // // 302 redirects that require absolute URLs.
+ // if (urlPatterns.size() == 0)
+ // {
+ // throw new IllegalArgumentException("Error initializing Wicket" +
prefixUppered +
+ // " - you have no <" + mapping + "> element with a url-pattern that
uses " +
+ // prefix + ": " + filterName);
+ // }
+ // String urlPattern = urlPatterns.get(0);
+ //
+ // // Check for leading '/' and trailing '*'.
+ // if (!urlPattern.startsWith("/") || !urlPattern.endsWith("*"))
+ // {
+ // throw new IllegalArgumentException("<" + mapping + "> for Wicket" +
prefixUppered +
+ // " \"" + filterName + "\" must start with '/' and end with '*'.");
+ // }
+ //
+ // // Strip trailing '*' and keep leading '/'.
+ // return stripWildcard(urlPattern);
+ // }
+ // catch (IOException e)
+ // {
+ // throw new ServletException("Error finding <" + prefix + "> " +
filterName +
+ // " in web.xml", e);
+ // }
+ // catch (ParseException e)
+ // {
+ // throw new ServletException("Error finding <" + prefix + "> " +
filterName +
+ // " in web.xml", e);
+ // }
+ // catch (ResourceStreamNotFoundException e)
+ // {
+ // throw new ServletException("Error finding <" + prefix + "> " +
filterName +
+ // " in web.xml", e);
+ // }
+ // }
+
+ private String getFilterPath(String filterName, String name, Node node)
{
String foundUrlPattern = null;
String foundFilterName = null;
-
+
for (int i = 0; i < node.getChildNodes().getLength(); ++i)
{
Node n = node.getChildNodes().item(i);
@@ -401,7 +394,7 @@
return null;
}
}
-
+
private String getFilterPath(String filterName, String mapping, String
name, NodeList nodeList)
{
for (int i = 0; i < nodeList.getLength(); ++i)
@@ -434,20 +427,20 @@
{
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(is);
-
+
String prefix = servletMode ? "servlet" : "filter";
String mapping = prefix + "-mapping";
String name = prefix + "-name";
String urlPattern = getFilterPath(filterName, mapping,
name, document.getChildNodes());
return stripWildcard(urlPattern);
- }
- catch (Exception e)
+ }
+ catch (Exception e)
{
throw new ServletException(e);
}
}
-
+
protected String getFilterPath(HttpServletRequest request)
{
if (filterPath != null)
@@ -469,8 +462,8 @@
}
else if (!result.startsWith("/") || !result.endsWith("/*"))
{
- throw new WicketRuntimeException("Your " +
FILTER_MAPPING_PARAM +
- " must start with \"/\" and end with \"/*\". It
is: " + result);
+ throw new WicketRuntimeException("Your " +
FILTER_MAPPING_PARAM
+ + " must start with \"/\" and end with
\"/*\". It is: " + result);
}
return filterPath = stripWildcard(result);
}
@@ -480,7 +473,7 @@
*
* @param result
* @return The stripped String
- */
+ */
private String stripWildcard(String result)
{
return result.substring(1, result.length() - 1);
@@ -495,6 +488,5 @@
}
}
-
private static final Logger log =
LoggerFactory.getLogger(WicketFilter.class);
}
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,35 @@
+package org.apache.wicket.request.response;
+
+public class StringResponse extends Response
+{
+
+ private final StringBuilder builder = new StringBuilder();
+
+ public StringResponse()
+ {
+ }
+
+ @Override
+ public String encodeURL(String url)
+ {
+ return url;
+ }
+
+ @Override
+ public void write(CharSequence sequence)
+ {
+ builder.append(sequence);
+ }
+
+ @Override
+ public void write(byte[] array)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String toString()
+ {
+ return builder.toString();
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
Sat Apr 11 19:14:43 2009
@@ -88,6 +88,7 @@
log.debug("Session unbound: " + sessionId);
Application application =
Application.get(applicationKey);
HttpSessionStore sessionStore = (HttpSessionStore)
application.getSessionStore();
+
for (UnboundListener listener :
sessionStore.unboundListeners)
{
listener.sessionUnbound(sessionId);
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java?rev=764237&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
Sat Apr 11 19:14:43 2009
@@ -0,0 +1,67 @@
+package org.apache.wicket.test;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.mock.MockRequest;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.encoder.MountedEncoder;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+import org.apache.wicket.request.response.StringResponse;
+
+public class TestPageRender extends TestCase
+{
+ public static class Page1 extends Page
+ {
+ private static final long serialVersionUID = 1L;
+
+ public Page1()
+ {
+ Link l;
+ add(l = new Link("link")
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void onLinkClicked()
+ {
+
+ }
+ });
+ l.setLabel("A Link!");
+ }
+
+ @Override
+ public void renderPage()
+ {
+ super.renderPage();
+ }
+ };
+
+ public void testRender1()
+ {
+ ThreadContext context = ThreadContext.getAndClean();
+ MockApplication app = new MockApplication();
+ app.setName("TestApplication1");
+ app.set();
+ app.initApplication();
+
+ app.registerEncoder(new MountedEncoder("first-test-page",
Page1.class));
+
+ Request request = new MockRequest(Url.parse("first-test-page"));
+ Response response = new StringResponse();
+
+ RequestCycle cycle = app.createRequestCycle(request, response);
+
+ cycle.processRequestAndDetach();
+
+ app.destroy();
+ ThreadContext.restore(context);
+
+ System.out.println(response.toString());
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
------------------------------------------------------------------------------
svn:mime-type = text/plain