EMMA Coverage Report (generated Sat May 17 10:56:07 GMT 2008)
[all classes][spiffy.struts1]

COVERAGE SUMMARY FOR SOURCE FILE [StrutsActionHelper.java]

nameclass, %method, %block, %line, %
StrutsActionHelper.java0%   (0/1)0%   (0/2)0%   (0/67)0%   (0/11)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class StrutsActionHelper0%   (0/1)0%   (0/2)0%   (0/67)0%   (0/11)
StrutsActionHelper (): void 0%   (0/1)0%   (0/3)0%   (0/1)
goForward (ActionMapping, String, String []): ActionForward 0%   (0/1)0%   (0/64)0%   (0/10)

1package spiffy.struts1;
2 
3import org.apache.struts.action.ActionForward;
4import org.apache.struts.action.ActionMapping;
5 
6/**
7 * Helper class for Struts1 actions
8 * 
9 * @author Kasper B. Graversen, (c) 2007-2008
10 * @since 0.03
11 */
12 
13public class StrutsActionHelper {
14        
15        /**
16         * Helps you forwarding from one one action to another action and carrying over the parameters. If not carried over,
17         * they disappear from the request scope during forward.
18         * <p>
19         * A common use case is to have the <tt>SaveAction</tt> invoke the <tt>DislayListAction</tt>. To do this in a
20         * fashion that changes the URL in the users browser, you set the <tt>redirect="true"</tt> in the action in
21         * <tt>struts-config.xml</tt> and by uisng this helper method. It will take whatever you info you provide and
22         * encode the url to redict to.
23         * 
24         * @param actionMapping
25         *            Your Struts object
26         * @param forwardName
27         *            Name of the action in the struts-config.xml
28         * @param urlParams
29         *            An array of strings where you already have set all the values as strings, e.g. strings such as
30         *            <tt>"id=1"</tt>, <tt>name="Mr. Anderson"</tt>
31         * @return A struts forwarderder object
32         * @throws IllegalStateException
33         *             if redirect="true" is not set in the struts config or if forward path is invalid.
34         */
35        public ActionForward goForward(final ActionMapping actionMapping, final String forwardName, final String[] urlParams) {
36                // is forwarder defined in the config file?
37                final ActionForward forward = actionMapping.findForward(forwardName);
38                if( forward == null ) { return null; }
39                
40                // if redirect="false" is set in the config
41                if( forward.getRedirect() == false ) { throw new IllegalStateException(
42                                "You must set your redirect='true' in your struts-config.xml for this action!"); }
43                
44                // Construct a URL
45                final StringBuilder url = new StringBuilder();
46                if( forward.getPath() == null ) { throw new IllegalStateException(
47                                "Can't find path to forward to in you struts-config.xml"); }
48                
49                url.append(forward.getPath());
50                for(int i = 0; i < urlParams.length; i++) {
51                        url.append(i == 0 ? "?" : "&");
52                        url.append(urlParams[i]);
53                }
54                
55                // Create a ActionForward object as Stuts does not allow to modify the existing one
56                return new ActionForward(forward.getName(), url.toString(), true /* = REDIRECT */);
57        }
58        
59        // TODO we should also have a method that takes the request scope and converts it into an Object array, so it is
60        // easy to transfer the request scope
61};

[all classes][spiffy.struts1]
EMMA 2.0.5312 (C) Vladimir Roubtsov