You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2010/01/04 02:03:49 UTC
svn commit: r895520 [3/7] - in /wicket/trunk:
wicket-examples/src/main/java/org/apache/wicket/examples/staticpages/
wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/
wicket/src/main/disabled/ wicket/src/main/di...
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/BaseWicketTester.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.html (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyHomePage.html)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.html?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.html&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyHomePage.html&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.html
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyHomePage.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyHomePage.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyHomePage.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.html (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyPanelPage.html)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.html?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.html&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyPanelPage.html&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.html
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyPanelPage.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/DummyPanelPage.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/DummyPanelPage.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ExternalPageViewer.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/ExternalPageViewer.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ExternalPageViewer.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ExternalPageViewer.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/ExternalPageViewer.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ExternalPageViewer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ExternalPageViewer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/FormTester.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/FormTester.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/FormTester.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/FormTester.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/FormTester.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ITestPageSource.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/ITestPageSource.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ITestPageSource.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ITestPageSource.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/ITestPageSource.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ITestPageSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/ITestPageSource.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/Result.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/Result.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/Result.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/Result.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/Result.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/Result.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TagTester.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/TagTester.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TagTester.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TagTester.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/TagTester.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TagTester.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TagTester.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TestPanelSource.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/TestPanelSource.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TestPanelSource.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TestPanelSource.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/TestPanelSource.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TestPanelSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/TestPanelSource.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTester.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTester.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTester.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTester.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTester.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTesterHelper.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTesterHelper.java?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTesterHelper.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTesterHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/WicketTesterHelper.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/package.html (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/package.html)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/package.html?p2=wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/package.html&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/package.html&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
(empty)
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/disabled/org/apache/wicket/util/tester/package.html
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
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=895520&r1=895519&r2=895520&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 Jan 4 01:03:29 2010
@@ -46,13 +46,33 @@
import org.apache.wicket.markup.resolver.MarkupInheritanceResolver;
import org.apache.wicket.markup.resolver.WicketContainerResolver;
import org.apache.wicket.markup.resolver.WicketMessageResolver;
-import org.apache.wicket.ng.request.IRequestMapper;
+import org.apache.wicket.ng.DefaultExceptionMapper;
+import org.apache.wicket.ng.ThreadContext;
+import org.apache.wicket.ng.request.ICompoundRequestMapper;
+import org.apache.wicket.ng.request.component.IRequestablePage;
+import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.ng.request.cycle.RequestCycleContext;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.ng.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+import org.apache.wicket.ng.request.mapper.IMapperContext;
import org.apache.wicket.ng.request.mapper.SystemMapper;
+import org.apache.wicket.ng.resource.ResourceReferenceRegistry;
+import org.apache.wicket.pageStore.DefaultPageManagerContext;
+import org.apache.wicket.pageStore.DefaultPageStore;
+import org.apache.wicket.pageStore.DiskDataStore;
+import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.pageStore.IPageManager;
+import org.apache.wicket.pageStore.IPageManagerContext;
+import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.pageStore.PersistentPageManager;
import org.apache.wicket.protocol.http.IRequestLogger;
import org.apache.wicket.protocol.http.RequestLogger;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.session.DefaultPageFactory;
import org.apache.wicket.session.ISessionStore;
+import org.apache.wicket.session.ISessionStore.UnboundListener;
import org.apache.wicket.settings.IApplicationSettings;
import org.apache.wicket.settings.IDebugSettings;
import org.apache.wicket.settings.IExceptionSettings;
@@ -66,7 +86,7 @@
import org.apache.wicket.settings.ISessionSettings;
import org.apache.wicket.settings.Settings;
import org.apache.wicket.util.convert.ConverterLocator;
-import org.apache.wicket.util.lang.Classes;
+import org.apache.wicket.util.lang.Checks;
import org.apache.wicket.util.lang.Objects;
import org.apache.wicket.util.lang.PropertyResolver;
import org.apache.wicket.util.time.Duration;
@@ -112,7 +132,7 @@
* @see org.apache.wicket.protocol.http.WebApplication
* @author Jonathan Locke
*/
-public abstract class Application
+public abstract class Application implements UnboundListener
{
/** Configuration constant for the 2 types */
public static final String CONFIGURATION = "configuration";
@@ -134,9 +154,6 @@
private static final Map<String, Application> applicationKeyToApplication = new HashMap<String, Application>(
1);
- /** Thread local holder of the application object. */
- private static final ThreadLocal<Application> current = new ThreadLocal<Application>();
-
/** Log. */
private static final Logger log = LoggerFactory.getLogger(Application.class);
@@ -153,7 +170,7 @@
private List<IHeaderContributor> renderHeadListeners;
/** root mapper */
- private IRequestMapper rootRequestMapper;
+ private ICompoundRequestMapper rootRequestMapper;
/** list of {@link IComponentInstantiationListener}s. */
private IComponentInstantiationListener[] componentInstantiationListeners = new IComponentInstantiationListener[0];
@@ -168,7 +185,7 @@
private MetaDataEntry<?>[] metaData;
/** Name of application subclass. */
- private final String name;
+ private String name;
/** Request logger instance. */
private IRequestLogger requestLogger;
@@ -193,7 +210,7 @@
*/
public static boolean exists()
{
- return current.get() != null;
+ return ThreadContext.getApplication() != null;
}
/**
@@ -203,7 +220,7 @@
*/
public static Application get()
{
- final Application application = current.get();
+ Application application = ThreadContext.getApplication();
if (application == null)
{
throw new WicketRuntimeException("There is no application attached to current thread " +
@@ -213,6 +230,15 @@
}
/**
+ * Assign this application to current thread. This method should never be called by framework
+ * clients.
+ */
+ public void set()
+ {
+ ThreadContext.setApplication(this);
+ }
+
+ /**
* Gets the Application based on the application key of that application. You typically never
* have to use this method unless you are working on an integration project.
*
@@ -240,37 +266,11 @@
}
/**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT.
- *
- * @param application
- * The current application or null for this thread
- */
- public static void set(final Application application)
- {
- if (application == null)
- {
- throw new IllegalArgumentException("Argument application can not be null");
- }
- current.set(application);
- }
-
- /**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT.
- */
- public static void unset()
- {
- current.set(null);
- }
-
- /**
* Constructor. <strong>Use {@link #init()} for any configuration of your application instead of
* overriding the constructor.</strong>
*/
public Application()
{
- // Create name from subclass
- name = Classes.simpleName(getClass());
-
// Create shared resources repository
sharedResources = new SharedResources(this);
@@ -486,7 +486,7 @@
*
* @return Home page class for this application
*/
- public abstract Class<? extends Page> getHomePage();
+ public abstract Class<? extends IRequestablePage> getHomePage();
/**
* @return Application's markup related settings
@@ -613,6 +613,12 @@
return sessionStore;
}
+ public void sessionUnbound(String sessionId)
+ {
+ getPageManager().sessionExpired(sessionId);
+ }
+
+
/**
* Gets the shared resources.
*
@@ -671,7 +677,7 @@
*
* @param target
*/
- public void logEventTarget(IRequestTarget target)
+ public void logEventTarget(IRequestHandler target)
{
}
@@ -680,25 +686,11 @@
*
* @param requestTarget
*/
- public void logResponseTarget(IRequestTarget requestTarget)
+ public void logResponseTarget(IRequestHandler requestTarget)
{
}
/**
- * Creates a new RequestCycle object. Override this method if you want to provide a custom
- * request cycle.
- *
- * @param request
- * The request
- * @param response
- * The response
- * @return The request cycle
- *
- * @since 1.3
- */
- public abstract RequestCycle newRequestCycle(final Request request, final Response response);
-
- /**
* Creates a new session. Override this method if you want to provide a custom session.
*
* @param request
@@ -890,9 +882,11 @@
callDestroyers();
applicationKeyToApplication.remove(getApplicationKey());
- Session.unset();
+
+ pageManager.destroy();
+ sessionStore.destroy();
+
RequestContext.unset();
- RequestCycle.set(null);
}
/**
@@ -925,8 +919,12 @@
applicationKeyToApplication.put(applicationKey, this);
sessionStore = newSessionStore();
+ sessionStore.registerUnboundListener(this);
converterLocator = newConverterLocator();
+ pageManager = newPageManager(getPageManagerContext());
+ resourceReferenceRegistry = newResourceReferenceRegistry();
+
// set up default request mapper
setRootRequestMapper(new SystemMapper());
}
@@ -1191,7 +1189,7 @@
/**
* @return The root request mapper
*/
- public final IRequestMapper getRootRequestMapper()
+ public final ICompoundRequestMapper getRootRequestMapper()
{
return rootRequestMapper;
}
@@ -1201,8 +1199,277 @@
*
* @param rootRequestMapper
*/
- public final void setRootRequestMapper(final IRequestMapper rootRequestMapper)
+ public final void setRootRequestMapper(final ICompoundRequestMapper rootRequestMapper)
{
this.rootRequestMapper = rootRequestMapper;
}
+
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // Page Manager
+ //
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ protected IPageManager newPageManager(IPageManagerContext context)
+ {
+ int cacheSize = 40;
+ int fileChannelPoolCapacity = 50;
+ IDataStore dataStore = new DiskDataStore(getName(), 1000000, fileChannelPoolCapacity);
+ IPageStore pageStore = new DefaultPageStore(getName(), dataStore, cacheSize);
+ return new PersistentPageManager(getName(), pageStore, context);
+ }
+
+ private IPageManager pageManager;
+
+ /**
+ * Context for PageManager to interact with rest of Wicket
+ */
+ private final IPageManagerContext pageManagerContext = new DefaultPageManagerContext();
+
+ /**
+ *
+ * @return the page manager
+ */
+ public IPageManager getPageManager()
+ {
+ return pageManager;
+ }
+
+ /**
+ *
+ * @return the page manager context
+ */
+ protected IPageManagerContext getPageManagerContext()
+ {
+ return pageManagerContext;
+ }
+
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // Page Rendering
+ //
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Returns the {@link RenderPageRequestHandlerDelegate} responsible for rendering the page.
+ */
+ public abstract RenderPageRequestHandlerDelegate getRenderPageRequestHandlerDelegate(
+ RenderPageRequestHandler renderPageRequestHandler);
+
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // Request Handler encoding
+ //
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+ private ResourceReferenceRegistry resourceReferenceRegistry;
+
+ /**
+ * Override to create custom {@link ResourceReferenceRegistry}.
+ *
+ * @return new {@link ResourceReferenceRegistry} instance.
+ */
+ protected ResourceReferenceRegistry newResourceReferenceRegistry()
+ {
+ return new ResourceReferenceRegistry();
+ }
+
+ /**
+ * Returns {@link ResourceReferenceRegistry} for this application.
+ *
+ * @return
+ */
+ public final ResourceReferenceRegistry getResourceReferenceRegistry()
+ {
+ return resourceReferenceRegistry;
+ }
+
+ private IPageFactory pageFactory;
+
+ /**
+ * Override to create custom {@link PageFactory}
+ *
+ * @return new {@link PageFactory} instance.
+ */
+ protected IPageFactory newPageFactory()
+ {
+ return new DefaultPageFactory();
+ }
+
+ /**
+ * Returns {@link PageFactory} for this application.
+ *
+ * @return
+ */
+ public final IPageFactory getPageFactory()
+ {
+ return pageFactory;
+ }
+
+ private final IMapperContext encoderContext = new IMapperContext()
+ {
+ public String getBookmarkableIdentifier()
+ {
+ return "bookmarkable";
+ }
+
+ public String getNamespace()
+ {
+ return "wicket";
+ }
+
+ public String getPageIdentifier()
+ {
+ return "page";
+ }
+
+ public String getResourceIdentifier()
+ {
+ return "resource";
+ }
+
+ public ResourceReferenceRegistry getResourceReferenceRegistry()
+ {
+ return Application.this.getResourceReferenceRegistry();
+ }
+
+ public RequestListenerInterface requestListenerInterfaceFromString(String interfaceName)
+ {
+ return RequestListenerInterface.forName(interfaceName);
+ }
+
+ public String requestListenerInterfaceToString(RequestListenerInterface listenerInterface)
+ {
+ return listenerInterface.getName();
+ }
+
+ public IRequestablePage newPageInstance(Class<? extends IRequestablePage> pageClass,
+ PageParameters pageParameters)
+ {
+ if (pageParameters == null)
+ {
+ return getPageFactory().newPage((Class<? extends Page>)pageClass);
+ }
+ else
+ {
+ return getPageFactory().newPage((Class<? extends Page>)pageClass, pageParameters);
+ }
+ }
+
+ public IRequestablePage getPageInstance(int pageId)
+ {
+ return Page.getPage(pageId);
+ }
+
+ public Class<? extends IRequestablePage> getHomePageClass()
+ {
+ return Application.this.getHomePage();
+ }
+ };
+
+ public final IMapperContext getEncoderContext()
+ {
+ return encoderContext;
+ }
+
+ public Session fetchCreateAndSetSession(RequestCycle requestCycle)
+ {
+ Checks.argumentNotNull(requestCycle, "requestCycle");
+
+ Session session = getSessionStore().lookup(requestCycle.getRequest());
+ if (session == null)
+ {
+ session = newSession(requestCycle);
+ ThreadContext.setSession(session);
+ getPageManager().newSessionCreated();
+ }
+ else
+ {
+ ThreadContext.setSession(session);
+ }
+ return session;
+ }
+
+ protected Session newSession(RequestCycle requestCycle)
+ {
+ return new WebSession(requestCycle.getRequest());
+ }
+
+ /**
+ * Override this method to create custom Request Cycle instance.
+ *
+ * @param context
+ * holds context necessary to instantiate a request cycle, such as the current
+ * request, response, and request mappers
+ * @return
+ */
+ protected RequestCycle newRequestCycle(RequestCycleContext context)
+ {
+
+ return new RequestCycle(context);
+ }
+
+
+ public final RequestCycle createRequestCycle(Request request, Response response)
+ {
+ // FIXME exception mapper should come from elsewhere
+ RequestCycleContext context = new RequestCycleContext(request, response,
+ getRootRequestMapper(), new DefaultExceptionMapper());
+
+ RequestCycle requestCycle = newRequestCycle(context);
+ requestCycle.register(new RequestCycle.DetachCallback()
+ {
+ public void onDetach(RequestCycle requestCycle)
+ {
+ getPageManager().commitRequest();
+ }
+ });
+ return requestCycle;
+ }
+
+ /**
+ * Initialize the application
+ */
+ public final void initApplication()
+ {
+ if (name == null)
+ {
+ throw new IllegalStateException("setName must be called before initApplication");
+ }
+ internalInit();
+ init();
+ }
+
+ /**
+ * Sets application name. This method must be called before any other methods are invoked and
+ * can only be called once per application instance.
+ *
+ * @param name
+ * unique application name
+ */
+ public final void setName(String name)
+ {
+ Checks.argumentNotEmpty(name, "name");
+
+ if (this.name != null)
+ {
+ throw new IllegalStateException("Application name can only be set once.");
+ }
+
+ if (applicationKeyToApplication.get(name) != null)
+ {
+ throw new IllegalStateException("Application with name '" + name + "' already exists.'");
+ }
+
+ this.name = name;
+ applicationKeyToApplication.put(name, this);
+ }
+
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Mon Jan 4 01:03:29 2010
@@ -48,6 +48,14 @@
import org.apache.wicket.model.IModelComparator;
import org.apache.wicket.model.IWrapModel;
import org.apache.wicket.ng.request.component.IRequestableComponent;
+import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.ng.request.handler.DefaultPageProvider;
+import org.apache.wicket.ng.request.handler.PageAndComponentProvider;
+import org.apache.wicket.ng.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.ng.request.handler.resource.ResourceReferenceRequestHandler;
+import org.apache.wicket.ng.resource.ResourceReference;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.settings.IDebugSettings;
import org.apache.wicket.util.convert.IConverter;
@@ -3034,16 +3042,6 @@
}
/**
- * @param redirect
- * True if the response should be redirected to
- * @see RequestCycle#setRedirect(boolean)
- */
- public final void setRedirect(final boolean redirect)
- {
- getRequestCycle().setRedirect(redirect);
- }
-
- /**
* If false the component's tag will be printed as well as its body (which is default). If true
* only the body will be printed, but not the component's tag.
*
@@ -3068,7 +3066,7 @@
*/
public final <C extends Page> void setResponsePage(final Class<C> cls)
{
- getRequestCycle().setResponsePage(cls);
+ getRequestCycle().setResponsePage(cls, null);
}
/**
@@ -3200,7 +3198,9 @@
public final <C extends Page> CharSequence urlFor(final Class<C> pageClass,
final PageParameters parameters)
{
- return getRequestCycle().urlFor(pageClass, parameters);
+ IRequestHandler handler = new RenderPageRequestHandler(new DefaultPageProvider(pageClass,
+ parameters));
+ return getRequestCycle().renderUrlFor(handler);
}
/**
@@ -3216,7 +3216,10 @@
public final CharSequence urlFor(final IBehavior behaviour,
final RequestListenerInterface listener)
{
- return getRequestCycle().urlFor(this, behaviour, listener);
+ PageAndComponentProvider provider = new PageAndComponentProvider(getPage(), this);
+ int index = getBehaviors().indexOf(behaviour);
+ IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, listener, index);
+ return getRequestCycle().renderUrlFor(handler);
}
/**
@@ -3224,14 +3227,14 @@
*
* @see RequestCycle#urlFor(IRequestTarget)
*
- * @param requestTarget
+ * @param requestHandler
* the request target to reference
*
* @return a URL that references the given request target
*/
- public final CharSequence urlFor(final IRequestTarget requestTarget)
+ public final CharSequence urlFor(final IRequestHandler requestHandler)
{
- return getRequestCycle().urlFor(requestTarget);
+ return getRequestCycle().renderUrlFor(requestHandler);
}
/**
@@ -3243,7 +3246,9 @@
*/
public final CharSequence urlFor(final RequestListenerInterface listener)
{
- return getRequestCycle().urlFor(this, listener);
+ PageAndComponentProvider provider = new PageAndComponentProvider(getPage(), this);
+ IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, listener);
+ return getRequestCycle().renderUrlFor(handler);
}
/**
@@ -3257,7 +3262,8 @@
*/
public final CharSequence urlFor(final ResourceReference resourceReference)
{
- return getRequestCycle().urlFor(resourceReference);
+ return getRequestCycle().renderUrlFor(
+ new ResourceReferenceRequestHandler(resourceReference));
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/IPageFactory.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/IPageFactory.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/IPageFactory.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/IPageFactory.java Mon Jan 4 01:03:29 2010
@@ -17,7 +17,7 @@
package org.apache.wicket;
import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
/**
@@ -34,7 +34,6 @@
* @author Juergen Donnerstag
* @author Jonathan Locke
*/
-// TODO WICKET-NG change Page to RequestablePage
public interface IPageFactory
{
/**
@@ -48,7 +47,7 @@
* @throws WicketRuntimeException
* Thrown if the page cannot be constructed
*/
- <C extends Page> Page newPage(final Class<C> pageClass);
+ <C extends IRequestablePage> IRequestablePage newPage(final Class<C> pageClass);
/**
* Creates a new Page, passing PageParameters to the Page constructor if such a constructor
@@ -64,26 +63,7 @@
* @return The new page
* @throws WicketRuntimeException
* Thrown if the page cannot be constructed
- * @deprecated
*/
- @Deprecated
- <C extends Page> Page newPage(final Class<C> pageClass, final PageParameters parameters);
-
- /**
- * Creates a new Page, passing PageParameters to the Page constructor if such a constructor
- * exists. If no such constructor exists and the parameters argument is null or empty, then any
- * available default constructor will be used.
- *
- * @param <C>
- *
- * @param pageClass
- * The class of Page to create
- * @param parameters
- * Any parameters to pass to the Page's constructor
- * @return The new page
- * @throws WicketRuntimeException
- * Thrown if the page cannot be constructed
- */
- <C extends Page> IRequestablePage newPage(final Class<C> pageClass,
- final PageParametersNg parameters);
+ <C extends IRequestablePage> IRequestablePage newPage(final Class<C> pageClass,
+ final PageParameters parameters);
}
Copied: wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java (from r895314, wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestTarget.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestTarget.java&r1=895314&r2=895520&rev=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java Mon Jan 4 01:03:29 2010
@@ -16,23 +16,18 @@
*/
package org.apache.wicket;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+
/**
- * <p>
- * A request target is the base entity that is the subject of a request. Different types of request
+ * A request handler is the base entity that is the subject of a request. Different types of request
* have different request targets. For instance a request for a bookmarkable page differs from a
* request for a link on a previously rendered page, which in turn differs from a request for a
* shared resource.
- * </p>
- * <p>
- * It is very important (for mounting) that implementations implement
- * {@link java.lang.Object#equals(java.lang.Object)} and {@link java.lang.Object#hashCode()} in a
- * consistent way.
- * </p>
- * Typically, implementations of IRequestTarget are not meant to be used more than once.
*
* @author Eelco Hillenius
+ * @author Matej Knopp
*/
-public interface IRequestTarget
+public interface IRequestHandler
{
/**
* Generates a response.
@@ -50,4 +45,4 @@
* the current request cycle
*/
void detach(RequestCycle requestCycle);
-}
+}
\ No newline at end of file
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/IRequestHandler.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/IResourceListener.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/IResourceListener.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/IResourceListener.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/IResourceListener.java Mon Jan 4 01:03:29 2010
@@ -16,8 +16,6 @@
*/
package org.apache.wicket;
-import org.apache.wicket.request.ObsoleteRequestParameters;
-import org.apache.wicket.request.target.resource.ComponentResourceRequestTarget;
/**
* Listens for requests regarding resources. Such resources are typically non-static in nature and
@@ -37,15 +35,7 @@
{
/** Resource listener interface object */
public static final RequestListenerInterface INTERFACE = new RequestListenerInterface(
- IResourceListener.class)
- {
- @Override
- public IRequestTarget newRequestTarget(Page page, Component component,
- RequestListenerInterface listener, ObsoleteRequestParameters requestParameters)
- {
- return new ComponentResourceRequestTarget(page, component, listener);
- }
- };
+ IResourceListener.class);
/**
* Called when a resource is requested.
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java Mon Jan 4 01:03:29 2010
@@ -39,7 +39,9 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.ng.page.IManageablePage;
import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.protocol.http.WebResponse;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.settings.IDebugSettings;
import org.apache.wicket.util.lang.Classes;
@@ -223,7 +225,7 @@
/** Page parameters used to construct this page */
- private final PageParametersNg pageParameters;
+ private final PageParameters pageParameters;
/** page render count TODO WICKET-NG more javadoc */
private int renderCount = 0;
@@ -266,21 +268,16 @@
{
super(null);
this.parameters = parameters;
- pageParameters = new PageParametersNg();
+ pageParameters = new PageParameters();
init();
}
- public Page(final PageParametersNg parameters)
- {
- this(parameters, null);
- }
-
- private Page(final PageParametersNg parameters, IModel<?> model)
+ private Page(final PageParameters parameters, IModel<?> model)
{
super(null, model);
if (parameters == null)
{ // TODO WICKET-NG is this necessary or can we keep the field as null to save space?
- pageParameters = new PageParametersNg();
+ pageParameters = new PageParameters();
}
else
{
@@ -508,7 +505,7 @@
{
try
{
- if (getClass().getConstructor(new Class[] { }) != null)
+ if (getClass().getConstructor(new Class[] {}) != null)
{
bookmarkable = Boolean.TRUE;
}
@@ -710,7 +707,7 @@
// If the application wants component uses checked and
// the response is not a redirect
final IDebugSettings debugSettings = Application.get().getDebugSettings();
- if (debugSettings.getComponentUseCheck() && !getResponse().isRedirect())
+ if (debugSettings.getComponentUseCheck())
{
final List<Component> unrenderedComponents = new ArrayList<Component>();
final StringBuffer buffer = new StringBuffer();
@@ -931,8 +928,8 @@
{
// Get the response and application
final RequestCycle cycle = getRequestCycle();
- final Application application = cycle.getApplication();
- final Response response = cycle.getResponse();
+ final Application application = Application.get();
+ final WebResponse response = (WebResponse)cycle.getResponse();
// Determine encoding
final String encoding = application.getRequestCycleSettings().getResponseRequestEncoding();
@@ -963,7 +960,8 @@
}
// Set response locale from session locale
- response.setLocale(getSession().getLocale());
+ // TODO: NG Is this really necessary
+ // response.setLocale(getSession().getLocale());
}
/**
@@ -1205,11 +1203,6 @@
return numericId;
}
- public PageParametersNg getPageParametersNg()
- {
- return pageParameters;
- }
-
/**
* @see org.apache.wicket.ng.request.component.IRequestablePage#getRenderCount()
*/
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=895520&r1=895519&r2=895520&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 Mon Jan 4 01:03:29 2010
@@ -17,197 +17,28 @@
package org.apache.wicket;
import java.util.Locale;
-import java.util.Map;
import org.apache.wicket.ng.request.IRequestParameters;
import org.apache.wicket.ng.request.Url;
import org.apache.wicket.ng.request.parameter.CombinedRequestParametersAdapter;
import org.apache.wicket.ng.request.parameter.EmptyRequestParameters;
import org.apache.wicket.ng.request.parameter.UrlRequestParametersAdapter;
-import org.apache.wicket.request.IRequestCodingStrategy;
-import org.apache.wicket.request.IRequestCycleProcessor;
-import org.apache.wicket.request.ObsoleteRequestParameters;
-
/**
- * Base class for page request implementations allowing access to request parameters. A Request has
- * a URL and a parameter map. You can retrieve the URL of the request with getURL(). The entire
- * parameter map can be retrieved via getParameterMap(). Individual parameters can be retrieved via
- * getParameter(String). If multiple values are available for a given parameter, they can be
- * retrieved via getParameters(String).
+ * Request object.
*
- * @author Jonathan Locke
+ * @author Matej Knopp
*/
public abstract class Request
{
- /** the type safe request parameters object for this request. */
- private ObsoleteRequestParameters requestParameters;
-
- /**
- * Construct.
- */
- public Request()
- {
- }
-
- /**
- * An implementation of this method is only required if a subclass wishes to support sessions
- * via URL rewriting. This default implementation simply returns the URL String it is passed.
- *
- * @param url
- * The URL to decode
- * @return The decoded url
- */
- public Url decodeURL(final Url url)
- {
- return url;
- }
-
- /**
- * @return The locale for this request
- */
- public abstract Locale getLocale();
-
- /**
- * Gets a given (query) parameter by name.
- *
- * @param key
- * Parameter name
- * @return Parameter value
- */
- public abstract String getParameter(final String key);
-
- /**
- * Gets a map of (query) parameters sent with the request.
- *
- * @return Map of parameters
- */
- public abstract Map<String, String[]> getParameterMap();
-
- /**
- * Gets an array of multiple parameters by name.
- *
- * @param key
- * Parameter name
- * @return Parameter values
- */
- public abstract String[] getParameters(final String key);
-
- /**
- * @return Path info for request
- */
- public abstract String getPath();
-
- /**
- * Gets a prefix to make this relative to the context root.
- * <p>
- * For example, if your context root is http://server.com/myApp/ and the request is for
- * /myApp/mountedPage/, then the prefix returned might be "../../".
- * <p>
- * For a particular technology, this might return either an absolute prefix or a relative one.
- *
- * @return Prefix relative to this request required to back up to context root.
- */
- public abstract String getRelativePathPrefixToContextRoot();
-
/**
- * Gets a prefix to make this relative to the Wicket Servlet/Filter.
- * <p>
- * For example, if your context root is http://server.com/myApp/ and the request is for
- * /myApp/mountedPage/, then the prefix returned might be "../".
- * <p>
- * For a particular technology, this might return either an absolute prefix or a relative one.
+ * Returns the URL for this request. URL is relative to Wicket filter path.
*
- * @return Prefix relative to this request required to back up to context root.
- */
- public abstract String getRelativePathPrefixToWicketHandler();
-
-
- /**
- * Sets request parameters. Should only be used when one request is being created as a
- * replacement for another.
- *
- * @param requestParameters
- * @deprecated wicket-ng
- */
- @Deprecated
- public final void setObsoleteRequestParameters(ObsoleteRequestParameters requestParameters)
- {
- this.requestParameters = requestParameters;
- }
-
- /**
- * Gets the request parameters object using the instance of {@link IRequestCodingStrategy} of
- * the provided request cycle processor.
- *
- * @return the request parameters object
- * @deprecated wicket-ng
- */
- @Deprecated
- public final ObsoleteRequestParameters getObsoleteRequestParameters()
- {
- // reused cached parameters
- if (requestParameters != null)
- {
- return requestParameters;
- }
-
- // get the request encoder to decode the request parameters
- IRequestCycleProcessor processor = RequestCycle.get().getProcessor();
- final IRequestCodingStrategy encoder = processor.getRequestCodingStrategy();
- if (encoder == null)
- {
- throw new WicketRuntimeException("request encoder must be not-null (provided by " +
- processor + ")");
- }
-
- // decode the request parameters into a strongly typed parameters
- // object that is to be used by the target resolving
- try
- {
- requestParameters = encoder.decode(this);
- }
- catch (RuntimeException re)
- {
- // do set the parameters as it was parsed.
- // else the error page will also error again (infinite loop)
- requestParameters = new ObsoleteRequestParameters();
- throw re;
- }
-
- if (requestParameters == null)
- {
- throw new WicketRuntimeException("request parameters must be not-null (provided by " +
- encoder + ")");
- }
- return requestParameters;
- }
-
- /**
- * Retrieves the relative URL of this request for local use. This is relative to the context
- * root.
- *
- * @return The relative request URL for local use
+ * @return Url instance
*/
public abstract Url getUrl();
/**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString()
- {
- return "Request[url=" + getUrl() + "]";
- }
-
- /**
- * Returns the query string (part after ?) of this request.
- *
- * @return request query string
- */
- public abstract String getQueryString();
-
- /**
* @return POST request parameters for this request.
*/
public IRequestParameters getPostRequestParameters()
@@ -233,6 +64,13 @@
}
/**
+ * Returns locale for this request.
+ *
+ * @return locale
+ */
+ public abstract Locale getLocale();
+
+ /**
* Returns request with specified URL and same POST parameters as this request.
*
* @param url
@@ -241,8 +79,6 @@
*/
public Request requestWithUrl(final Url url)
{
- final Request delegate = this;
-
return new Request()
{
@Override
@@ -252,58 +88,17 @@
}
@Override
- public IRequestParameters getPostRequestParameters()
- {
- return delegate.getPostRequestParameters();
- }
-
- @Override
public Locale getLocale()
{
- return delegate.getLocale();
+ return Request.this.getLocale();
}
@Override
- public String getParameter(String key)
- {
- return delegate.getParameter(key);
- }
-
- @Override
- public Map<String, String[]> getParameterMap()
- {
- return delegate.getParameterMap();
- }
-
- @Override
- public String[] getParameters(String key)
- {
- return delegate.getParameters(key);
- }
-
- @Override
- public String getPath()
- {
- return delegate.getPath();
- }
-
- @Override
- public String getQueryString()
- {
- return delegate.getQueryString();
- }
-
- @Override
- public String getRelativePathPrefixToContextRoot()
- {
- return delegate.getRelativePathPrefixToContextRoot();
- }
-
- @Override
- public String getRelativePathPrefixToWicketHandler()
+ public IRequestParameters getPostRequestParameters()
{
- return delegate.getRelativePathPrefixToWicketHandler();
+ return Request.this.getPostRequestParameters();
}
};
}
-}
\ No newline at end of file
+
+}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java Mon Jan 4 01:03:29 2010
@@ -23,8 +23,8 @@
import java.util.Map;
import org.apache.wicket.authorization.AuthorizationException;
-import org.apache.wicket.request.ObsoleteRequestParameters;
-import org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget;
+import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.ng.request.component.IRequestableComponent;
import org.apache.wicket.util.lang.Classes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -164,9 +164,9 @@
* @param component
* The component
*/
- public final void invoke(final Page page, final Component component)
+ public final void invoke(final IRequestableComponent component)
{
- if (!component.isEnabled() || !component.isVisibleInHierarchy())
+ if (!component.isEnabledInHierarchy() || !component.isVisibleInHierarchy())
{
// just return so that we have a silent fail and just re-render the
// page
@@ -174,7 +174,6 @@
return;
}
- page.beforeCallComponent(component, this);
try
{
@@ -202,27 +201,49 @@
}
finally
{
- page.afterCallComponent(component, this);
}
}
/**
- * Creates a new request target for this request listener interface
+ * Invokes a given interface on a component's behavior.
*
- * @param page
- * The page
* @param component
* The component
- * @param listener
- * The listener to call
- * @param requestParameters
- * Request parameters
- * @return The request target
+ * @param behavior
*/
- public IRequestTarget newRequestTarget(final Page page, final Component component,
- final RequestListenerInterface listener, final ObsoleteRequestParameters requestParameters)
+ public final void invoke(final IRequestableComponent component, final IBehavior behavior)
{
- return new ListenerInterfaceRequestTarget(page, component, listener, requestParameters);
+ if (!component.canCallListenerInterface())
+ {
+ // just return so that we have a silent fail and just re-render the
+ // page
+ log.info("component not enabled or visible; ignoring call. Component: " + component);
+ return;
+ }
+
+ try
+ {
+ // Invoke the interface method on the component
+ method.invoke(behavior, new Object[] {});
+ }
+ catch (InvocationTargetException e)
+ {
+ if (e.getTargetException() instanceof AbstractRestartResponseException ||
+ e.getTargetException() instanceof AuthorizationException ||
+ e.getTargetException() instanceof WicketRuntimeException)
+ {
+ throw (RuntimeException)e.getTargetException();
+ }
+ throw new WicketRuntimeException("Method " + method.getName() + " of " +
+ method.getDeclaringClass() + " targeted at behavior " + behavior +
+ " on component " + component + " threw an exception", e);
+ }
+ catch (Exception e)
+ {
+ throw new WicketRuntimeException("Method " + method.getName() + " of " +
+ method.getDeclaringClass() + " targeted at behavior " + behavior +
+ " on component " + component + " threw an exception", e);
+ }
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Resource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Resource.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Resource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Resource.java Mon Jan 4 01:03:29 2010
@@ -18,9 +18,10 @@
import java.util.Map;
-import org.apache.wicket.request.target.resource.ResourceStreamRequestTarget;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.target.resource.ResourceStreamRequestHandler;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.time.Time;
import org.apache.wicket.util.value.IValueMap;
import org.apache.wicket.util.value.ValueMap;
import org.slf4j.Logger;
@@ -107,20 +108,21 @@
IResourceStream resourceStream = init();
// Get servlet response to use when responding with resource
- final Response response = cycle.getResponse();
+ final WebResponse response = (WebResponse)cycle.getResponse();
// FIXME WICKET-385 Move HTTP caching features out of org.apache.wicket.Resource
if (isCacheable())
{
- response.setLastModifiedTime(resourceStream.lastModifiedTime());
+ response.setLastModifiedTime(resourceStream.lastModifiedTime().getMilliseconds());
}
else
{
- response.setLastModifiedTime(Time.valueOf(-1));
+ response.setLastModifiedTime(-1);
}
configureResponse(response);
- cycle.setRequestTarget(new ResourceStreamRequestTarget(resourceStream));
+ cycle.scheduleRequestHandlerAfterCurrent(new ResourceStreamRequestHandler(
+ resourceStream));
}
finally
{
@@ -172,21 +174,6 @@
}
/**
- * @return Any query parameters associated with the request for this resource
- */
- protected ValueMap getParameters()
- {
- if (parameters.get() == null)
- {
- return new ValueMap(RequestCycle.get()
- .getRequest()
- .getObsoleteRequestParameters()
- .getParameters());
- }
- return (ValueMap)parameters.get();
- }
-
- /**
* Sets any loaded resource to null, thus forcing a reload on the next request.
*/
protected void invalidate()
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/Response.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Response.java?rev=895520&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Response.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Response.java Mon Jan 4 01:03:29 2010
@@ -0,0 +1,63 @@
+/*
+ * 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;
+
+/**
+ * Abstract base class for different implementations of response writing.
+ * <p>
+ * The implementation may not support calling both {@link #write(byte[])} and
+ * {@link #write(CharSequence)} on the same {@link Response} instance.
+ *
+ * @author Matej Knopp
+ */
+public abstract class Response
+{
+ /**
+ * Writes the {@link CharSequence} to output.
+ *
+ * @param sequence
+ * @throws IllegalStateException
+ * if {@link #write(byte[])} has already been called on this instance
+ */
+ public abstract void write(CharSequence sequence);
+
+ /**
+ * Writes the buffer to output.
+ *
+ * @param array
+ * @throws IllegalStateException
+ * if {@link #write(CharSequence)} has already been called on this instance
+ */
+ public abstract void write(byte[] array);
+
+ /**
+ * Closes the response
+ */
+ public void close()
+ {
+ }
+
+
+ /**
+ * Encodes the specified URL by including the session ID in it, or, if encoding is not needed,
+ * returns the URL unchanged.
+ *
+ * @param url
+ * @return encoded URL
+ */
+ public abstract String encodeURL(CharSequence url);
+}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Session.java Mon Jan 4 01:03:29 2010
@@ -28,14 +28,9 @@
import org.apache.wicket.authorization.IAuthorizationStrategy;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.FeedbackMessages;
-import org.apache.wicket.pageStore.DefaultPageManagerContext;
-import org.apache.wicket.pageStore.DefaultPageStore;
-import org.apache.wicket.pageStore.DiskDataStore;
-import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.ng.ThreadContext;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
import org.apache.wicket.pageStore.IPageManager;
-import org.apache.wicket.pageStore.IPageManagerContext;
-import org.apache.wicket.pageStore.IPageStore;
-import org.apache.wicket.pageStore.PersistentPageManager;
import org.apache.wicket.request.ClientInfo;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.util.lang.Objects;
@@ -120,17 +115,12 @@
/** Name of session attribute under which this session is stored */
public static final String SESSION_ATTRIBUTE_NAME = "session";
- /** Thread-local current session. */
- private static final ThreadLocal<Session> current = new ThreadLocal<Session>();
-
/** a sequence used for whenever something session-specific needs a unique value */
private int sequence = 1;
/** a sequence used for generating page IDs */
private int pageId = 0;
- /** page manager */
- private IPageManager pageManager;
/**
* Checks if the <code>Session</code> threadlocal is set in this thread
@@ -139,106 +129,20 @@
*/
public static boolean exists()
{
- return current.get() != null;
- }
-
- /**
- * Locate the session for the client of this request in the {@link ISessionStore} or create a
- * new one and attach it when none could be located and sets it as the current instance for this
- * thread. Typically, clients never touch this method, but rather use {@link Session#get()},
- * which does the locating implicitly when not yet set as a thread local.
- *
- * @return The session for the client of this request or a new, unbound
- */
- public static final Session findOrCreate()
- {
- RequestCycle requestCycle = RequestCycle.get();
- if (requestCycle == null)
- {
- throw new IllegalStateException(
- "you can only locate or create sessions in the context of a request cycle");
- }
- Response response = requestCycle.getResponse();
- Request request = requestCycle.getRequest();
- return findOrCreate(request, response);
- }
-
- /**
- * @param response
- * @param request
- * @return The Session that is found in the current request or created if not.
- */
- public static Session findOrCreate(Request request, Response response)
- {
- Application application = Application.get();
- ISessionStore sessionStore = application.getSessionStore();
- Session session = sessionStore.lookup(request);
-
- boolean created = false;
-
- if (session == null)
- {
- // Create session using session factory
- session = application.newSession(request, response);
- created = true;
- }
-
- // set thread local
- set(session);
-
- if (created)
- {
- session.getPageManager().newSessionCreated();
- }
-
- return session;
+ return ThreadContext.getSession() != null;
}
- /**
- * Get the session for the calling thread.
- *
- * @return Session for calling thread
- */
public static Session get()
{
- Session session = current.get();
- if (session == null)
+ Session session = ThreadContext.getSession();
+ if (session != null)
{
- session = findOrCreate();
+ return session;
}
- return session;
- }
-
- /**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
- * <p>
- * Sets session for calling thread. Also triggers {@link #attach()} being called.
- *
- * @param session
- * The session
- */
- public static void set(final Session session)
- {
- if (session == null)
+ else
{
- throw new IllegalArgumentException("Argument session can not be null");
+ return Application.get().fetchCreateAndSetSession(RequestCycle.get());
}
-
- current.set(session);
-
- // execute any attach logic now
- session.attach();
- }
-
- /**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
- * <p>
- * Clears the session for calling thread.
- *
- */
- public static void unset()
- {
- current.set(null);
}
/**
@@ -557,12 +461,6 @@
sessionStore.invalidate(RequestCycle.get().getRequest());
sessionStore = null;
}
-
- if (pageManager != null)
- {
- pageManager.destroy();
- pageManager = null;
- }
}
/**
@@ -934,38 +832,6 @@
*/
public final IPageManager getPageManager()
{
- if (pageManager == null)
- {
- pageManager = newPageManager(new DefaultPageManagerContext());
- }
- return pageManager;
- }
-
- /**
- * Create a new page manager on each call. By default a PeristentPageManager with a new
- * DiskDataStore and new DefaultPageStore.
- *
- * @see #getPageManager()
- *
- * @param context
- * the page manager context
- * @return a new page manager
- */
- protected IPageManager newPageManager(final IPageManagerContext context)
- {
- String name = Application.get().getName();
- int cacheSize = 40;
- int fileChannelPoolCapacity = 50;
- IDataStore dataStore = new DiskDataStore(name, 1000000, fileChannelPoolCapacity);
- IPageStore pageStore = new DefaultPageStore(name, dataStore, cacheSize);
- return new PersistentPageManager(name, pageStore, context);
- }
-
- /**
- * @return the page manager context
- */
- protected final IPageManagerContext getPageManagerContext()
- {
- return getPageManager().getContext();
+ return getApplication().getPageManager();
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java Mon Jan 4 01:03:29 2010
@@ -17,8 +17,8 @@
package org.apache.wicket.ajax;
import org.apache.wicket.Page;
-import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.html.IHeaderResponse;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.util.time.Duration;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java Mon Jan 4 01:03:29 2010
@@ -20,12 +20,12 @@
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.RequestContext;
-import org.apache.wicket.RequestCycle;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.behavior.AbstractAjaxBehavior;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.WicketEventReference;
import org.apache.wicket.markup.html.resources.JavascriptResourceReference;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.settings.IDebugSettings;
import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -293,7 +293,7 @@
{
WebApplication app = (WebApplication)getComponent().getApplication();
AjaxRequestTarget target = app.newAjaxRequestTarget(getComponent().getPage());
- RequestCycle.get().setRequestTarget(target);
+ RequestCycle.get().scheduleRequestHandlerAfterCurrent(target);
respond(target);
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java Mon Jan 4 01:03:29 2010
@@ -16,7 +16,6 @@
*/
package org.apache.wicket.ajax;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -31,10 +30,9 @@
import org.apache.wicket.Application;
import org.apache.wicket.Component;
+import org.apache.wicket.IRequestHandler;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
-import org.apache.wicket.RequestCycle;
-import org.apache.wicket.ResourceReference;
import org.apache.wicket.Response;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.html.IHeaderResponse;
@@ -42,9 +40,15 @@
import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
import org.apache.wicket.markup.repeater.AbstractRepeater;
-import org.apache.wicket.protocol.http.WebRequestCycle;
+import org.apache.wicket.ng.request.component.IRequestablePage;
+import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.ng.request.handler.DefaultPageProvider;
+import org.apache.wicket.ng.request.handler.IPageRequestHandler;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.ng.resource.ResourceReference;
+import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WebResponse;
-import org.apache.wicket.request.target.component.IPageRequestTarget;
import org.apache.wicket.util.string.AppendingStringBuffer;
import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
@@ -78,7 +82,7 @@
* @author Igor Vaynberg (ivaynberg)
* @author Eelco Hillenius
*/
-public class AjaxRequestTarget implements IPageRequestTarget
+public class AjaxRequestTarget implements IPageRequestHandler
{
/**
* An {@link AjaxRequestTarget} listener that can be used to respond to various target-related
@@ -137,7 +141,7 @@
*
* @author Igor Vaynberg (ivaynberg)
*/
- private final class AjaxResponse extends WebResponse
+ private final class AjaxResponse extends Response
{
private final AppendingStringBuffer buffer = new AppendingStringBuffer(256);
@@ -152,16 +156,14 @@
*/
public AjaxResponse(Response originalResponse)
{
- super(((WebResponse)originalResponse).getHttpServletResponse());
this.originalResponse = originalResponse;
- setAjax(true);
}
/**
* @see org.apache.wicket.Response#encodeURL(CharSequence)
*/
@Override
- public CharSequence encodeURL(CharSequence url)
+ public String encodeURL(CharSequence url)
{
return originalResponse.encodeURL(url);
}
@@ -175,17 +177,6 @@
}
/**
- * NOTE: this method is not supported
- *
- * @see org.apache.wicket.Response#getOutputStream()
- */
- @Override
- public OutputStream getOutputStream()
- {
- throw new UnsupportedOperationException("Cannot get output stream on StringResponse");
- }
-
- /**
* @return true if any escaping has been performed, false otherwise
*/
public boolean isContentsEncoded()
@@ -194,17 +185,6 @@
}
/**
- * Resets the response to a clean state so it can be reused to save on garbage.
- */
- @Override
- public void reset()
- {
- buffer.clear();
- escaped = false;
-
- }
-
- /**
* @see org.apache.wicket.Response#write(CharSequence)
*/
@Override
@@ -222,6 +202,21 @@
buffer.append(cs);
}
}
+
+ /**
+ * Resets the response to a clean state so it can be reused to save on garbage.
+ */
+ public void reset()
+ {
+ buffer.clear();
+ escaped = false;
+ }
+
+ @Override
+ public void write(byte[] array)
+ {
+ throw new UnsupportedOperationException("Cannot write binary data.");
+ }
}
private static final Logger LOG = LoggerFactory.getLogger(AjaxRequestTarget.class);
@@ -439,7 +434,7 @@
}
/**
- * @see org.apache.wicket.IRequestTarget#detach(org.apache.wicket.RequestCycle)
+ * @see org.apache.wicket.IRequestHandler#detach(org.apache.wicket.RequestCycle)
*/
public void detach(final RequestCycle requestCycle)
{
@@ -529,7 +524,7 @@
}
/**
- * @see org.apache.wicket.IRequestTarget#respond(org.apache.wicket.RequestCycle)
+ * @see org.apache.wicket.IRequestHandler#respond(org.apache.wicket.RequestCycle)
*/
public final void respond(final RequestCycle requestCycle)
{
@@ -539,8 +534,9 @@
{
// the page itself has been added to the request target, we simply issue a redirect back
// to the page
- final String url = requestCycle.urlFor(page).toString();
- response.redirect(url);
+ IRequestHandler handler = new RenderPageRequestHandler(new DefaultPageProvider(page));
+ final String url = requestCycle.renderUrlFor(handler).toString();
+ response.sendRedirect(url);
return;
}
@@ -555,7 +551,6 @@
final String encoding = app.getRequestCycleSettings().getResponseRequestEncoding();
// Set content type based on markup type for page
- response.setCharacterEncoding(encoding);
response.setContentType("text/xml; charset=" + encoding);
// Make sure it is not cached by a client
@@ -1162,9 +1157,9 @@
final RequestCycle requestCycle = RequestCycle.get();
if (requestCycle != null)
{
- if (requestCycle.getRequestTarget() instanceof AjaxRequestTarget)
+ if (requestCycle.getActiveRequestHandler() instanceof AjaxRequestTarget)
{
- return (AjaxRequestTarget)requestCycle.getRequestTarget();
+ return (AjaxRequestTarget)requestCycle.getActiveRequestHandler();
}
}
return null;
@@ -1177,9 +1172,18 @@
*/
public String getLastFocusedElementId()
{
- String id = ((WebRequestCycle)RequestCycle.get()).getWebRequest()
- .getHttpServletRequest()
- .getHeader("Wicket-FocusedElementId");
+ WebRequest request = (WebRequest)RequestCycle.get().getRequest();
+ String id = request.getHeader("Wicket-FocusedElementId");
return Strings.isEmpty(id) ? null : id;
}
+
+ public Class<? extends IRequestablePage> getPageClass()
+ {
+ return page.getPageClass();
+ }
+
+ public PageParameters getPageParameters()
+ {
+ return page.getPageParameters();
+ }
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java Mon Jan 4 01:03:29 2010
@@ -113,7 +113,7 @@
@Override
public final void onSubmit()
{
- if (!(getRequestCycle().getRequestTarget() instanceof AjaxRequestTarget))
+ if (AjaxRequestTarget.get() == null)
{
onSubmit(null, getForm());
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java Mon Jan 4 01:03:29 2010
@@ -16,9 +16,10 @@
*/
package org.apache.wicket.behavior;
-import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.IHeaderResponse;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
/**
* Behavior that delegates header contribution to a number of other contributors. It checks the
@@ -58,9 +59,6 @@
return location;
}
- return RequestCycle.get()
- .getProcessor()
- .getRequestCodingStrategy()
- .rewriteStaticRelativeUrl(location);
+ return RequestCycle.get().getUrlRenderer().renderUrl(Url.parse(location));
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java Mon Jan 4 01:03:29 2010
@@ -16,13 +16,8 @@
*/
package org.apache.wicket.behavior;
-import org.apache.wicket.Component;
import org.apache.wicket.IRequestListener;
-import org.apache.wicket.IRequestTarget;
-import org.apache.wicket.Page;
import org.apache.wicket.RequestListenerInterface;
-import org.apache.wicket.request.ObsoleteRequestParameters;
-import org.apache.wicket.request.target.component.listener.BehaviorRequestTarget;
/**
* Listens for requests to behaviors. When {@link org.apache.wicket.behavior.IBehavior}s are
@@ -36,21 +31,7 @@
{
/** Behavior listener interface */
public static final RequestListenerInterface INTERFACE = new RequestListenerInterface(
- IBehaviorListener.class)
- {
- /**
- *
- * @see org.apache.wicket.RequestListenerInterface#newRequestTarget(org.apache.wicket.Page,
- * org.apache.wicket.Component, org.apache.wicket.RequestListenerInterface,
- * org.apache.wicket.request.ObsoleteRequestParameters)
- */
- @Override
- public IRequestTarget newRequestTarget(Page page, Component component,
- RequestListenerInterface listener, ObsoleteRequestParameters requestParameters)
- {
- return new BehaviorRequestTarget(page, component, listener, requestParameters);
- }
- };
+ IBehaviorListener.class);
/**
* Called when a request to a behavior is received.
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/StringHeaderContributor.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/StringHeaderContributor.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/StringHeaderContributor.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/StringHeaderContributor.java Mon Jan 4 01:03:29 2010
@@ -75,7 +75,8 @@
Object object = contribution.getObject();
if (object != null)
{
- response.getResponse().println(object.toString());
+ response.getResponse().write(object.toString());
+ response.getResponse().write("\n");
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/CompressedPackageResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/CompressedPackageResource.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/CompressedPackageResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/CompressedPackageResource.java Mon Jan 4 01:03:29 2010
@@ -25,8 +25,8 @@
import java.util.zip.GZIPOutputStream;
import org.apache.wicket.Application;
-import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.html.resources.CompressedResourceReference;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WebResponse;
import org.apache.wicket.util.io.Streams;
@@ -274,7 +274,7 @@
return false;
}
WebRequest request = (WebRequest)RequestCycle.get().getRequest();
- String s = request.getHttpServletRequest().getHeader("Accept-Encoding");
+ String s = request.getHeader("Accept-Encoding");
if (s == null)
{
return false;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java Mon Jan 4 01:03:29 2010
@@ -16,8 +16,8 @@
*/
package org.apache.wicket.markup.html;
-import org.apache.wicket.ResourceReference;
import org.apache.wicket.Response;
+import org.apache.wicket.ng.resource.ResourceReference;
/**
* Interface that is used to render header elements (usually javascript and CSS references).
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/PackageResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/PackageResource.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/PackageResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/PackageResource.java Mon Jan 4 01:03:29 2010
@@ -20,13 +20,13 @@
import javax.servlet.http.HttpServletResponse;
-import org.apache.wicket.AbortException;
import org.apache.wicket.Application;
-import org.apache.wicket.RequestCycle;
import org.apache.wicket.SharedResources;
import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.protocol.http.WebRequestCycle;
-import org.apache.wicket.protocol.http.servlet.AbortWithWebErrorCodeException;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.protocol.http.request.WebErrorCodeResponseHandler;
+import org.apache.wicket.request.target.basic.AbortRequestHandler;
import org.apache.wicket.settings.IResourceSettings;
import org.apache.wicket.util.lang.Classes;
import org.apache.wicket.util.lang.Packages;
@@ -390,13 +390,14 @@
style + ", variation = " + variation + ", locale = " + locale + "]";
log.warn(msg);
- if (RequestCycle.get() instanceof WebRequestCycle)
+ if (RequestCycle.get().getResponse() instanceof WebResponse)
{
- throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, msg);
+ RequestCycle.get().replaceAllRequestHandlers(
+ new WebErrorCodeResponseHandler(HttpServletResponse.SC_NOT_FOUND, msg));
}
else
{
- throw new AbortException();
+ RequestCycle.get().replaceAllRequestHandlers(new AbortRequestHandler());
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java Mon Jan 4 01:03:29 2010
@@ -18,8 +18,8 @@
import org.apache.wicket.Application;
import org.apache.wicket.Component;
+import org.apache.wicket.IRequestHandler;
import org.apache.wicket.Page;
-import org.apache.wicket.PageParameters;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.Response;
import org.apache.wicket.behavior.AbstractBehavior;
@@ -28,10 +28,9 @@
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.protocol.http.WebRequestCycle;
+import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.handler.IPageRequestHandler;
import org.apache.wicket.protocol.http.WebResponse;
-import org.apache.wicket.protocol.http.request.urlcompressing.UrlCompressingWebRequestProcessor;
-import org.apache.wicket.protocol.http.request.urlcompressing.UrlCompressor;
import org.apache.wicket.response.StringResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,12 +101,6 @@
"cookies.js");
/**
- * The url compressor that will compress the urls by collapsing the component path and listener
- * interface
- */
- private UrlCompressor compressor;
-
- /**
* Constructor. Having this constructor public means that your page is 'bookmarkable' and hence
* can be called/ created from anywhere.
*/
@@ -161,33 +154,6 @@
}
/**
- * This method is called when the compressing coding and response strategies are configured in
- * your Application object like this:
- *
- * <pre>
- * protected IRequestCycleProcessor newRequestCycleProcessor()
- * {
- * return new UrlCompressingWebRequestProcessor();
- * }
- * </pre>
- *
- * @return The URLCompressor for this webpage.
- *
- * @since 1.2
- *
- * @see UrlCompressingWebRequestProcessor
- * @see UrlCompressor
- */
- public final UrlCompressor getUrlCompressor()
- {
- if (compressor == null)
- {
- compressor = new UrlCompressor();
- }
- return compressor;
- }
-
- /**
* @see org.apache.wicket.markup.html.INewBrowserWindowListener#onNewBrowserWindow()
*/
public void onNewBrowserWindow()
@@ -215,9 +181,9 @@
{
super.configureResponse();
- if (getWebRequestCycle().getResponse() instanceof WebResponse)
+ if (getRequestCycle().getResponse() instanceof WebResponse)
{
- final WebResponse response = getWebRequestCycle().getWebResponse();
+ final WebResponse response = (WebResponse)getRequestCycle().getResponse();
setHeaders(response);
}
}
@@ -244,26 +210,6 @@
}
/**
- * @return The WebRequestCycle for this WebPage.
- */
- protected final WebRequestCycle getWebRequestCycle()
- {
- return (WebRequestCycle)getRequestCycle();
- }
-
- /**
- * Creates and returns a bookmarkable link to this application's home page.
- *
- * @param id
- * Name of link
- * @return Link to home page for this application
- */
- protected final BookmarkablePageLink<?> homePageLink(final String id)
- {
- return new BookmarkablePageLink<Void>(id, getApplication().getHomePage());
- }
-
- /**
*
* @see org.apache.wicket.Component#onAfterRender()
*/
@@ -277,9 +223,14 @@
{
// Ignore if an exception and a redirect happened in between (e.g.
// RestartResponseAtInterceptPageException)
- if (getRequestCycle().getResponsePage() == this)
+ IRequestHandler activeHandler = getRequestCycle().getActiveRequestHandler();
+ if (activeHandler instanceof IPageRequestHandler)
{
- validateHeaders();
+ IPageRequestHandler h = (IPageRequestHandler)activeHandler;
+ if (h.getPage() == this)
+ {
+ validateHeaders();
+ }
}
}
}
@@ -358,4 +309,18 @@
}
}
}
+
+ /**
+ * Creates and returns a bookmarkable link to this application's home page.
+ *
+ * @param id
+ * Name of link
+ * @return Link to home page for this application
+ */
+ @SuppressWarnings("unchecked")
+ protected final BookmarkablePageLink<?> homePageLink(final String id)
+ {
+ return new BookmarkablePageLink<Void>(id, (Class)getApplication().getHomePage());
+ }
+
}