You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/03/06 09:47:58 UTC

svn commit: r919714 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/ main/java/org/apache/wicket/ng/request/ main/java/org/apache/wicket/ng/request/mapper/ main/java/org/apache/wicket/protocol/http/ test/java/org/apache/wicket/protocol/http/...

Author: ivaynberg
Date: Sat Mar  6 08:47:58 2010
New Revision: 919714

URL: http://svn.apache.org/viewvc?rev=919714&view=rev
Log:
cleaned up compound mappers. deprecated convenience mount methods in application; they no longer make sense since request mappers can be chained in front of each other potentially providing multiple mounting points in the url scheme so the application can no longer know where to mount the page. this change does require the users to know about MountedMapper directly but i dont think it is a big deal

Added:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/CompoundRequestMapper.java
      - copied, changed from r919712, wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java
Removed:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java
Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/ICompoundRequestMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategyTest.java

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=919714&r1=919713&r2=919714&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 Sat Mar  6 08:47:58 2010
@@ -50,7 +50,7 @@
 import org.apache.wicket.markup.resolver.WicketMessageResolver;
 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.IRequestMapper;
 import org.apache.wicket.ng.request.component.IRequestablePage;
 import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
@@ -171,7 +171,7 @@
 	private List<IHeaderContributor> renderHeadListeners;
 
 	/** root mapper */
-	private ICompoundRequestMapper rootRequestMapper;
+	private IRequestMapper rootRequestMapper;
 
 	/** list of {@link IComponentInstantiationListener}s. */
 	private IComponentInstantiationListener[] componentInstantiationListeners = new IComponentInstantiationListener[0];
@@ -1202,7 +1202,7 @@
 	/**
 	 * @return The root request mapper
 	 */
-	public final ICompoundRequestMapper getRootRequestMapper()
+	public final IRequestMapper getRootRequestMapper()
 	{
 		return rootRequestMapper;
 	}
@@ -1212,7 +1212,7 @@
 	 * 
 	 * @param rootRequestMapper
 	 */
-	public final void setRootRequestMapper(final ICompoundRequestMapper rootRequestMapper)
+	public final void setRootRequestMapper(final IRequestMapper rootRequestMapper)
 	{
 		this.rootRequestMapper = rootRequestMapper;
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java?rev=919714&r1=919713&r2=919714&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/SystemMapper.java Sat Mar  6 08:47:58 2010
@@ -18,10 +18,10 @@
 
 import org.apache.wicket.ng.request.mapper.BookmarkableMapper;
 import org.apache.wicket.ng.request.mapper.BufferedResponseMapper;
+import org.apache.wicket.ng.request.mapper.CompoundRequestMapper;
 import org.apache.wicket.ng.request.mapper.HomePageMapper;
 import org.apache.wicket.ng.request.mapper.PageInstanceMapper;
 import org.apache.wicket.ng.request.mapper.ResourceReferenceMapper;
-import org.apache.wicket.ng.request.mapper.ThreadsafeCompoundRequestMapper;
 import org.apache.wicket.ng.request.mapper.parameters.SimplePageParametersEncoder;
 import org.apache.wicket.util.IProvider;
 
@@ -32,20 +32,20 @@
  * @author igor.vaynberg
  * 
  */
-public class SystemMapper extends ThreadsafeCompoundRequestMapper
+public class SystemMapper extends CompoundRequestMapper
 {
 	/**
 	 * Constructor
 	 */
 	public SystemMapper(Application application)
 	{
-		register(RestartResponseAtInterceptPageException.MAPPER);
-		register(new HomePageMapper());
-		register(new PageInstanceMapper());
-		register(new BookmarkableMapper());
-		register(new ResourceReferenceMapper(new SimplePageParametersEncoder(),
+		add(RestartResponseAtInterceptPageException.MAPPER);
+		add(new HomePageMapper());
+		add(new PageInstanceMapper());
+		add(new BookmarkableMapper());
+		add(new ResourceReferenceMapper(new SimplePageParametersEncoder(),
 			new ParentFolderPlaceholderProvider(application)));
-		register(new BufferedResponseMapper());
+		add(new BufferedResponseMapper());
 	}
 
 	private static class ParentFolderPlaceholderProvider implements IProvider<String>

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/ICompoundRequestMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/ICompoundRequestMapper.java?rev=919714&r1=919713&r2=919714&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/ICompoundRequestMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/ICompoundRequestMapper.java Sat Mar  6 08:47:58 2010
@@ -17,21 +17,26 @@
 package org.apache.wicket.ng.request;
 
 /**
- * Mapper that delegates the mapping to other {@link IRequestMapper}s.
+ * Mapper that delegates the mapping to a contained {@link IRequestMapper}s with the highest
+ * compatibility score.
+ * 
+ * @author igor.vaynberg
  */
-public interface ICompoundRequestMapper extends IRequestMapper
+public interface ICompoundRequestMapper extends IRequestMapper, Iterable<IRequestMapper>
 {
 	/**
 	 * Registers a {@link IRequestMapper}
 	 * 
 	 * @param encoder
+	 * @return {@code this} for chaining
 	 */
-	void register(IRequestMapper encoder);
+	ICompoundRequestMapper add(IRequestMapper encoder);
 
 	/**
 	 * Unregisters {@link IRequestMapper}
 	 * 
 	 * @param encoder
+	 * @return {@code this} for chaining
 	 */
-	void unregister(IRequestMapper encoder);
+	ICompoundRequestMapper remove(IRequestMapper encoder);
 }
\ No newline at end of file

Copied: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/CompoundRequestMapper.java (from r919712, wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/CompoundRequestMapper.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/CompoundRequestMapper.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java&r1=919712&r2=919714&rev=919714&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/CompoundRequestMapper.java Sat Mar  6 08:47:58 2010
@@ -18,6 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -33,9 +34,10 @@
  * compatibility score and the orders they were registered. If two or more {@link IRequestMapper}s
  * have the same compatibility score, the last registered mapper has highest priority.
  * 
+ * @author igor.vaynberg
  * @author Matej Knopp
  */
-public class ThreadsafeCompoundRequestMapper implements ICompoundRequestMapper
+public class CompoundRequestMapper implements ICompoundRequestMapper
 {
 	/**
 	 * 
@@ -67,24 +69,26 @@
 	/**
 	 * Construct.
 	 */
-	public ThreadsafeCompoundRequestMapper()
+	public CompoundRequestMapper()
 	{
 	}
 
 	/**
-	 * @see org.apache.wicket.ng.request.ICompoundRequestMapper#register(org.apache.wicket.ng.request.IRequestMapper)
+	 * @see org.apache.wicket.ng.request.ICompoundRequestMapper#add(org.apache.wicket.ng.request.IRequestMapper)
 	 */
-	public void register(IRequestMapper encoder)
+	public CompoundRequestMapper add(IRequestMapper encoder)
 	{
 		mappers.add(0, encoder);
+		return this;
 	}
 
 	/**
-	 * @see org.apache.wicket.ng.request.ICompoundRequestMapper#unregister(org.apache.wicket.ng.request.IRequestMapper)
+	 * @see org.apache.wicket.ng.request.ICompoundRequestMapper#remove(org.apache.wicket.ng.request.IRequestMapper)
 	 */
-	public void unregister(IRequestMapper encoder)
+	public CompoundRequestMapper remove(IRequestMapper encoder)
 	{
 		mappers.remove(encoder);
+		return this;
 	}
 
 	/**
@@ -162,4 +166,10 @@
 		}
 		return score;
 	}
+
+	/** {@inheritDoc} */
+	public Iterator<IRequestMapper> iterator()
+	{
+		return mappers.iterator();
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=919714&r1=919713&r2=919714&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java Sat Mar  6 08:47:58 2010
@@ -37,11 +37,13 @@
 import org.apache.wicket.markup.html.pages.PageExpiredErrorPage;
 import org.apache.wicket.markup.resolver.AutoLinkResolver;
 import org.apache.wicket.ng.ThreadContext;
+import org.apache.wicket.ng.request.ICompoundRequestMapper;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.render.PageRenderer;
 import org.apache.wicket.ng.request.handler.impl.render.WebPageRenderer;
+import org.apache.wicket.ng.request.mapper.CompoundRequestMapper;
 import org.apache.wicket.ng.request.mapper.MountedMapper;
 import org.apache.wicket.ng.resource.ResourceReference;
 import org.apache.wicket.session.HttpSessionStore;
@@ -279,12 +281,30 @@
 	 * 
 	 * @param mapper
 	 *            the encoder that will be used for this mount
+	 * 
+	 * @deprecated this is the same as {@code getRotmapperAsCompound().add(mapper)}
 	 */
+	@Deprecated
 	public final void mount(IRequestMapper mapper)
 	{
 		Checks.argumentNotNull(mapper, "mapper");
+		getRootMapperAsCompound().add(mapper);
+	}
 
-		getRootRequestMapper().register(mapper);
+	/**
+	 * Converts the root mapper to a {@link ICompoundRequestMapper} if necessary and returns the
+	 * converted instance.
+	 * 
+	 * @return compound instance of the root mapper
+	 */
+	public ICompoundRequestMapper getRootMapperAsCompound()
+	{
+		IRequestMapper root = getRootRequestMapper();
+		if (!(root instanceof ICompoundRequestMapper))
+		{
+			root = new CompoundRequestMapper().add(root);
+		}
+		return (ICompoundRequestMapper)root;
 	}
 
 
@@ -298,7 +318,11 @@
 	 *            the path to mount the bookmarkable page class on
 	 * @param bookmarkablePageClass
 	 *            the bookmarkable page class to mount
+	 * 
+	 * @deprecated use mounted mapper instead, this method can be represented as {@code
+	 *             getRootMapperAsCompound().mount(new MountedMapper(path,clazz))}
 	 */
+	@Deprecated
 	public final <T extends Page> void mountBookmarkablePage(final String path,
 		final Class<T> bookmarkablePageClass)
 	{
@@ -313,7 +337,10 @@
 	 *            the path to mount the resource class on
 	 * @param reference
 	 *            resource reference to be mounted
+	 * 
+	 * @deprecated - not sure what to use yet but this will be deprecated :)
 	 */
+	@Deprecated
 	public final void mountSharedResource(final String path, final ResourceReference reference)
 	{
 		getResourceReferenceRegistry().registerResourceReference(reference);
@@ -333,6 +360,7 @@
 	 */
 	public final void addIgnoreMountPath(String path)
 	{
+		// TODO how is this supposed to work :/
 		throw new UnsupportedOperationException();
 	}
 

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategyTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategyTest.java?rev=919714&r1=919713&r2=919714&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategyTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategyTest.java Sat Mar  6 08:47:58 2010
@@ -21,8 +21,8 @@
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.SimplePage;
 import org.apache.wicket.ng.mock.MockApplication;
+import org.apache.wicket.ng.request.mapper.CompoundRequestMapper;
 import org.apache.wicket.ng.request.mapper.CryptoMapper;
-import org.apache.wicket.ng.request.mapper.ThreadsafeCompoundRequestMapper;
 import org.apache.wicket.util.crypt.Base64;
 import org.apache.wicket.util.crypt.ICrypt;
 import org.apache.wicket.util.crypt.ICryptFactory;
@@ -47,8 +47,8 @@
 				super.init();
 				// install crypto mapper to encrypt all application urls
 				getSecuritySettings().setCryptFactory(new TestCryptFactory());
-				ThreadsafeCompoundRequestMapper root = new ThreadsafeCompoundRequestMapper();
-				root.register(new CryptoMapper(getRootRequestMapper(), this));
+				CompoundRequestMapper root = new CompoundRequestMapper();
+				root.add(new CryptoMapper(getRootRequestMapper(), this));
 				setRootRequestMapper(root);
 			}
 		});