You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by im...@apache.org on 2007/02/25 17:35:25 UTC

svn commit: r511546 - in /myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion: requestParameterProvider/ viewController/

Author: imario
Date: Sun Feb 25 08:35:24 2007
New Revision: 511546

URL: http://svn.apache.org/viewvc?view=rev&rev=511546
Log:
javadoc for the requestParameterProvider and the viewController stuff

Added:
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/AbstractViewControllerExecutor.java
      - copied, changed from r511468, myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerExecutor.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/_ViewControllerUtils.java
      - copied, changed from r511468, myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerUtils.java
Removed:
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerExecutor.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerUtils.java
Modified:
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProvider.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProviderManager.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterResponseWrapper.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterServletFilter.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerManager.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerNameMapper.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/InterfaceViewControllerExecutor.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ReflectiveViewControllerExecutor.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewController.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerManager.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerNameMapper.java
    myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerPhaseListener.java

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProvider.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProvider.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProvider.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProvider.java Sun Feb 25 08:35:24 2007
@@ -20,13 +20,21 @@
 package org.apache.myfaces.fusion.requestParameterProvider;
 
 /**
+ * The interface a provider has to implement to add parameters to the url
+ *
  * @author Thomas Oberder
  * @author Mario Ivankovits
  * @version 27.04.2006 22:41:11
  */
 public interface RequestParameterProvider
 {
+	/**
+	 * return the fields you would like to add to the url
+	 */
 	public String[] getFields();
 
+	/**
+	 * return the value for the given field
+	 */
 	public String getFieldValue(String field);
 }

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProviderManager.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProviderManager.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProviderManager.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterProviderManager.java Sun Feb 25 08:35:24 2007
@@ -23,14 +23,14 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.faces.context.FacesContext;
-import java.io.IOException;
-import java.io.ObjectStreamException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 /**
+ * The manager which manage all the attached providers and add their fields to the url
+ *
  * @author Thomas Obereder
  * @version 27.04.2006 22:42:32
  */
@@ -42,8 +42,7 @@
 	private static final String PARAMETER_SEP = "&";
 	private static final String PARAMETER_PROVIDER_MANAGER_KEY = RequestParameterProviderManager.class.getName();
 
-	private List providers;
-
+	private transient List providers;
 
 	private RequestParameterProviderManager()
 	{
@@ -159,22 +158,5 @@
 		}
 
 		return Boolean.TRUE.equals(context.getExternalContext().getRequestMap().get(RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED));
-	}
-
-	private void writeObject(java.io.ObjectOutputStream out) throws IOException
-	{
-		// the conversation manager is not (yet) serializable, we just implement it
-		// to make it work with distributed sessions
-	}
-
-	private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException
-	{
-		// nothing written, so nothing to read
-	}
-
-	private Object readResolve() throws ObjectStreamException
-	{
-		// do not return a real object, that way on first request a new manager will be created
-		return null;
 	}
 }

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterResponseWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterResponseWrapper.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterResponseWrapper.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterResponseWrapper.java Sun Feb 25 08:35:24 2007
@@ -28,6 +28,8 @@
 import java.util.Locale;
 
 /**
+ * This wrapper intercepts encodeURL and pass it to the {@link RequestParameterProviderManager} which attaches the url parameters
+ *  
  * @author Thomas Obereder
  * @version 30.04.2006 14:40:05
  */

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterServletFilter.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterServletFilter.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterServletFilter.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/requestParameterProvider/RequestParameterServletFilter.java Sun Feb 25 08:35:24 2007
@@ -29,12 +29,11 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
-
 /**
+ * This filter wraps each {@link HttpServletRequest} in a {@link RequestParameterResponseWrapper}  
+ *
  * @author Thomas Obereder
  * @version 30.04.2006 14:38:23
- *          <p/>
- *          Once moved to tomahawk, we can get rid of this filter and add its functionality to the default ExtensionsFilter.
  */
 public class RequestParameterServletFilter implements Filter
 {

Copied: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/AbstractViewControllerExecutor.java (from r511468, myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerExecutor.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/AbstractViewControllerExecutor.java?view=diff&rev=511546&p1=myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerExecutor.java&r1=511468&p2=myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/AbstractViewControllerExecutor.java&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerExecutor.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/AbstractViewControllerExecutor.java Sun Feb 25 08:35:24 2007
@@ -20,7 +20,13 @@
 
 package org.apache.myfaces.fusion.viewController;
 
-public abstract class ViewControllerExecutor
+
+/**
+ * <p>The abstract basis class you have to use as basis class for any custom view controller executor.</p>
+ * <p>Notice: This interface can be extended between releases, thats why its an abstract class instead of an interface.
+ * New methods not implemented by your custom excecutor will not harm your system that way.</p> 
+ */
+public abstract class AbstractViewControllerExecutor
 {
 	public void invokeInitView(Object bean)
 	{

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerManager.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerManager.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerManager.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerManager.java Sun Feb 25 08:35:24 2007
@@ -22,10 +22,21 @@
 
 import javax.faces.context.FacesContext;
 
+/**
+ * <p>
+ * The default {@link ViewControllerManager} which uses the {@link DefaultViewControllerNameMapper}
+ * to map view-ids to bean names and the {@link ReflectiveViewControllerExecutor} to invoke
+ * view controller events on your beans.
+ * </p>
+ * 
+ * @see ViewControllerManager
+ *
+ * @author imario@apache.org
+ */
 public class DefaultViewControllerManager implements ViewControllerManager
 {
-	ViewControllerNameMapper viewControllerNameMapper = new DefaultViewControllerNameMapper();
-	ViewControllerExecutor viewControllerExecutor = new ReflectiveViewControllerExecutor();
+	private ViewControllerNameMapper viewControllerNameMapper = new DefaultViewControllerNameMapper();
+	private AbstractViewControllerExecutor abstractViewControllerExecutor = new ReflectiveViewControllerExecutor();
 
 	public DefaultViewControllerManager()
 	{
@@ -36,9 +47,9 @@
 		return viewControllerNameMapper;
 	}
 
-	public ViewControllerExecutor getViewControllerExecutor()
+	public AbstractViewControllerExecutor getViewControllerExecutor()
 	{
-		return viewControllerExecutor;
+		return abstractViewControllerExecutor;
 	}
 
 	public Object getViewController(FacesContext facesContext, String viewId)

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerNameMapper.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerNameMapper.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/DefaultViewControllerNameMapper.java Sun Feb 25 08:35:24 2007
@@ -24,6 +24,31 @@
 import java.util.HashSet;
 import java.util.Arrays;
 
+/**
+ * <p>Map view-ids to bean names.</p>
+ * <p>
+ * The strategy of this mapper is as follows:
+ * <ul>
+ * <li>slash ('/') will be removed</li>
+ * <li>every character after a slash will be convertert to uppercase</li>
+ * <li>everyting after a dot ('.') will be removed</li>
+ * <li>reserved words {@link #RESERVED_WORDS} are prefixed with an underscore ('_')</li>
+ * <li>result starting with an digit are prefixed too </li>
+ * </ul>
+ * </p>
+ * <p>
+ * Examples:
+ * <table border="1">
+ * <thead><tr><th>ViewId</th><th>BeanName</th></tr></thead>
+ * <tbody>
+ * <tr><td>/userInfo.jsp</td><td>UserInfo</td></tr>
+ * <tr><td>/secureArea/userPassword.jsp</td><td>SecureAreaUserPasswords</td></tr>
+ * </tbody>
+ * </table>
+ * </p>
+ *
+ * @author imario@apache.org
+ */
 public class DefaultViewControllerNameMapper implements ViewControllerNameMapper
 {
 	private static Set RESERVED_WORDS = new HashSet(Arrays.asList(
@@ -65,7 +90,6 @@
 				}
 				sb.deleteCharAt(i);
 				i--;
-				continue;
 			}
 			else if (c == '.')
 			{

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/InterfaceViewControllerExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/InterfaceViewControllerExecutor.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/InterfaceViewControllerExecutor.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/InterfaceViewControllerExecutor.java Sun Feb 25 08:35:24 2007
@@ -24,7 +24,12 @@
 
 package org.apache.myfaces.fusion.viewController;
 
-public class InterfaceViewControllerExecutor extends ViewControllerExecutor
+/**
+ * Invokes ViewController events using the {@link ViewController} interface
+ * 
+ * @author imario@apache.org
+ */
+public class InterfaceViewControllerExecutor extends AbstractViewControllerExecutor
 {
 	public void invokeInitView(Object bean)
 	{

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ReflectiveViewControllerExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ReflectiveViewControllerExecutor.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ReflectiveViewControllerExecutor.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ReflectiveViewControllerExecutor.java Sun Feb 25 08:35:24 2007
@@ -24,7 +24,19 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-public class ReflectiveViewControllerExecutor extends ViewControllerExecutor
+/**
+ * <p>Invokes ViewController events using reflection.</p>
+ * <p>
+ * Your beans can optionally provide one of the following methods
+ * <ul>
+ * <li>public void initView()</li>
+ * <li>public void preRenderView()</li>
+ * </ul>
+ * </p>
+ *
+ * @author imario@apache.org
+ */
+public class ReflectiveViewControllerExecutor extends AbstractViewControllerExecutor
 {
 	public void invokeInitView(Object bean)
 	{

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewController.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewController.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewController.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewController.java Sun Feb 25 08:35:24 2007
@@ -20,6 +20,15 @@
 
 package org.apache.myfaces.fusion.viewController;
 
+/**
+ * <p>The ViewController interface</p>
+ * <p>
+ * Your bean has to implement this interface if you've decided to use the {@link InterfaceViewControllerExecutor}
+ * to get notifications
+ * </p>
+ *
+ * @author imario@apache.org
+ */
 public interface ViewController
 {
 	public void initView();

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerManager.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerManager.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerManager.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerManager.java Sun Feb 25 08:35:24 2007
@@ -22,11 +22,23 @@
 
 import javax.faces.context.FacesContext;
 
+/**
+ * <p>The view controller manager is basically a configuration class, you have to create your own if
+ * you would like to use a different configuration</p>
+ * <p>
+ * If you would like to use your own naming scheme or executor just implement your own {@link ViewControllerManager} or
+ * derive from {@link DefaultViewControllerManager} (the prefered way) and overload {@link #getViewControllerNameMapper()} or
+ * {@link #getViewControllerExecutor()} }.<br />
+ * To activate your manager just configure it as managed bean in your faces-config.xml or your spring configuration,
+ * preferably in application scope or as singleton.<br />
+ * The managed-bean-name has to be "<code>fusion_ViewControllerManager</code>" (see constanst {@link ViewControllerManager#VIEW_CONTROLLER_MANAGER_NAME})
+ * </p>
+ */
 public interface ViewControllerManager
 {
 	public final static String VIEW_CONTROLLER_MANAGER_NAME="fusion_ViewControllerManager";
 
 	public ViewControllerNameMapper getViewControllerNameMapper();
-	public ViewControllerExecutor getViewControllerExecutor();
+	public AbstractViewControllerExecutor getViewControllerExecutor();
 	public Object getViewController(FacesContext facesContext, String viewId);
 }

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerNameMapper.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerNameMapper.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerNameMapper.java Sun Feb 25 08:35:24 2007
@@ -20,6 +20,12 @@
 
 package org.apache.myfaces.fusion.viewController;
 
+/**
+ * <p>The interface for the name mapper.</p>
+ * <p>A mapper is responsible for converting a viewId to a managed bean name</p>
+ *
+ * @author imario@apache.org
+ */
 public interface ViewControllerNameMapper
 {
 	public String mapViewId(String viewId);

Modified: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerPhaseListener.java?view=diff&rev=511546&r1=511545&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerPhaseListener.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerPhaseListener.java Sun Feb 25 08:35:24 2007
@@ -26,6 +26,11 @@
 import javax.faces.event.PhaseListener;
 import javax.faces.component.UIViewRoot;
 
+/**
+ * <p>The phase listener dispatches some phases to the ViewController (your backing bean)</p>
+ *
+ * @author imario@apache.org
+ */
 public class ViewControllerPhaseListener implements PhaseListener
 {
 	public void beforePhase(PhaseEvent event)
@@ -61,7 +66,7 @@
 
 	protected void preRenderResponse(FacesContext facesContext)
 	{
-		ViewControllerManager manager = ViewControllerUtils.getViewControllerManager(facesContext);
+		ViewControllerManager manager = _ViewControllerUtils.getViewControllerManager(facesContext);
 		if (manager == null)
 		{
 			return;
@@ -82,7 +87,7 @@
 
 	protected void postRestoreView(FacesContext facesContext)
 	{
-		ViewControllerManager manager = ViewControllerUtils.getViewControllerManager(facesContext);
+		ViewControllerManager manager = _ViewControllerUtils.getViewControllerManager(facesContext);
 		if (manager == null)
 		{
 			return;

Copied: myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/_ViewControllerUtils.java (from r511468, myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/_ViewControllerUtils.java?view=diff&rev=511546&p1=myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerUtils.java&r1=511468&p2=myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/_ViewControllerUtils.java&r2=511546
==============================================================================
--- myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/ViewControllerUtils.java (original)
+++ myfaces/fusion/trunk/core/src/main/java/org/apache/myfaces/fusion/viewController/_ViewControllerUtils.java Sun Feb 25 08:35:24 2007
@@ -22,11 +22,17 @@
 
 import javax.faces.context.FacesContext;
 
-public final class ViewControllerUtils
+/**
+ * <p>Various utilities used by the viewController framework</p>
+ * <p>Notice: this class is not meant to be used outside of this library</p>
+ *
+ * @author imario@apache.org
+ */
+public final class _ViewControllerUtils
 {
 	private final static ViewControllerManager DEFAULT_VCM = new DefaultViewControllerManager();
 
-	private ViewControllerUtils()
+	private _ViewControllerUtils()
 	{
 	}