You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by mr...@apache.org on 2003/10/25 02:02:33 UTC
cvs commit: jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet PerformInclude.java
mrdon 2003/10/24 17:02:33
Modified: contrib/struts-chain/src/conf chain-config.xml
contrib/struts-chain/src/java/org/apache/struts/chain
Constants.java
Added: contrib/struts-chain/src/java/org/apache/struts/chain
AbstractPerformInclude.java SelectInclude.java
contrib/struts-chain/src/java/org/apache/struts/chain/servlet
PerformInclude.java
Log:
Adding processInclude() replacement commands
Revision Changes Path
1.7 +12 -2 jakarta-struts/contrib/struts-chain/src/conf/chain-config.xml
Index: chain-config.xml
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/struts-chain/src/conf/chain-config.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- chain-config.xml 24 Oct 2003 02:35:02 -0000 1.6
+++ chain-config.xml 25 Oct 2003 00:02:32 -0000 1.7
@@ -88,7 +88,7 @@
processForward SelectForward
- processInclude NOT SUPPORTED YET
+ processInclude SelectInclude / PerformInclude
processActionCreate CreateAction
@@ -161,7 +161,17 @@
<!-- Select the appropriate ForwardConfig for action mappings that only
have an ActionForward -->
<command
- className="org.apache.struts.chain.servlet.SelectForward"/>
+ className="org.apache.struts.chain.servlet.SelectForward"/>
+
+
+ <!-- Select the include uri (if any) for the current action mapping -->
+ <command
+ className="org.apache.struts.chain.SelectInclude"/>
+
+
+ <!-- Perform the include (if needed) -->
+ <command
+ className="org.apache.struts.chain.servlet.PerformInclude"/>
<!-- Create (if needed) the Action for this request -->
1.5 +10 -4 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/Constants.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Constants.java 10 Oct 2003 04:26:16 -0000 1.4
+++ Constants.java 25 Oct 2003 00:02:33 -0000 1.5
@@ -132,7 +132,13 @@
* will be stored.</p>
*/
public static final String FORWARD_CONFIG_KEY = "forwardConfig";
-
+
+ /**
+ * <p>The default context attribute under which the
+ * include path for the current request
+ * will be stored.</p>
+ */
+ public static final String INCLUDE_KEY = "include";
/**
* <p>The default context attribute under which the
1.1 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/AbstractPerformInclude.java
Index: AbstractPerformInclude.java
===================================================================
/*
* $Header: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/AbstractPerformInclude.java,v 1.1 2003/10/25 00:02:33 mrdon Exp $
* $Revision: 1.1 $
* $Date: 2003/10/25 00:02:33 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. 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 the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* 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 THE APACHE SOFTWARE FOUNDATION 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 the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.chain;
import org.apache.commons.chain.Command;
import org.apache.commons.chain.Context;
import org.apache.struts.Globals;
import org.apache.commons.chain.web.WebContext;
import org.apache.struts.config.ModuleConfig;
/**
* <p>Perform forwarding or redirection based on the specified
* <code>String</code> (if any).</p>
*
* @author Don Brown
* @version $Revision: 1.1 $ $Date: 2003/10/25 00:02:33 $
*/
public abstract class AbstractPerformInclude implements Command {
// ------------------------------------------------------ Instance Variables
private String includeKey = Constants.INCLUDE_KEY;
private String moduleConfigKey = Constants.MODULE_CONFIG_KEY;
// -------------------------------------------------------------- Properties
/**
* <p>Return the context attribute key under which the
* include uri for the currently selected application
* action is stored.</p>
*/
public String getIncludeKey() {
return (this.includeKey);
}
/**
* <p>Set the context attribute key under which the
* include uri for the currently selected application
* action is stored.</p>
*
* @param includeKey The new context attribute key
*/
public void setIncludeKey(String includeKey) {
this.includeKey = includeKey;
}
/**
* <p>Return the context attribute key under which the
* <code>ModuleConfig</code> for the currently selected application
* module is stored.</p>
*/
public String getModuleConfigKey() {
return (this.moduleConfigKey);
}
/**
* <p>Set the context attribute key under which the
* <code>ModuleConfig</code> for the currently selected application
* module is stored.</p>
*
* @param moduleConfigKey The new context attribute key
*/
public void setModuleConfigKey(String moduleConfigKey) {
this.moduleConfigKey = moduleConfigKey;
}
// ---------------------------------------------------------- Public Methods
/**
* <p>Perform an include based on the specified
* include uri (if any).</p>
*
* @param context The <code>Context</code> for the current request
*
* @return <code>true</code> so that processing completes
*/
public boolean execute(Context context) throws Exception {
// Retrieve module config instance
WebContext wcontext = (WebContext) context;
ModuleConfig moduleConfig = (ModuleConfig)
wcontext.get(getModuleConfigKey());
// Is there an include to be performed?
String include = (String)
context.get(getIncludeKey());
if (include == null) {
return (true);
}
// Determine the currect uri
String uri = moduleConfig.getPrefix() + include;
// Perform the appropriate processing on this include uri
perform(context, uri);
return (true);
}
// ------------------------------------------------------- Protected Methods
/**
* <p>Perform the appropriate processing on the specified
* include uri.</p>
*
* @param context The context for this request
* @param include The forward to be performed
*/
protected abstract void perform(Context context,
String include)
throws Exception;
}
1.1 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/SelectInclude.java
Index: SelectInclude.java
===================================================================
/*
* $Header: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/SelectInclude.java,v 1.1 2003/10/25 00:02:33 mrdon Exp $
* $Revision: 1.1 $
* $Date: 2003/10/25 00:02:33 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. 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 the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* 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 THE APACHE SOFTWARE FOUNDATION 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 the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.chain;
import org.apache.commons.chain.Command;
import org.apache.commons.chain.Context;
import org.apache.struts.chain.Constants;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.ModuleConfig;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* <p>Select and cache the include for this
* <code>ActionConfig</code> if specified.</p>
*
* @author Don Brown
* @version $Revision: 1.1 $ $Date: 2003/10/25 00:02:33 $
*/
public class SelectInclude implements Command {
// ------------------------------------------------------ Instance Variables
private String actionConfigKey = Constants.ACTION_CONFIG_KEY;
private String includeKey = Constants.INCLUDE_KEY;
private static final Log log =
LogFactory.getLog(SelectInclude.class);
// -------------------------------------------------------------- Properties
/**
* <p>Return the context attribute key under which the
* <code>ActionConfig</code> for the currently selected application
* action is stored.</p>
*/
public String getActionConfigKey() {
return (this.actionConfigKey);
}
/**
* <p>Set the context attribute key under which the
* <code>ActionConfig</code> for the currently selected application
* action is stored.</p>
*
* @param actionConfigKey The new context attribute key
*/
public void setActionConfigKey(String actionConfigKey) {
this.actionConfigKey = actionConfigKey;
}
/**
* <p>Return the context attribute key under which the
* include uri is stored.</p>
*/
public String getIncludeKey() {
return (this.includeKey);
}
/**
* <p>Set the context attribute key under which the
* include uri is stored.</p>
*
* @param includeKey The new context attribute key
*/
public void setIncludeKey(String includeKey) {
this.includeKey = includeKey;
}
// ---------------------------------------------------------- Public Methods
/**
* <p>Select and cache the include uri for this
* <code>ActionConfig</code> if specified.</p>
*
* @param context The <code>Context</code> for the current request
*
* @return <code>false</code> so that processing continues
*/
public boolean execute(Context context) throws Exception {
// Acquire configuration objects that we need
ActionConfig actionConfig = (ActionConfig)
context.get(getActionConfigKey());
// Cache an include uri if found
String include = actionConfig.getInclude();
if (include != null) {
if (log.isDebugEnabled()) {
log.debug("Including " + include);
}
context.put(getIncludeKey(), include);
}
return (false);
}
}
1.1 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet/PerformInclude.java
Index: PerformInclude.java
===================================================================
/*
* $Header: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet/PerformInclude.java,v 1.1 2003/10/25 00:02:33 mrdon Exp $
* $Revision: 1.1 $
* $Date: 2003/10/25 00:02:33 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. 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 the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* 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 THE APACHE SOFTWARE FOUNDATION 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 the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.chain.servlet;
import javax.servlet.RequestDispatcher;
import org.apache.commons.chain.Context;
import org.apache.commons.chain.web.servlet.ServletWebContext;
import org.apache.struts.Globals;
import org.apache.struts.chain.AbstractPerformInclude;
import org.apache.struts.chain.Constants;
import org.apache.struts.util.RequestUtils;
/**
* <p>Perform forwarding or redirection based on the specified
* include uri (if any).</p>
*
* @author Don Brown
* @version $Revision: 1.1 $ $Date: 2003/10/25 00:02:33 $
*/
public class PerformInclude extends AbstractPerformInclude {
// ------------------------------------------------------- Protected Methods
/**
* <p>Perform the appropriate processing on the specified
* include uri.</p>
*
* @param context The context for this request
* @param uri The uri to be included
*/
protected void perform(Context context, String uri)
throws Exception {
ServletWebContext swcontext = (ServletWebContext) context;
RequestDispatcher rd =
swcontext.getContext().getRequestDispatcher(uri);
rd.forward(swcontext.getRequest(), swcontext.getResponse());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org