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()
{
}