Move the sample project at the root (it is not a plugin resource).
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@113171 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
4
cactus/sample/.cvsignore
Normal file
4
cactus/sample/.cvsignore
Normal file
@@ -0,0 +1,4 @@
|
||||
target
|
||||
cactus_client.log
|
||||
maven.log
|
||||
project.properties
|
||||
67
cactus/sample/project.xml
Normal file
67
cactus/sample/project.xml
Normal file
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project>
|
||||
|
||||
<!-- the version of maven's project object model -->
|
||||
<pomVersion>3</pomVersion>
|
||||
|
||||
<!-- a unique name for this project -->
|
||||
<id>maven-cactus-sample</id>
|
||||
|
||||
<!-- a short but descriptive name for the project -->
|
||||
<name>Cactus Sample</name>
|
||||
|
||||
<!-- The version of the project under development, e.g.
|
||||
1.1, 1.2, 2.0-dev -->
|
||||
<currentVersion>1.0-SNAPSHOT</currentVersion>
|
||||
|
||||
<!-- details about the organization that 'owns' the project -->
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://jakarta.apache.org/</url>
|
||||
</organization>
|
||||
|
||||
<!-- the year the project started -->
|
||||
<inceptionYear>2002</inceptionYear>
|
||||
|
||||
<!-- the top level of java packages that this project defines
|
||||
e.g. if your project contains the packages
|
||||
com.mycompany.accounts.reports, com.mycompany.accounts.reports
|
||||
and com.mycompany.accounts.utils, the package would be
|
||||
'com.mycompany.accounts' -->
|
||||
<package>org.apache.maven.cactus.sample</package>
|
||||
|
||||
<!-- a short description of what the project does -->
|
||||
<shortDescription>A sample project using the Cactus plugin for Maven</shortDescription>
|
||||
|
||||
<!-- the project home page -->
|
||||
<url>http://maven.apache.org/</url>
|
||||
|
||||
<!-- the version control repository and http url for online access
|
||||
the connection element has the form:
|
||||
scm:<system>:<system specific connection string> -->
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/</url>
|
||||
</repository>
|
||||
|
||||
<!-- any mailing lists for the project -->
|
||||
<mailingLists/>
|
||||
|
||||
<!-- who the developers are for the project -->
|
||||
<developers/>
|
||||
|
||||
<!-- jar files the project is dependent on -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>servletapi</groupId>>
|
||||
<artifactId>servletapi</artifactId>>
|
||||
<version>2.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<!-- build information for the project -->
|
||||
<build>
|
||||
<sourceDirectory>src/java</sourceDirectory>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,141 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.jsp.JspTagException;
|
||||
import javax.servlet.jsp.JspWriter;
|
||||
import javax.servlet.jsp.tagext.BodyTagSupport;
|
||||
|
||||
/**
|
||||
* Sample tag that interacts with its body. The tag acts as a filter for its
|
||||
* body. "Target" and "Replacement" Strings are defined by the tag's attributes
|
||||
* and each "occurrence" of the target is replaced by the "replacement".
|
||||
*
|
||||
* @author <a href="mailto:nick@eblox.com">Nicholas Lesiecki</a>
|
||||
*
|
||||
* @version $Id: SampleBodyTag.java,v 1.1 2003/03/22 16:39:10 vmassol Exp $
|
||||
*/
|
||||
public class SampleBodyTag extends BodyTagSupport {
|
||||
/**
|
||||
* The substring to be replaced in the body.
|
||||
*/
|
||||
private String target;
|
||||
|
||||
/**
|
||||
* The substring that will replace the target in the body.
|
||||
*/
|
||||
private String replacement;
|
||||
|
||||
/**
|
||||
* Sets the substring to be replaced in the body.
|
||||
*
|
||||
* @param theTarget the substring to be replaced in the body
|
||||
*/
|
||||
public void setTarget(String theTarget) {
|
||||
this.target = theTarget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the substring that will replace the target in the body.
|
||||
*
|
||||
* @param theReplacement the replacement string
|
||||
*/
|
||||
public void setReplacement(String theReplacement) {
|
||||
this.replacement = theReplacement;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see BodyTagSupport#doAfterBody()
|
||||
*/
|
||||
public int doAfterBody() throws JspTagException {
|
||||
String contentString = this.bodyContent.getString();
|
||||
StringBuffer contentBuffer = new StringBuffer(contentString);
|
||||
|
||||
int beginIndex = -1;
|
||||
int targetLength = this.target.length();
|
||||
|
||||
// while instances of target still exist
|
||||
while ((beginIndex = contentString.indexOf(this.target)) > -1) {
|
||||
int endIndex = beginIndex + targetLength;
|
||||
|
||||
contentBuffer.replace(beginIndex, endIndex, this.replacement);
|
||||
|
||||
contentString = contentBuffer.toString();
|
||||
}
|
||||
|
||||
// write out the changed body
|
||||
JspWriter pageWriter = this.bodyContent.getEnclosingWriter();
|
||||
|
||||
try {
|
||||
pageWriter.write(contentString);
|
||||
} catch (IOException e) {
|
||||
throw new JspTagException(e.getMessage());
|
||||
}
|
||||
|
||||
return SKIP_BODY;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see BodyTagSupport#release()
|
||||
*/
|
||||
public void release() {
|
||||
this.target = null;
|
||||
this.replacement = null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,173 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.maven.cactus.sample.util.GenericResponseWrapper;
|
||||
|
||||
/**
|
||||
* Sample filter that implements some very simple business logic. The goal is
|
||||
* to provide some functional tests for Cactus and examples for Cactus users.
|
||||
* This filter simply adds a header and a footer to the returned HTML.
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: SampleFilter.java,v 1.1 2003/03/22 16:39:10 vmassol Exp $
|
||||
*/
|
||||
public class SampleFilter implements Filter {
|
||||
/**
|
||||
* We need to save the filter config as the Fitler API does not offer
|
||||
* a means to get the filter config ... except in the <code>init()</code>
|
||||
*/
|
||||
private FilterConfig config;
|
||||
|
||||
/**
|
||||
* Filter initialisation. Called by the servlet engine during the life
|
||||
* cycle of the filter.
|
||||
*
|
||||
* @param theConfig the filter config
|
||||
*
|
||||
* @exception ServletException on failure
|
||||
*/
|
||||
public void init(FilterConfig theConfig) throws ServletException {
|
||||
this.config = theConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform the filter function. Called by the container upon a request
|
||||
* matching the filter pattern defined in <code>web.xml</code>.
|
||||
*
|
||||
* @param theRequest the incmoing HTTP request
|
||||
* @param theResponse the returned HTTP response
|
||||
* @param theChain the chain of filters extracted from the definition
|
||||
* given in <code>web.xml</code> by the container.
|
||||
*
|
||||
* @exception ServletException on failure
|
||||
* @exception IOException on failure
|
||||
*/
|
||||
public void doFilter(ServletRequest theRequest,
|
||||
ServletResponse theResponse, FilterChain theChain) throws IOException,
|
||||
ServletException {
|
||||
OutputStream out = theResponse.getOutputStream();
|
||||
|
||||
addHeader(out);
|
||||
|
||||
// Create a wrapper of the response so that we can later write to
|
||||
// the response (add the footer). If we did not do this, we would
|
||||
// get an error saying that the response has already been
|
||||
// committed.
|
||||
GenericResponseWrapper wrapper =
|
||||
new GenericResponseWrapper((HttpServletResponse) theResponse);
|
||||
|
||||
theChain.doFilter(theRequest, wrapper);
|
||||
|
||||
out.write(wrapper.getData());
|
||||
addFooter(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the header to the output stream. The header text is extracted
|
||||
* from a filter initialisation parameter (defined in
|
||||
* <code>web.xml</code>). Don't write anything if no parameter is defined.
|
||||
*
|
||||
* @param theOutputStream the output stream
|
||||
*
|
||||
* @exception IOException on failure
|
||||
*/
|
||||
protected void addHeader(OutputStream theOutputStream) throws IOException {
|
||||
String header = this.config.getInitParameter("header");
|
||||
|
||||
if (header != null) {
|
||||
theOutputStream.write(header.getBytes());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the footer to the output stream. The footer text is extracted
|
||||
* from a filter initialisation parameter (defined in
|
||||
* <code>web.xml</code>). Don't write anything if no parameter is defined.
|
||||
*
|
||||
* @param theOutputStream the output stream
|
||||
*
|
||||
* @exception IOException on failure
|
||||
*/
|
||||
protected void addFooter(OutputStream theOutputStream) throws IOException {
|
||||
String footer = this.config.getInitParameter("footer");
|
||||
|
||||
if (footer != null) {
|
||||
theOutputStream.write(footer.getBytes());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter un-initialisation. Called by the servlet engine during the life
|
||||
* cycle of the filter.
|
||||
*/
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
/**
|
||||
* Sample servlet that implements some very simple business logic. The goal is
|
||||
* to provide some functional tests for Cactus and examples for Cactus users.
|
||||
* This servlet simply checks is a user is authenticated
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
|
||||
*
|
||||
* @version $Id: SampleServlet.java,v 1.1 2003/03/22 16:39:10 vmassol Exp $
|
||||
*/
|
||||
|
||||
public class SampleServlet extends HttpServlet {
|
||||
|
||||
/**
|
||||
*Take a request object and return whether the user is authenticated o not.
|
||||
*
|
||||
* @param request the HttpServletRequest object
|
||||
*
|
||||
* @return boolean whether the request is by an authenticated user or not
|
||||
*
|
||||
*/
|
||||
public boolean isAuthenticated(HttpServletRequest request) {
|
||||
HttpSession session = request.getSession(false);
|
||||
|
||||
if (session == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String authenticationAttribute =
|
||||
(String) session.getAttribute("authenticated");
|
||||
|
||||
return new Boolean(authenticationAttribute).booleanValue();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package org.apache.maven.cactus.sample.util;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
|
||||
/**
|
||||
* Helper class to help write filters that manipulates the output stream. This
|
||||
* is because normally, the <code>ServletOutputStream</code> cannot be
|
||||
* modified after a resource has committed it.
|
||||
*
|
||||
* Note: This code was adapted from the Filter tutorial found
|
||||
* {@link <a href="http://www.orionserver.com/tutorials/filters/lesson3/">
|
||||
* here</a>}
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: FilterServletOutputStream.java,v 1.1 2003/03/22 16:39:10 vmassol Exp $
|
||||
*
|
||||
* @see GenericResponseWrapper
|
||||
*/
|
||||
public class FilterServletOutputStream extends ServletOutputStream {
|
||||
/**
|
||||
* The stream where all the data will get written to
|
||||
*/
|
||||
private DataOutputStream stream;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param theOutput the output stream that we wrap in a
|
||||
* <code>DataOutputStream</code> in order to hold the data
|
||||
*/
|
||||
public FilterServletOutputStream(OutputStream theOutput) {
|
||||
stream = new DataOutputStream(theOutput);
|
||||
}
|
||||
|
||||
// Overriden methods from ServletOutputStream ----------------------------
|
||||
|
||||
/**
|
||||
* @see ServletOutputStream#write(int)
|
||||
*/
|
||||
public void write(int b) throws IOException {
|
||||
stream.write(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ServletOutputStream#write(byte[])
|
||||
*/
|
||||
public void write(byte[] b) throws IOException {
|
||||
stream.write(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ServletOutputStream#write(byte[], int, int)
|
||||
*/
|
||||
public void write(byte[] b, int off, int len) throws IOException {
|
||||
stream.write(b, off, len);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
package org.apache.maven.cactus.sample.util;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletResponseWrapper;
|
||||
|
||||
/**
|
||||
* Wrapper around a <code>HttpServletResponse</code> that we use to easily
|
||||
* write filters that manipulate the output stream. Indeed, we cannot pass
|
||||
* the output stream of our filter direectly to the next filter in the chain
|
||||
* because then we won't be able to write to it (the response will have been
|
||||
* committed). Instead, we pass this wrapper class and then copy its data
|
||||
* to our filter output stream.
|
||||
*
|
||||
* Note: This code was adapted from the Filter tutorial found
|
||||
* {@link <a href="http://www.orionserver.com/tutorials/filters/lesson3/">
|
||||
* here</a>}
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: GenericResponseWrapper.java,v 1.1 2003/03/22 16:39:10 vmassol Exp $
|
||||
*
|
||||
* @see FilterServletOutputStream
|
||||
*/
|
||||
public class GenericResponseWrapper extends HttpServletResponseWrapper {
|
||||
/**
|
||||
* Holder for the output data
|
||||
*/
|
||||
private ByteArrayOutputStream output;
|
||||
|
||||
/**
|
||||
* Save the content length so that we can query it at a later time
|
||||
* (otherwise it would not be possible as
|
||||
* <code>HttpServletResponseWrapper</code> does not have a method to get
|
||||
* the content length).
|
||||
*/
|
||||
private int contentLength;
|
||||
|
||||
/**
|
||||
* Save the content type so that we can query it at a later time
|
||||
* (otherwise it would not be possible as
|
||||
* <code>HttpServletResponseWrapper</code> does not have a method to get
|
||||
* the content type).
|
||||
*/
|
||||
private String contentType;
|
||||
|
||||
// Constructors ----------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @param theResponse the wrapped response object
|
||||
*/
|
||||
public GenericResponseWrapper(HttpServletResponse theResponse) {
|
||||
super(theResponse);
|
||||
this.output = new ByteArrayOutputStream();
|
||||
}
|
||||
|
||||
// New methods -----------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @return the data sent to the output stream
|
||||
*/
|
||||
public byte[] getData() {
|
||||
return output.toByteArray();
|
||||
}
|
||||
|
||||
// Overridden methods ----------------------------------------------------
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#getOutputStream()
|
||||
*/
|
||||
public ServletOutputStream getOutputStream() {
|
||||
return new FilterServletOutputStream(this.output);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#setContentLength(int)
|
||||
*/
|
||||
public void setContentLength(int theLength) {
|
||||
this.contentLength = theLength;
|
||||
super.setContentLength(theLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#getContentLength()
|
||||
*/
|
||||
public int getContentLength() {
|
||||
return this.contentLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#setContentType(String)
|
||||
*/
|
||||
public void setContentType(String theType) {
|
||||
this.contentType = theType;
|
||||
super.setContentType(theType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#getContentType()
|
||||
*/
|
||||
public String getContentType() {
|
||||
return this.contentType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see HttpServletResponseWrapper#getWriter()
|
||||
*/
|
||||
public PrintWriter getWriter() {
|
||||
return new PrintWriter(getOutputStream(), true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import javax.servlet.jsp.tagext.BodyContent;
|
||||
import javax.servlet.jsp.tagext.BodyTag;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import org.apache.cactus.JspTestCase;
|
||||
import org.apache.cactus.WebResponse;
|
||||
|
||||
/**
|
||||
* Tests of the <code>SampleBodyTag</code> class.
|
||||
*
|
||||
* @author <a href="mailto:nick@eblox.com">Nciholas Lesiecki</a>
|
||||
*
|
||||
* @version $Id: TestSampleBodyTag.java,v 1.1 2003/03/22 16:39:09 vmassol Exp $
|
||||
*/
|
||||
public class TestSampleBodyTag extends JspTestCase {
|
||||
private SampleBodyTag tag;
|
||||
private BodyContent tagContent;
|
||||
|
||||
/**
|
||||
* Defines the testcase name for JUnit.
|
||||
*
|
||||
* @param theName the testcase's name.
|
||||
*/
|
||||
public TestSampleBodyTag(String theName)
|
||||
{
|
||||
super(theName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the tests.
|
||||
*
|
||||
* @param theArgs the arguments. Not used
|
||||
*/
|
||||
public static void main(String[] theArgs) {
|
||||
junit.swingui.TestRunner.main(
|
||||
new String[] { TestSampleBodyTag.class.getName() });
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a test suite (<code>TestSuite</code>) that includes all methods
|
||||
* starting with "test"
|
||||
*/
|
||||
public static Test suite() {
|
||||
// All methods starting with "test" will be executed in the test suite.
|
||||
return new TestSuite(TestSampleBodyTag.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* In addition to creating the tag instance and adding the pageContext to
|
||||
* it, this method creates a BodyContent object and passes it to the tag.
|
||||
*/
|
||||
public void setUp() {
|
||||
this.tag = new SampleBodyTag();
|
||||
this.tag.setPageContext(this.pageContext);
|
||||
|
||||
//create the BodyContent object and call the setter on the tag instance
|
||||
this.tagContent = this.pageContext.pushBody();
|
||||
this.tag.setBodyContent(this.tagContent);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Sets the replacement target and replacement String on the tag, then calls
|
||||
* doAfterBody(). Most of the assertion work is done in endReplacement().
|
||||
*/
|
||||
public void testReplacement() throws Exception
|
||||
{
|
||||
//set the target and the String to replace it with
|
||||
this.tag.setTarget("@target@");
|
||||
this.tag.setReplacement("replacement");
|
||||
|
||||
//add the tag's body by writing to the BodyContent object created in
|
||||
//setUp()
|
||||
this.tagContent.println("@target@ is now @target@");
|
||||
this.tagContent.println("@target@_@target@");
|
||||
|
||||
//none of the other life cycle methods need to be implemented, so they
|
||||
//do not need to be called.
|
||||
int result = this.tag.doAfterBody();
|
||||
|
||||
assertEquals(BodyTag.SKIP_BODY, result);
|
||||
}
|
||||
|
||||
public void tearDown()
|
||||
{
|
||||
//necessary for tag to output anything on most servlet engines.
|
||||
this.pageContext.popBody();
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that the target String has indeed been replaced in the tag's
|
||||
* body.
|
||||
*/
|
||||
public void endReplacement(WebResponse theResponse)
|
||||
{
|
||||
String content = theResponse.getText();
|
||||
|
||||
assertTrue("Response should have contained the ["
|
||||
+ "replacement is now replacement] string",
|
||||
content.indexOf("replacement is now replacement") > -1);
|
||||
assertTrue("Response should have contained the ["
|
||||
+ "replacement_replacement] string",
|
||||
content.indexOf("replacement") > -1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import org.apache.cactus.FilterTestCase;
|
||||
import org.apache.cactus.WebResponse;
|
||||
|
||||
/**
|
||||
* Tests of the <code>SampleFilter</code> filter class.
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: TestSampleFilter.java,v 1.1 2003/03/22 16:39:09 vmassol Exp $
|
||||
*/
|
||||
public class TestSampleFilter extends FilterTestCase
|
||||
{
|
||||
/**
|
||||
* Defines the testcase name for JUnit.
|
||||
*
|
||||
* @param theName the testcase's name.
|
||||
*/
|
||||
public TestSampleFilter(String theName)
|
||||
{
|
||||
super(theName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the tests.
|
||||
*
|
||||
* @param theArgs the arguments. Not used
|
||||
*/
|
||||
public static void main(String[] theArgs)
|
||||
{
|
||||
junit.swingui.TestRunner.main(
|
||||
new String[] { TestSampleFilter.class.getName() });
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a test suite (<code>TestSuite</code>) that includes all methods
|
||||
* starting with "test"
|
||||
*/
|
||||
public static Test suite()
|
||||
{
|
||||
// All methods starting with "test" will be executed in the test suite.
|
||||
return new TestSuite(TestSampleFilter.class);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test that adding a header to the output stream is working fine when
|
||||
* a header parameter is defined.
|
||||
*
|
||||
* @exception ServletException on test failure
|
||||
* @exception IOException on test failure
|
||||
*/
|
||||
public void testAddHeaderParamOK() throws ServletException, IOException
|
||||
{
|
||||
SampleFilter filter = new SampleFilter();
|
||||
|
||||
config.setInitParameter("header", "<h1>header</h1>");
|
||||
filter.init(config);
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
filter.addHeader(baos);
|
||||
|
||||
assertEquals("<h1>header</h1>", baos.toString());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test that adding a header to the output stream is working fine
|
||||
* (i.e. nothing gets written) when no header parameter is defined.
|
||||
*
|
||||
* @exception ServletException on test failure
|
||||
* @exception IOException on test failure
|
||||
*/
|
||||
public void testAddHeaderParamNotDefined() throws ServletException,
|
||||
IOException
|
||||
{
|
||||
SampleFilter filter = new SampleFilter();
|
||||
|
||||
filter.init(config);
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
filter.addHeader(baos);
|
||||
|
||||
assertEquals("", baos.toString());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test that adding a footer to the output stream is working fine when
|
||||
* a footer parameter is defined.
|
||||
*
|
||||
* @exception ServletException on test failure
|
||||
* @exception IOException on test failure
|
||||
*/
|
||||
public void testAddFooterParamOK() throws ServletException, IOException
|
||||
{
|
||||
SampleFilter filter = new SampleFilter();
|
||||
|
||||
config.setInitParameter("footer", "<h1>footer</h1>");
|
||||
filter.init(config);
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
filter.addFooter(baos);
|
||||
|
||||
assertEquals("<h1>footer</h1>", baos.toString());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test that adding a footer to the output stream is working fine
|
||||
* (i.e. nothing gets written) when no footer parameter is defined.
|
||||
*
|
||||
* @exception ServletException on test failure
|
||||
* @exception IOException on test failure
|
||||
*/
|
||||
public void testAddFooterParamNotDefined() throws ServletException,
|
||||
IOException
|
||||
{
|
||||
SampleFilter filter = new SampleFilter();
|
||||
|
||||
filter.init(config);
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
filter.addFooter(baos);
|
||||
|
||||
assertEquals("", baos.toString());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test that the filter does correctly add a header and footer to
|
||||
* any requets it is serving.
|
||||
*
|
||||
* @exception ServletException on test failure
|
||||
* @exception IOException on test failure
|
||||
*/
|
||||
public void testDoFilterOK() throws ServletException, IOException
|
||||
{
|
||||
SampleFilter filter = new SampleFilter();
|
||||
|
||||
config.setInitParameter("header", "<h1>header</h1>");
|
||||
config.setInitParameter("footer", "<h1>footer</h1>");
|
||||
filter.init(config);
|
||||
|
||||
FilterChain mockFilterChain = new FilterChain()
|
||||
{
|
||||
public void doFilter(ServletRequest theRequest,
|
||||
ServletResponse theResponse) throws IOException,
|
||||
ServletException
|
||||
{
|
||||
PrintWriter writer = theResponse.getWriter();
|
||||
|
||||
writer.print("<p>some content</p>");
|
||||
writer.close();
|
||||
}
|
||||
|
||||
public void init(FilterConfig theConfig)
|
||||
{
|
||||
}
|
||||
|
||||
public void destroy()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
filter.doFilter(request, response, mockFilterChain);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the filter does correctly add a header and footer to
|
||||
* any requets it is serving.
|
||||
*
|
||||
* @param theResponse the response from the server side.
|
||||
*/
|
||||
public void endDoFilterOK(WebResponse theResponse)
|
||||
{
|
||||
assertEquals("<h1>header</h1><p>some content</p><h1>footer</h1>",
|
||||
theResponse.getText());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package org.apache.maven.cactus.sample;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2002 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 acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" 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",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import org.apache.cactus.ServletTestCase;
|
||||
import org.apache.cactus.WebRequest;
|
||||
|
||||
public class TestSampleServlet extends ServletTestCase
|
||||
{
|
||||
public TestSampleServlet(String testName)
|
||||
{
|
||||
super(testName);
|
||||
}
|
||||
|
||||
public void testIsAuthenticatedAuthenticated()
|
||||
{
|
||||
SampleServlet servlet = new SampleServlet();
|
||||
|
||||
session.setAttribute("authenticated", "true");
|
||||
|
||||
assertTrue(servlet.isAuthenticated(request));
|
||||
}
|
||||
|
||||
public void testIsAuthenticatedNotAuthenticated()
|
||||
{
|
||||
SampleServlet servlet = new SampleServlet();
|
||||
|
||||
assertTrue(!servlet.isAuthenticated(request));
|
||||
}
|
||||
|
||||
public void beginIsAuthenticatedNoSession(WebRequest request)
|
||||
{
|
||||
request.setAutomaticSession(false);
|
||||
}
|
||||
|
||||
public void testIsAuthenticatedNoSession()
|
||||
{
|
||||
SampleServlet servlet = new SampleServlet();
|
||||
|
||||
assertTrue(!servlet.isAuthenticated(request));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user