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 2009/04/11 15:43:14 UTC

svn commit: r764201 - in /wicket/sandbox/knopp/experimental: wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/ wicket-ng/src/main/java/org/apache/wicket/ wicket-ng/src/main/java/org/apache/wicket/protocol/http/ wicket-ng/src/main/java/org/apac...

Author: knopp
Date: Sat Apr 11 13:43:12 2009
New Revision: 764201

URL: http://svn.apache.org/viewvc?rev=764201&view=rev
Log:
clean up

Modified:
    wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
    wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.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/WebApplication.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/request/encoder/AbstractEncoder.java

Modified: wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java?rev=764201&r1=764200&r2=764201&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java Sat Apr 11 13:43:12 2009
@@ -20,11 +20,12 @@
 		mount(new MountedEncoder("first-test-page", TestPage1.class));
 		mount(new MountedEncoder("third-test-page", TestPage3.class));
 		
+		// load the interface
 		RequestListenerInterface i = ILinkListener.INTERFACE;
 	}
 	
 	@Override
-	public Class<? extends IPage> getHomePageClass()
+	public Class<? extends IPage> getHomePage()
 	{
 		return TestPage1.class;
 	}

Modified: wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java?rev=764201&r1=764200&r2=764201&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java Sat Apr 11 13:43:12 2009
@@ -13,10 +13,16 @@
 import org.apache.wicket.page.persistent.PageStore;
 import org.apache.wicket.page.persistent.PersistentPageManager;
 import org.apache.wicket.page.persistent.disk.DiskDataStore;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.RequestHandlerEncoder;
+import org.apache.wicket.request.RequestHandlerEncoderRegistry;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.encoder.EncoderContext;
 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.resource.ResourceReferenceRegistry;
 import org.apache.wicket.session.HttpSessionStore;
 import org.apache.wicket.session.SessionStore;
 import org.apache.wicket.session.SessionStore.UnboundListener;
@@ -24,6 +30,11 @@
 import org.apache.wicket.settings.RequestCycleSettings;
 import org.apache.wicket.util.lang.Check;
 
+/**
+ * Generic application that is environment (servlet, portlet, test) agnostic.
+ *  
+ * @author Matej Knopp
+ */
 public abstract class Application implements UnboundListener
 {
 	private String name;
@@ -32,20 +43,44 @@
 	{
 	}
 
-	public void internalInit()
+	protected void internalInit()
 	{
 		this.sessionStore = newSessionStore();
 		this.sessionStore.registerUnboundListener(this);
 		this.pageManager = newPageManager();
 		this.pageManager.setContext(getPageManagerContext());
+		this.requestHandlerEncoderRegistry = newRequestHandlerEncoderRegistry();
+		this.resourceReferenceRegistry = newResourceReferenceRegistry();
+		this.pageFactory = newPageFactory();
+		registerDefaultEncoders();
+	}	
+	
+	protected void init()
+	{
+
 	}
 
-	public void init()
+	/**
+	 * Initialize the application
+	 */
+	public final void initApplication()
 	{
-
+		if (name == null)
+		{
+			throw new IllegalStateException("setName must be called before initApplication");
+		}
+		internalInit();
+		init();
 	}
 
-	public void setName(String name)
+	/**
+	 * 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)
 	{
 		Check.argumentNotEmpty(name, "name");
 
@@ -54,27 +89,60 @@
 			throw new IllegalStateException("Application name can only be set once.");
 		}
 
+		if (applications.get(name) != null)
+		{
+			throw new IllegalStateException("Application with name '" + name + "' already exists.'");
+		}
+
 		this.name = name;
 		applications.put(name, this);
 	}
 
+	/**
+	 * Returns the name unique for this application.
+	 * 
+	 * @return
+	 */
 	public String getName()
 	{
 		return name;
 	}
 
+	/**
+	 * Destroys the application.
+	 */
 	public void destroy()
 	{
-		pageManager.destroy();
-		sessionStore.destroy();
-		applications.remove(name);
+		try
+		{
+			pageManager.destroy();
+			sessionStore.destroy();
+		}
+		finally
+		{
+			applications.remove(name);
+		}
 	}
 
+	/**
+	 * Returns application with given name or <code>null</code> if such application is not
+	 * registered.
+	 * 
+	 * @param name
+	 * @return
+	 */
 	public static Application get(String name)
 	{
 		return applications.get(name);
 	}
 
+	/**
+	 * Returns application attached to current thread.
+	 * 
+	 * @return
+	 * @throws WicketRuntimeException
+	 *             no application is attached to current thread
+	 */
 	public static Application get()
 	{
 		Application application = ThreadContext.getApplication();
@@ -86,16 +154,35 @@
 		return application;
 	}
 
+	/**
+	 * Returns whether there is application attached to current thread.
+	 * 
+	 * @return
+	 */
 	public static boolean exists()
 	{
 		return ThreadContext.getApplication() != null;
 	}
 
+	/**
+	 * Assign this application to current thread. This method should never be called by framework
+	 * clients.
+	 */
 	public void set()
 	{
 		ThreadContext.setApplication(this);
 	}
 
+	private static Map<String, Application> applications = new ConcurrentHashMap<String, Application>();
+
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Settings
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
 	// TODO - Do properly
 	private RequestCycleSettings settings = new RequestCycleSettings()
 	{
@@ -149,9 +236,52 @@
 		return applicationSettings;
 	}
 
-	// // Request cycle
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Request Cycle
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	protected RequestCycleContext newRequestCycleContext(Request request, Response response)
+	{
+		return new RequestCycleContext()
+		{
+			public RequestHandler decodeRequestHandler(Request request)
+			{
+				return getRequestHandlerEncoderRegistry().decode(request);
+			}
+
+			public Url encodeRequestHandler(RequestHandler handler)
+			{
+				return getRequestHandlerEncoderRegistry().encode(handler);
+			}
+
+			public RequestHandler getRequestHandlerForException(Exception e)
+			{
+				return Application.this.getRequestHandlerForException(e);
+			}
+		};
+	}
+
+	protected RequestHandler getRequestHandlerForException(Exception e)
+	{
+		// TODO: Implement
+		return null;
+	}
 
-	protected abstract RequestCycle newRequestCycle(Request request, Response response);
+	/**
+	 * Override this method to create custom Request Cycle instance.
+	 * 
+	 * @param request
+	 * @param response
+	 * @return
+	 */
+	protected RequestCycle newRequestCycle(Request request, Response response)
+	{
+		return new RequestCycle(request, response, newRequestCycleContext(request, response));
+	}
 
 	public final RequestCycle createRequestCycle(Request request, Response response)
 	{
@@ -166,9 +296,13 @@
 		return requestCycle;
 	}
 
-	private static Map<String, Application> applications = new ConcurrentHashMap<String, Application>();
-
-	// // Session Store
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Session Store
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	protected SessionStore newSessionStore()
 	{
@@ -187,7 +321,13 @@
 		getPageManager().sessionExpired(sessionId);
 	}
 
-	// // Session
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Session
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	protected Session newSession(RequestCycle requestCycle)
 	{
@@ -212,11 +352,17 @@
 		return session;
 	}
 
-	// // PageManager
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Page Manager
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	protected PageManager newPageManager()
 	{
-		int cacheSize = 0;
+		int cacheSize = 40;
 		int fileChannelPoolCapacity = 50;
 		DataStore dataStore = new DiskDataStore(getName(), 1000000, fileChannelPoolCapacity);
 		PageStore pageStore = new DefaultPageStore(getName(), dataStore, cacheSize);
@@ -225,6 +371,9 @@
 
 	private PageManager pageManager;
 
+	/**
+	 * Context for PageManager to interact with rest of Wicket
+	 */
 	private PageManagerContext pageManagerContext = new PageManagerContext()
 	{
 		public void bind()
@@ -273,6 +422,11 @@
 		}
 	};
 
+	/**
+	 * Returns the {@link PageManager} instance.
+	 * 
+	 * @return {@link PageManager} instance.
+	 */
 	public PageManager getPageManager()
 	{
 		return pageManager;
@@ -283,9 +437,176 @@
 		return pageManagerContext;
 	}
 
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//
 	// Page Rendering
 	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	/**
+	 * Returns the {@link RenderPageRequestHandlerDelegate} responsible for rendering the page.
+	 */
 	public abstract RenderPageRequestHandlerDelegate getRenderPageRequestHandlerDelegate(
 			RenderPageRequestHandler renderPageRequestHandler);
+
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//
+	// Request Handler encoding
+	//
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	/**
+	 * Application subclasses must specify a home page class by implementing this abstract method.
+	 * 
+	 * @return Home page class for this application
+	 */
+	public abstract Class<? extends IPage> getHomePage();
+
+	private RequestHandlerEncoderRegistry requestHandlerEncoderRegistry;
+
+	/**
+	 * Override to create custom {@link RequestHandlerEncoderRegistry}.
+	 * 
+	 * @return new {@link RequestHandlerEncoderRegistry} instance
+	 */
+	protected RequestHandlerEncoderRegistry newRequestHandlerEncoderRegistry()
+	{
+		return new RequestHandlerEncoderRegistry();
+	};
+
+	/**
+	 * returns the {@link RequestHandlerEncoderRegistry} for this application.
+	 * 
+	 * @return
+	 */
+	public final RequestHandlerEncoderRegistry getRequestHandlerEncoderRegistry()
+	{
+		return requestHandlerEncoderRegistry;
+	}
+
+	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 PageFactory pageFactory;
+
+	/**
+	 * Override to create custom {@link PageFactory}
+	 * 
+	 * @return new {@link PageFactory} instance.
+	 */
+	protected PageFactory newPageFactory()
+	{
+		return new DefaultPageFactory();
+	}
+
+	/**
+	 * Returns {@link PageFactory} for this application.
+	 * 
+	 * @return
+	 */
+	public final PageFactory getPageFactory()
+	{
+		return pageFactory;
+	}
+
+	private final EncoderContext encoderContext = new EncoderContext()
+	{
+		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 IPage newPageInstance(Class<? extends IPage> pageClass, PageParameters pageParameters)
+		{
+			if (pageParameters == null)
+			{
+				return getPageFactory().newPage(pageClass);
+			}
+			else
+			{
+				return getPageFactory().newPage(pageClass, pageParameters);
+			}
+		}
+
+		public IPage getPageInstance(int pageId)
+		{
+			return Page.get(pageId);
+		}
+
+		public Class<? extends IPage> getHomePageClass()
+		{
+			return Application.this.getHomePage();
+		}
+	};
+
+	public final EncoderContext getEncoderContext()
+	{
+		return encoderContext;
+	}
+	
+	public void registerEncoder(RequestHandlerEncoder encoder)
+	{
+		getRequestHandlerEncoderRegistry().register(encoder);
+	}
+	
+	/**
+	 * Register the default encoders - necessary for the application to work.
+	 */
+	protected void registerDefaultEncoders()
+	{
+		
+	}
 }

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=764201&r1=764200&r2=764201&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 13:43:12 2009
@@ -19,7 +19,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.RequestHandler;
 import org.apache.wicket.request.RequestHandlerStack;
 import org.apache.wicket.request.Url;
@@ -367,7 +366,7 @@
 
 	public void setResponsePage(Class<? extends IPage> pageClass, PageParameters parameters)
 	{
-		PageSource source = WebApplication.get().getEncoderContext();
+		PageSource source = Application.get().getEncoderContext();
 		PageProvider provider = new PageProvider(source, pageClass);
 		replaceCurrentRequestHandler(new RenderPageRequestHandler(provider,
 				RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));

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=764201&r1=764200&r2=764201&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 13:43:12 2009
@@ -66,4 +66,16 @@
 	{
 		threadLocal.remove();
 	}
+	
+	public static ThreadContext getAndClean()
+	{
+		ThreadContext value = threadLocal.get();
+		threadLocal.remove();
+		return value;
+	}
+	
+	public static void set(ThreadContext threadContext)
+	{
+		threadLocal.set(threadContext);	
+	}
 }

Modified: wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=764201&r1=764200&r2=764201&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java Sat Apr 11 13:43:12 2009
@@ -22,32 +22,22 @@
 import javax.servlet.ServletContext;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.DefaultPageFactory;
-import org.apache.wicket.IPage;
-import org.apache.wicket.Page;
-import org.apache.wicket.PageFactory;
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RequestCycle;
-import org.apache.wicket.RequestCycleContext;
-import org.apache.wicket.RequestListenerInterface;
-import org.apache.wicket.request.RequestHandler;
 import org.apache.wicket.request.RequestHandlerEncoder;
-import org.apache.wicket.request.RequestHandlerEncoderRegistry;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.encoder.BookmarkableEncoder;
 import org.apache.wicket.request.encoder.BufferedResponseEncoder;
-import org.apache.wicket.request.encoder.EncoderContext;
 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.handler.impl.render.WebRenderPageRequestHandlerDelegate;
-import org.apache.wicket.request.request.Request;
 import org.apache.wicket.request.response.BufferedWebResponse;
-import org.apache.wicket.request.response.Response;
-import org.apache.wicket.resource.ResourceReferenceRegistry;
 
-// this class is really a (temporary) mess
+/**
+ * 
+ * @author Matej Knopp
+ *
+ */
 public abstract class WebApplication extends Application
 {
 
@@ -57,170 +47,19 @@
 	}
 
 	@Override
-	public void internalInit()
+	protected void registerDefaultEncoders()
 	{
-		super.internalInit();
-		
-		mount(new PageInstanceEncoder());
-		mount(new BookmarkableEncoder());
-		mount(new ResourceReferenceEncoder());
-		mount(new BufferedResponseEncoder());
-	}
-	
-	protected RequestCycleContext newRequestCycleContext()
-	{
-		RequestCycleContext context = new RequestCycleContext()
-		{
-			public RequestHandler decodeRequestHandler(final Request request)
-			{
-				String lang = null;
-				Url url = request.getUrl();
-				if (!url.getSegments().isEmpty())
-				{
-					lang = url.getSegments().remove(0);
-				}				
-				return getRequestHandlerEncoderRegistry().decode(request.requestWithUrl(url));
-			}
-
-			public Url encodeRequestHandler(RequestHandler handler)
-			{
-				Url url = getRequestHandlerEncoderRegistry().encode(handler);
-				url.getSegments().add(0, "en");
-				return url;
-			}
-
-			public RequestHandler getRequestHandlerForException(Exception e)
-			{
-				return WebApplication.this.getRequestHandlerForException(e);
-			}
-		};
-		return context;
-	};
-
-	protected RequestHandler getRequestHandlerForException(Exception e)
-	{
-		return null;
-	};
-
-	protected RequestCycle newRequestCycle(Request request, Response response)
-	{
-		RequestCycleContext context = newRequestCycleContext();
-		return new RequestCycle(request, response, context);
-	};
-	
-	private RequestHandlerEncoderRegistry requestHandlerEncoderRegistry;
-
-	public RequestHandlerEncoderRegistry getRequestHandlerEncoderRegistry()
-	{
-		if (requestHandlerEncoderRegistry == null)
-		{
-			requestHandlerEncoderRegistry = newRequestHandlerEncoderRegistry();
-		}
-		return requestHandlerEncoderRegistry;
-	};
-
-	protected RequestHandlerEncoderRegistry newRequestHandlerEncoderRegistry()
-	{
-		return new RequestHandlerEncoderRegistry();
-	};
-
-	public static WebApplication get()
-	{
-		return (WebApplication) Application.get();
-	}
-
-	private EncoderContext encoderContext = new EncoderContext()
-	{
-
-		public String getBookmarkableIdentifier()
-		{
-			return "bookmarkable";
-		}
-
-		public String getNamespace()
-		{
-			return "wicket";
-		}
-
-		public String getPageIdentifier()
-		{
-			return "page";
-		}
-
-		public String getResourceIdentifier()
-		{
-			return "resource";
-		}
-
-		public ResourceReferenceRegistry getResourceReferenceRegistry()
-		{
-			return WebApplication.this.getResourceReferenceRegistry();
-		}
-
-		public RequestListenerInterface requestListenerInterfaceFromString(String interfaceName)
-		{
-			return RequestListenerInterface.forName(interfaceName);
-		}
-
-		public String requestListenerInterfaceToString(RequestListenerInterface listenerInterface)
-		{
-			return listenerInterface.getName();
-		}
-
-		public IPage newPageInstance(Class<? extends IPage> pageClass, PageParameters pageParameters)
-		{
-			if (pageParameters == null)
-			{
-				return getPageFactory().newPage(pageClass);
-			}
-			else
-			{
-				return getPageFactory().newPage(pageClass, pageParameters);
-			}
-		}
-
-		public IPage getPageInstance(int pageId)
-		{
-			return Page.get(pageId);
-		}
-
-		public Class<? extends IPage> getHomePageClass()
-		{
-			return WebApplication.this.getHomePageClass();
-		}
-	};
-
-	public EncoderContext getEncoderContext()
-	{
-		return encoderContext;
-	}
-
-	private ResourceReferenceRegistry resourceReferenceRegistry;
-
-	public ResourceReferenceRegistry getResourceReferenceRegistry()
-	{
-		if (resourceReferenceRegistry == null)
-		{
-			resourceReferenceRegistry = new ResourceReferenceRegistry();
-		}
-		return resourceReferenceRegistry;
-	}
-
-	private PageFactory pageFactory = new DefaultPageFactory();
+		registerEncoder(new PageInstanceEncoder());
+		registerEncoder(new BookmarkableEncoder());
+		registerEncoder(new ResourceReferenceEncoder());
+		registerEncoder(new BufferedResponseEncoder());
+	}	
 	
-	
-	public PageFactory getPageFactory()
-	{
-		return pageFactory;
-	}
-
 	public void mount(RequestHandlerEncoder encoder)
 	{
-		getRequestHandlerEncoderRegistry().register(encoder);
+		registerEncoder(encoder);
 	}
 
-	public abstract Class<? extends IPage> getHomePageClass();
-
 	// TODO: Do this properly
 	private Map<String, BufferedWebResponse> storedResponses = new ConcurrentHashMap<String, BufferedWebResponse>();
 
@@ -272,4 +111,9 @@
 	{
 		return new WebRenderPageRequestHandlerDelegate(renderPageRequestHandler);
 	}
+	
+	public static WebApplication get()
+	{
+		return (WebApplication) Application.get();
+	}
 }

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=764201&r1=764200&r2=764201&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 13:43:12 2009
@@ -225,8 +225,7 @@
 		webApplication.set();
 		try
 		{
-			webApplication.internalInit();
-			webApplication.init();
+			webApplication.initApplication();
 		} 
 		finally
 		{

Modified: wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java?rev=764201&r1=764200&r2=764201&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java Sat Apr 11 13:43:12 2009
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.request.encoder;
 
+import org.apache.wicket.Application;
 import org.apache.wicket.IPage;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.RequestListenerInterface;
-import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.RequestHandlerEncoder;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.Url.QueryParameter;
@@ -39,7 +39,7 @@
 {
 	protected EncoderContext getContext()
 	{
-		return WebApplication.get().getEncoderContext();
+		return Application.get().getEncoderContext();
 	}
 
 	/**