vmassol 2003/03/22 08:39:10 Added: src/plugins-build/cactus/sample/src/test-cactus/org/apache/maven/cactus/sample TestSampleServlet.java TestSampleFilter.java TestSampleBodyTag.java src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/util FilterServletOutputStream.java GenericResponseWrapper.java src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample SampleServlet.java SampleFilter.java SampleBodyTag.java src/plugins-build/cactus/sample .cvsignore project.xml Log: Move the sample project at the root (it is not a plugin resource). Revision Changes Path 1.1 maven/src/plugins-build/cactus/sample/src/test-cactus/org/apache/maven/cactus/sample/TestSampleServlet.java Index: TestSampleServlet.java =================================================================== 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 [EMAIL PROTECTED] * * 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)); } } 1.1 maven/src/plugins-build/cactus/sample/src/test-cactus/org/apache/maven/cactus/sample/TestSampleFilter.java Index: TestSampleFilter.java =================================================================== 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 [EMAIL PROTECTED] * * 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:[EMAIL PROTECTED]">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()); } } 1.1 maven/src/plugins-build/cactus/sample/src/test-cactus/org/apache/maven/cactus/sample/TestSampleBodyTag.java Index: TestSampleBodyTag.java =================================================================== 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 [EMAIL PROTECTED] * * 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:[EMAIL PROTECTED]">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("@[EMAIL PROTECTED]@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); } } 1.1 maven/src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/util/FilterServletOutputStream.java Index: FilterServletOutputStream.java =================================================================== 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 [EMAIL PROTECTED] * * 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 * [EMAIL PROTECTED] <a href="http://www.orionserver.com/tutorials/filters/lesson3/"> * here</a>} * * @author <a href="mailto:[EMAIL PROTECTED]">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); } } 1.1 maven/src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/util/GenericResponseWrapper.java Index: GenericResponseWrapper.java =================================================================== 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 [EMAIL PROTECTED] * * 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 * [EMAIL PROTECTED] <a href="http://www.orionserver.com/tutorials/filters/lesson3/"> * here</a>} * * @author <a href="mailto:[EMAIL PROTECTED]">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); } } 1.1 maven/src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/SampleServlet.java Index: SampleServlet.java =================================================================== 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 [EMAIL PROTECTED] * * 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:[EMAIL PROTECTED]">Vincent Massol</a> * @author <a href="mailto:[EMAIL PROTECTED]">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(); } } 1.1 maven/src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/SampleFilter.java Index: SampleFilter.java =================================================================== 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 [EMAIL PROTECTED] * * 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:[EMAIL PROTECTED]">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() { } } 1.1 maven/src/plugins-build/cactus/sample/src/java/org/apache/maven/cactus/sample/SampleBodyTag.java Index: SampleBodyTag.java =================================================================== 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 [EMAIL PROTECTED] * * 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:[EMAIL PROTECTED]">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; } } 1.1 maven/src/plugins-build/cactus/sample/.cvsignore Index: .cvsignore =================================================================== target cactus_client.log maven.log project.properties 1.1 maven/src/plugins-build/cactus/sample/project.xml Index: project.xml =================================================================== <?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:[EMAIL PROTECTED]:/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>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]