blob: 358d5c143b3ba4cc5dc164fde49de7481c3147e9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.chain2.apps.example;
import org.apache.commons.chain2.Command;
import org.apache.commons.chain2.Context;
import org.apache.commons.chain2.web.servlet.ServletWebContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import java.io.IOException;
/**
* <p>Forward Command</p>
*
* @version $Id$
*/
public class ForwardCommand implements Command<String, Object, ServletWebContext<String, Object>> {
private Log log = LogFactory.getLog(ForwardCommand.class);
private String forward;
/**
* Return the uri to forward to.
*
* @return The uri to forward to
*/
public String getForward() {
return forward;
}
/**
* Set the uri to forward to.
*
* @param forward The uri to forward to
*/
public void setForward(String forward) {
this.forward = forward;
}
/**
* <p>Execute the command.</p>
*
* @param context The {@link Context} we are operating on
* @return <code>false</code> so that processng will continue
*/
public boolean execute(ServletWebContext<String, Object> context) {
try {
String uri = getForward(context);
if (uri != null) {
if (log.isDebugEnabled()) {
log.debug("Forwarding to " + uri);
}
RequestDispatcher rd = context.getContext().getRequestDispatcher(uri);
rd.forward(context.getRequest(), context.getResponse());
return true;
} else {
if (log.isDebugEnabled()) {
log.debug("No forward found");
}
return false;
}
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ServletException e) {
throw new RuntimeException(e);
}
}
/**
* Return the uri to forward to.
*
* @param context The {@link Context} we are operating on
* @return The uri to forward to
*/
protected String getForward(ServletWebContext<String, Object> context) {
String uri = (String)context.get("forward");
if (uri == null) {
uri = getForward();
}
return uri;
}
}