You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by vm...@apache.org on 2003/03/22 17:39:10 UTC

cvs commit: maven/src/plugins-build/cactus/sample .cvsignore project.xml

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 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));
      }
  
  }
  
  
  
  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 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());
      }
  }
  
  
  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 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);
      }
  }
  
  
  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 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);
      }
  }
  
  
  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 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);
      }
  }
  
  
  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 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();
      }
  }
  
  
  
  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 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() {
      }
  }
  
  
  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 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;
      }
  }
  
  
  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: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>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org