Clover coverage report - Ledge Web - SNAPSHOT
Coverage timestamp: Fri Nov 17 2006 05:20:55 CET
file stats: LOC: 100   Methods: 2
NCLOC: 34   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ActionExecutorValve.java 100% 100% 100% 100%
coverage
 1    //
 2    // Copyright (c) 2003, Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.
 3    // All rights reserved.
 4    //
 5    // Redistribution and use in source and binary forms, with or without modification,
 6    // are permitted provided that the following conditions are met:
 7    //
 8    // * Redistributions of source code must retain the above copyright notice,
 9    // this list of conditions and the following disclaimer.
 10    // * Redistributions in binary form must reproduce the above copyright notice,
 11    // this list of conditions and the following disclaimer in the documentation
 12    // and/or other materials provided with the distribution.
 13    // * Neither the name of the Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.
 14    // nor the names of its contributors may be used to endorse or promote products
 15    // derived from this software without specific prior written permission.
 16    //
 17    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 18    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 19    // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 20    // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 21    // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 22    // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 23    // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 24    // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 25    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 26    // POSSIBILITY OF SUCH DAMAGE.
 27    //
 28    package org.objectledge.web.mvc.actions;
 29   
 30    import org.objectledge.context.Context;
 31    import org.objectledge.pipeline.ProcessingException;
 32    import org.objectledge.pipeline.Valve;
 33    import org.objectledge.web.mvc.MVCContext;
 34    import org.objectledge.web.mvc.finders.MVCClassFinder;
 35    import org.objectledge.web.mvc.security.SecurityHelper;
 36   
 37    /**
 38    * Pipeline component for executing MVC actions.
 39    *
 40    * <p>
 41    * This component is required to be placed before
 42    * {@link org.objectledge.web.mvc.builders.BuilderExecutorValve} in the request processing pipeline.
 43    * Such a configuration ensures that changes introduced by the action are visible for the user.
 44    * </p>
 45    *
 46    * @author <a href="mailto:dgajda@caltha.pl">Damian Gajda</a>
 47    * @version $Id: ActionExecutorValve.java,v 1.13 2005/07/07 08:29:33 zwierzem Exp $
 48    */
 49    public class ActionExecutorValve
 50    implements Valve
 51    {
 52    /** Finder for builder objects. */
 53    protected MVCClassFinder classFinder;
 54   
 55    /** SecurityHelper for action access checking. */
 56    protected SecurityHelper securityHelper;
 57   
 58    /**
 59    * Component constructor.
 60    *
 61    * @param classFinder finder for runnable action objects
 62    * @param securityHelper security helper for action access checking
 63    */
 64  46 public ActionExecutorValve(MVCClassFinder classFinder, SecurityHelper securityHelper)
 65    {
 66  46 this.classFinder = classFinder;
 67  46 this.securityHelper = securityHelper;
 68    }
 69   
 70    /**
 71    * Finds and executes an action for current request.
 72    *
 73    * <p>
 74    * The action is identified using the configured action token
 75    * ({@link org.objectledge.web.WebConfigurator#getActionToken()})
 76    * and found using the {@link MVCClassFinder#getAction(String)} method.
 77    * </p>
 78    *
 79    * @param context the thread's processing context.
 80    * @throws ProcessingException if the processing fails.
 81    */
 82  138 public void process(Context context)
 83    throws ProcessingException
 84    {
 85    // setup used contexts
 86  138 MVCContext mvcContext = MVCContext.getMVCContext(context);
 87  138 String actionName = mvcContext.getAction();
 88  138 if(actionName != null)
 89    {
 90    // get and execute action
 91  92 Valve action = classFinder.getAction(actionName);
 92  92 if(action == null)
 93    {
 94  46 throw new ProcessingException("unavailable action "+actionName);
 95    }
 96  46 securityHelper.checkSecurity(action, context);
 97  46 action.process(context);
 98    }
 99    }
 100    }