head	1.17;
access;
symbols
	TIGRIS_1_1_0RC2:1.10
	TIGRIS_1_1_0RC1:1.10
	TIGRIS_1_1:1.10.0.4
	TIGRIS_1_0_8:1.10
	TIGRIS_1_0_8RC3:1.10
	TIGRIS_1_0_8RC2:1.10
	TIGRIS_1_0_8RC1:1.10
	TIGRIS_1_0_7:1.10
	TIGRIS_1_0_7RC3:1.10
	TIGRIS_1_0_7RC2:1.10
	TIGRIS_1_0_7RC1:1.10
	TIGRIS_1_0_6:1.10
	TIGRIS_1_0_6RC5:1.10
	TIGRIS_1_0_6RC4:1.10
	TIGRIS_1_0_6RC3:1.10
	TIGRIS_1_0_6RC2:1.10
	TIGRIS_1_0_6RC1:1.10
	TIGRIS_1_0_5:1.10
	TIGRIS_1_0_5RC6:1.10
	TIGRIS_1_0_5RC5:1.10
	TIGRIS_1_0_5RC4:1.10
	TIGRIS_1_0_5RC3:1.10
	TIGRIS_1_0_5RC2:1.10
	TIGRIS_1_0_5RC1:1.10
	TIGRIS_1_0_4:1.10
	TIGRIS_1_0_3:1.10
	TIGRIS_1_0_2:1.10
	TIGRIS_1_0_1:1.10
	TIGRIS_1_0:1.10.0.6
	TIGRIS_1_0_0:1.10
	TIGRIS_1_0_0_RC1:1.10.0.2
	dlr:1.1.1
	TIGRIS_0_9_2_4:1.4
	TIGRIS_0_9_2_3:1.4
	HELM_PEER_PORT_BRANCH:1.1.1.2
	TURBINE_PEER:1.6
	TIGRIS_0_9_2_1:1.6
	TIGRIS_0_9_2:1.4.0.6
	TIGRIS_0_9_0:1.4.0.4
	TIGRIS_0_8_4:1.4.0.2
	NEWHELM:1.1.1.1
	TIGRIS_NOV_12_2000:1.1.1;
locks; strict;
comment	@# @;


1.17
date	2001.08.28.17.45.17;	author leonardr;	state Exp;
branches;
next	1.16;

1.16
date	2001.08.28.17.13.33;	author leonardr;	state Exp;
branches;
next	1.15;

1.15
date	2001.08.11.09.08.06;	author dlr;	state Exp;
branches;
next	1.14;

1.14
date	2001.07.18.10.05.14;	author dlr;	state Exp;
branches;
next	1.13;

1.13
date	2001.07.17.20.10.49;	author leonardr;	state Exp;
branches;
next	1.12;

1.12
date	2001.06.13.16.41.11;	author leonardr;	state Exp;
branches;
next	1.11;

1.11
date	2001.05.23.01.50.15;	author dlr;	state Exp;
branches;
next	1.10;

1.10
date	2001.03.07.01.53.24;	author lucas;	state Exp;
branches;
next	1.9;

1.9
date	2001.02.27.22.59.27;	author leonardr;	state Exp;
branches;
next	1.8;

1.8
date	2001.02.27.22.57.47;	author leonardr;	state Exp;
branches;
next	1.7;

1.7
date	2001.02.21.01.08.23;	author dlr;	state Exp;
branches;
next	1.6;

1.6
date	2001.01.26.18.29.04;	author edk;	state Exp;
branches
	1.6.2.1;
next	1.5;

1.5
date	2001.01.26.05.24.06;	author edk;	state dead;
branches;
next	1.4;

1.4
date	2000.11.28.19.57.14;	author leonardr;	state Exp;
branches;
next	1.3;

1.3
date	2000.11.19.22.33.03;	author dlr;	state Exp;
branches;
next	1.2;

1.2
date	2000.11.17.00.29.21;	author leonardr;	state Exp;
branches;
next	1.1;

1.1
date	2000.11.12.21.15.56;	author dlr;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.11.12.21.15.56;	author dlr;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	2001.02.21.00.34.57;	author dlr;	state Exp;
branches;
next	;

1.6.2.1
date	2001.01.28.01.02.18;	author dlr;	state dead;
branches;
next	1.6.2.2;

1.6.2.2
date	2001.02.14.01.25.24;	author elicia;	state Exp;
branches;
next	1.6.2.3;

1.6.2.3
date	2001.02.15.20.50.42;	author leonardr;	state Exp;
branches;
next	1.6.2.4;

1.6.2.4
date	2001.02.16.03.01.34;	author dlr;	state Exp;
branches;
next	;


desc
@@


1.17
log
@More methods migrated to ContextAPI.
@
text
@/* ================================================================
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by Collab.Net (http://www.Collab.Net/)."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" name
 * nor may "Tigris" appear in their names without prior written
 * permission of Collab.Net.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of CollabNet.
 */

package org.tigris.helm.project;

import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.turbine.util.Log;
import org.apache.commons.util.exception.NestableException;
import org.apache.commons.util.exception.NestableException;
import org.apache.velocity.context.Context;

import com.workingdogs.village.*;

import org.tigris.helm.security.RedirectException;

import org.tigris.helm.DoesNotExist;
import org.tigris.helm.security.*;
import org.tigris.helm.om.*;
import org.tigris.helm.tool.ContextAPI;

public class ProjectApproval extends HelmServlet 
{

    /**
     * Whether or not to log debugging information
     */
    private static boolean DEBUG = false;

    private static final String PERFORM_ACTIONS_ACTION = "Perform Actions";
    private static final String ACTION_PREFIX = "ACTION ";
    private static final String APPROVE_ACTION = "Approve";
    private static final String DISAPPROVE_ACTION = "Disapprove";

    private static final String DISAPPROVAL_REASON_FIELD ="disapprovalReason";

    /**
     * Process requests for project approval.
     */
    protected String processRequest(Context context)
        throws NestableException, RedirectException
    {

        String templateName = super.processRequest(context);        
        String action = getAction(context);

        try
        {
            boolean validAction = false;

            if (action.equals("none"))
            {
                validAction = true;
            }

            if (PERFORM_ACTIONS_ACTION.equals(action))
            {
                validAction = true;                
                AccessControlList acl = getLoginUser(context).getACL();
                Enumeration paramNames =
                        ContextAPI.getRequest(context).getParameterNames();
                String reason = ContextAPI.processField
                    (context, DISAPPROVAL_REASON_FIELD, (String)null);

                String paramName;                
                while (paramNames.hasMoreElements())
                {
                    paramName = (String)paramNames.nextElement();
                    if (paramName.startsWith(ACTION_PREFIX))
                    {
                        String desiredAction = ContextAPI.getParameter
                            (context, paramName);
                        StringTokenizer tok = new StringTokenizer(paramName);
                        tok.nextToken();
                        String projectID = tok.nextToken();
                        if (DEBUG) 
                        {
                            Log.debug("ProjectApproval: " 
                                      + desiredAction + " project " + 
                                      projectID);
                        }
                        
                        Project project = (Project)
                            ProjectPeer.getInstance(projectID);
                        if (desiredAction.equals(APPROVE_ACTION))
                        {
                            project.approve(acl);
                        }
                        if (desiredAction.equals(DISAPPROVE_ACTION))
                        {
                            project.disapprove(acl, reason);
                        }
                    }
                }

                //Clear out the action so when we redirect it doesn't
                //try to do the approval/disapproval again.
                context.put("action", "none");
                redirectTo("ProjectApproval");
            }

            if (!validAction) redirectToUnauthorized();
        }
        catch (RedirectException e)
        {
            throw e;
        }
        catch (Exception e)
        {
            String message =
                "Exception in ProjectApproval: " + e.getMessage();
            Log.error(message);
            throw new NestableException(e);
        }
        return templateName;
    }
  
} /* end class ProjectApproval */
@


1.16
log
@Completed migration of more methods to ContextAPI.
@
text
@d117 2
a118 2
                        String desiredAction = getParameter(context,
                                                            paramName);
@


1.15
log
@Upgrading to Turbine 3.0-dev, Fulcrum 1.0, and Torque 1.0.
@
text
@d107 1
a107 1
                        getRequest(context).getParameterNames();
@


1.14
log
@Ported Joist Redirect*Exception to Helm.
@
text
@d55 2
a56 2
import org.apache.turbine.util.TurbineException;
import org.apache.turbine.util.TurbineException;
d87 1
a87 1
        throws TurbineException, RedirectException
d159 1
a159 1
            throw new TurbineException(e);
@


1.13
log
@Ported servlets to new error-handling mechanism.
@
text
@d61 1
a61 1
import org.joist.security.RedirectException;
@


1.12
log
@Added reason for denying role requests and disapproving projects.
@
text
@d66 2
a67 1
import org.tigris.helm.om.*;
d108 2
a109 2
                String reason = processField(context, DISAPPROVAL_REASON_FIELD,
                                             (String)null);
a152 7
        }
        catch (DoesNotExist e)
        {
            String message =
                "DoesNotExist problem in ProjectApproval: " + e.getMessage();
            Log.error(message);
            throw new TurbineException(e);
@


1.11
log
@Ported Helm from WebMacro to Velocity.
@
text
@d70 4
a73 1
    private static boolean debug = true;
d75 1
d80 2
d101 1
a101 1
            if (action.equals("Perform Actions"))
a102 1

d107 2
a108 1
                String paramName;
d110 1
d121 6
a126 3
                        if (debug) Log.debug("ProjectApproval: " 
                                             + desiredAction + " project " + 
                                             projectID);
d136 1
a136 1
                            project.disapprove(acl);
d157 2
a158 2
            if (debug) Log.debug(message);
                throw new TurbineException(e);
d164 1
a164 1
            if (debug) Log.debug(message);
a166 3

        if (debug) Log.debug("ProjectApproval:  done");

@


1.10
log
@Corrected regex madness for Torque upgrade.  -dlr
@
text
@d55 3
a57 1
import org.webmacro.servlet.*;
d79 2
a80 2
    protected String processRequest (Connection conn, WebContext context)
        throws HandlerException, RedirectException
d83 1
a83 1
        String templateName = super.processRequest(conn, context);        
d101 1
a101 1
                        context.getRequest().getParameterNames();
d109 2
a110 1
                        String desiredAction = context.getForm(paramName);
d148 1
a148 1
                throw new HandlerException(message);
d155 1
a155 1
            throw new HandlerException(message);
@


1.9
log
@Explained why the action gets cleared out.
@
text
@d64 1
a64 3
import org.tigris.helm.om.peer.*;
import org.tigris.helm.om.base.*;

@


1.8
log
@Cleanup and code fixes for ProjectApproval.
@
text
@d130 2
@


1.7
log
@This is the highest revision from the HELM_PEER_PORT_BRANCH.  The previous import caused too many conflicts to resolve manually
@
text
@d67 2
a68 1
public class ProjectApproval extends HelmServlet {
d72 4
d79 1
a79 1
    protected String processRequest (Connection conn, WebContext ctx)
d83 2
a84 6
        if (debug) Log.debug("ProjectApproval: started!");

        String templateName = super.processRequest(conn, ctx);
        
        String action = (String)ctx.get("action");
        if (debug) Log.debug("ProjectApproval: action=" + action );
d97 3
a99 2
                validAction = true;
                User loginUser = getLoginUser(ctx);
d101 1
a101 1
                        ctx.getRequest().getParameterNames();
d103 1
a103 1
                if (debug) Log.debug("ProjectApproval: step 6");
d106 2
a107 3
                    paramName = (String) paramNames.nextElement();
                    if (debug) Log.debug("ProjectApproval: param name=" + paramName);
                    if (paramName.startsWith("action_"))
d109 11
a119 10
                        String desiredAction = ctx.getForm(paramName);
                        if (debug) Log.debug("ProjectApproval: desired action="
                            + desiredAction);
                        String projectID = paramName.substring(7);
                        if (debug) Log.debug("ProjectApproval: projectID=" +
                            projectID);

                        AccessControlList acl = loginUser.getACL();
                        Project project = (Project)ProjectPeer.getInstance(projectID);
                        if (desiredAction.equals("Approve"))
d123 1
a123 1
                        if (desiredAction.equals("Disapprove"))
d125 1
a125 1
                                project.disapprove(acl);
d130 2
a131 1
                redirectTo("StartPage");
d135 4
@


1.6
log
@readding all the files as part of the process of returning to the way
things were as of tuesday
@
text
@d2 1
a2 1
 * Copyright (c) 2000 CollabNet.  All rights reserved.
a48 1
import java.io.*;
d54 1
a54 1
import org.webmacro.util.*;
a58 3
import org.joist.*;
import org.joist.util.*;
import org.joist.session.*;
a59 1
import org.joist.database.JoistDatabaseException;
d62 7
a68 8
import org.tigris.helm.security.HelmServlet;
import org.tigris.helm.security.AccessControlList;
import org.tigris.helm.domain.Domain;
import org.tigris.helm.domain.User;

public class ProjectApproval extends org.tigris.helm.security.HelmServlet {
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.4 2000/11/28 19:57:14 leonardr Exp $";
    private static Log log = new Log("ProjectApproval", "ProjectApproval");
d74 2
a75 2
    protected String processRequest (Connection connection, WebContext context)
	throws HandlerException, RedirectException
a76 1
	if (debug) log.info("ProjectApproval: started!");
d78 6
a83 4
	String templateName = super.processRequest(connection, context);
	
	String action = (String)context.get("action");
	if (debug) log.info("ProjectApproval: action=" + action );
d85 2
a86 2
	try
	{
d95 32
a126 35
	    {
		validAction = true;
                User loginUser = getLoginUser(context);
		Enumeration paramNames =
                    context.getRequest().getParameterNames();
		String paramName;
		if (debug) log.info("ProjectApproval: step 6");
		while (paramNames.hasMoreElements())
		{
		    paramName = (String) paramNames.nextElement();
		    if (debug) log.info("ProjectApproval: param name=" + paramName);
		    if (paramName.startsWith("action_"))
		    {
			String desiredAction = context.getForm(paramName);
			if (debug) log.info("ProjectApproval: desired action="
			    + desiredAction);
			String projectID = paramName.substring(7);
			if (debug) log.info("ProjectApproval: projectID=" +
			    projectID);

                        AccessControlList acl = getACL(context, connection);
                        Project project = 
                            new Project(connection, dMgr, projectID);
			if (desiredAction.equals("Approve"))
			{
			    project.approve(acl);
			}
			if (desiredAction.equals("Disapprove"))
			{
                            project.disapprove(acl);
			}
		    }
		}
		redirectTo("StartPage");
	    }
d128 2
a131 21
	}
        catch (SQLException e)
        {
            String message =
		"SQL problem in ProjectApproval: " + e.getMessage();
            if (debug) log.info(message);
            throw new HandlerException(message);
        }
        catch (DataSetException e)
        {
            String message =
		"DataSet problem in ProjectApproval: " + e.getMessage();
            if (debug) log.info(message);
            throw new HandlerException(message);
        }
        catch (JoistDatabaseException e)
        {
            String message =
		"JoistDatabase problem in ProjectApproval: " + e.getMessage();
            if (debug) log.info(message);
            throw new HandlerException(message);
d136 3
a138 3
		"DoesNotExist problem in ProjectApproval: " + e.getMessage();
            if (debug) log.info(message);
            throw new HandlerException(message);
d140 1
a140 1
        catch (JoistException e)
d143 2
a144 2
		"JoistException in ProjectApproval: " + e.getMessage();
            if (debug) log.info(message);
d148 1
a148 1
	if (debug) log.info("ProjectApproval:  done");
@


1.6.2.1
log
@Porting to the Turbine Peer system.  -dlr and leonardr
@
text
@d73 1
a73 1
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.6 2001/01/26 18:29:04 edk Exp $";
@


1.6.2.2
log
@ported to turbine
@
text
@d49 1
d55 1
a55 1
import org.apache.turbine.util.Log;
d60 3
d64 1
d67 8
a74 6
import org.tigris.helm.security.*;
import org.tigris.helm.om.*;
import org.tigris.helm.om.peer.*;

public class ProjectApproval extends HelmServlet {

d80 2
a81 2
    protected String processRequest (Connection conn, WebContext ctx)
        throws HandlerException, RedirectException
d83 1
d85 4
a88 6
        if (debug) Log.debug("ProjectApproval: started!");

        String templateName = super.processRequest(conn, ctx);
        
        String action = (String)ctx.get("action");
        if (debug) Log.debug("ProjectApproval: action=" + action );
d90 2
a91 2
        try
        {
d100 35
a134 32
            {
                validAction = true;
                User loginUser = getLoginUser(ctx);
                Enumeration paramNames =
                        ctx.getRequest().getParameterNames();
                String paramName;
                if (debug) Log.debug("ProjectApproval: step 6");
                while (paramNames.hasMoreElements())
                {
                    paramName = (String) paramNames.nextElement();
                    if (debug) Log.debug("ProjectApproval: param name=" + paramName);
                    if (paramName.startsWith("action_"))
                    {
                        String desiredAction = ctx.getForm(paramName);
                        if (debug) Log.debug("ProjectApproval: desired action="
                            + desiredAction);
                        String projectID = paramName.substring(7);
                        if (debug) Log.debug("ProjectApproval: projectID=" +
                            projectID);

                        AccessControlList acl = loginUser.getACL();
                        Project project = (Project)ProjectPeer.getInstance(projectID);
                        if (desiredAction.equals("Approve"))
                        {
                            project.approve(acl);
                        }
                        if (desiredAction.equals("Disapprove"))
                        {
                                project.disapprove(acl);
                        }
                    }
                }
a135 2
                redirectTo("StartPage");
            }
d138 21
d163 3
a165 3
                "DoesNotExist problem in ProjectApproval: " + e.getMessage();
            if (debug) Log.debug(message);
                throw new HandlerException(message);
d167 1
a167 1
        catch (Exception e)
d170 2
a171 2
                "Exception in ProjectApproval: " + e.getMessage();
            if (debug) Log.debug(message);
d175 1
a175 1
        if (debug) Log.debug("ProjectApproval:  done");
@


1.6.2.3
log
@Normalized copyright dates.
@
text
@d2 1
a2 1
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
@


1.6.2.4
log
@Added new imports necessitated by Torque.
@
text
@a64 1
import org.tigris.helm.om.base.*;
@


1.5
log
@revert this stuff to its state as of 2001/01/24 12:42:00 GMT -- with
the following exceptions, which have some different modifications so
they'll work with changes which have happened in joist:

ProjectNewsEdit.java
SkinManager.java
SkinStyleElementValueManager.java
StyleElementManager.java
StyleManager.java

it compiles.  i dunno if it works, though.
@
text
@@


1.4
log
@Added messaging of project owners on disapproval.
@
text
@d73 1
a73 1
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.3 2000/11/19 22:33:03 dlr Exp $";
@


1.3
log
@Removed use of HelmServlet's HttpServletRequest instance variable--it
had serious MT issues.
@
text
@d73 1
a73 1
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.2 2000/11/17 00:29:21 leonardr Exp $";
d129 1
a129 1
                            project.delete(acl);
d164 7
@


1.2
log
@Made the TigrisUpdate stuff saner with the use of business objects.
@
text
@d73 1
a73 1
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.1.1.1 2000/11/12 21:15:56 dlr Exp $";
d78 1
a78 1
     *  Process requests for project approval.
d103 2
a104 1
		Enumeration paramNames = request.getParameterNames();
@


1.1
log
@Initial revision
@
text
@a70 1
import org.tigris.helm.tool.UpdateException;
d73 1
a73 1
    public static final  String versionID = "$Id: ProjectApproval.java,v 1.13 2000/11/11 03:56:02 leonardr Exp $";
a141 7
            if (debug) log.info(message);
            throw new HandlerException(message);
        }
        catch (UpdateException e)
        {
            String message =
		"Update problem in ProjectApproval: " + e.getMessage();
@


1.1.1.1
log
@Merging newhelm tree into helm, as per IZ issue #557.  Previous major version of helm is tagged TIGRIS_NOV_11_2000.
@
text
@@


1.1.1.2
log
@Replacing the HEAD with the HELM_PEER_PORT_BRANCH.
@
text
@d2 1
a2 1
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
d49 1
d55 1
a55 1
import org.apache.turbine.util.Log;
d60 3
d64 1
d67 9
a75 7
import org.tigris.helm.security.*;
import org.tigris.helm.om.*;
import org.tigris.helm.om.peer.*;
import org.tigris.helm.om.base.*;

public class ProjectApproval extends HelmServlet {

d79 1
a79 1
     * Process requests for project approval.
d81 2
a82 2
    protected String processRequest (Connection conn, WebContext ctx)
        throws HandlerException, RedirectException
d84 1
d86 4
a89 6
        if (debug) Log.debug("ProjectApproval: started!");

        String templateName = super.processRequest(conn, ctx);
        
        String action = (String)ctx.get("action");
        if (debug) Log.debug("ProjectApproval: action=" + action );
d91 2
a92 2
        try
        {
d101 34
a134 32
            {
                validAction = true;
                User loginUser = getLoginUser(ctx);
                Enumeration paramNames =
                        ctx.getRequest().getParameterNames();
                String paramName;
                if (debug) Log.debug("ProjectApproval: step 6");
                while (paramNames.hasMoreElements())
                {
                    paramName = (String) paramNames.nextElement();
                    if (debug) Log.debug("ProjectApproval: param name=" + paramName);
                    if (paramName.startsWith("action_"))
                    {
                        String desiredAction = ctx.getForm(paramName);
                        if (debug) Log.debug("ProjectApproval: desired action="
                            + desiredAction);
                        String projectID = paramName.substring(7);
                        if (debug) Log.debug("ProjectApproval: projectID=" +
                            projectID);

                        AccessControlList acl = loginUser.getACL();
                        Project project = (Project)ProjectPeer.getInstance(projectID);
                        if (desiredAction.equals("Approve"))
                        {
                            project.approve(acl);
                        }
                        if (desiredAction.equals("Disapprove"))
                        {
                                project.disapprove(acl);
                        }
                    }
                }
a135 2
                redirectTo("StartPage");
            }
d138 7
d146 15
a160 1
        catch (DoesNotExist e)
d163 3
a165 3
                "DoesNotExist problem in ProjectApproval: " + e.getMessage();
            if (debug) Log.debug(message);
                throw new HandlerException(message);
d167 1
a167 1
        catch (Exception e)
d170 2
a171 2
                "Exception in ProjectApproval: " + e.getMessage();
            if (debug) Log.debug(message);
d175 1
a175 1
        if (debug) Log.debug("ProjectApproval:  done");
@

