vmassol     01/04/19 16:22:10

  Modified:    cactus/src/framework/share/org/apache/commons/cactus
                        JspTestCase.java ServletTestCase.java
               cactus/src/framework/share/org/apache/commons/cactus/client
                        AbstractHttpClient.java JspHttpClient.java
                        ServletHttpClient.java
  Added:       cactus/src/framework/share/org/apache/commons/cactus
                        AbstractTestCase.java
  Log:
  some minor refactorings
  
  Revision  Changes    Path
  1.2       +1 -2      
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/JspTestCase.java
  
  Index: JspTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/JspTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JspTestCase.java  2001/04/09 11:52:36     1.1
  +++ JspTestCase.java  2001/04/19 23:22:09     1.2
  @@ -60,8 +60,7 @@
   /**
    * Test classes that need access to valid JSP implicit objects (such as the
    * page context, the output jsp writer, the HTTP request, ...) must subclass
  - * this class. It also provides support for <code>beginXXX</code> and
  - * <code>endXXX()</code> methods.
  + * this class.
    *
    * @version @version@
    */
  
  
  
  1.3       +2 -230    
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/ServletTestCase.java
  
  Index: ServletTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/ServletTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ServletTestCase.java      2001/04/14 15:47:30     1.2
  +++ ServletTestCase.java      2001/04/19 23:22:10     1.3
  @@ -66,29 +66,13 @@
   /**
    * Test classes that need access to valid Servlet implicit objects (such as the
    * the HTTP request, the HTTP response, the servlet config, ...) must subclass
  - * this class. It also provides support for <code>beginXXX</code> and
  - * <code>endXXX()</code> methods.
  + * this class.
    *
    * @version @version@
    */
  -public class ServletTestCase extends TestCase
  +public class ServletTestCase extends AbstractTestCase
   {
       /**
  -     * The prefix of a test method.
  -     */
  -    protected final static String TEST_METHOD_PREFIX = "test";
  -
  -    /**
  -     * The prefix of a begin test method.
  -     */
  -    protected final static String BEGIN_METHOD_PREFIX = "begin";
  -
  -    /**
  -     * The prefix of an end test method.
  -     */
  -    protected final static String END_METHOD_PREFIX = "end";
  -
  -    /**
        * Valid <code>HttpServletRequest</code> object that you can access from
        * the <code>testXXX()</code>, <code>setUp</code> and <code>tearDown()</code>
        * methods. If you try to access it from either the
  @@ -125,15 +109,6 @@
       public ServletConfigWrapper config;
   
       /**
  -     * The name of the current test method being executed. This name is valid
  -     * both on the client side and on the server side, meaning you can call it
  -     * from a <code>testXXX()</code>, <code>setUp()</code> or
  -     * <code>tearDown()</code> method, as well as from <code>beginXXX()</code>
  -     * and <code>endXXX()</code> methods.
  -     */
  -    public String currentTestMethod;
  -
  -    /**
        * Constructs a JUnit test case with the given name.
        *
        * @param theName the name of the test case
  @@ -141,163 +116,9 @@
       public ServletTestCase(String theName)
       {
           super(theName);
  -        currentTestMethod = name();
  -    }
  -
  -    /**
  -     * @return the name of the test method to call without the
  -     *         TEST_METHOD_PREFIX prefix
  -     */
  -    private String getBaseMethodName()
  -    {
  -        // Sanity check
  -        if (!name().startsWith(TEST_METHOD_PREFIX)) {
  -            // qqq throw new InvalidMethodNameException
  -            throw new RuntimeException("bad name [" + name() + "]. It should start 
with [" + TEST_METHOD_PREFIX + "].");
  -        }
  -
  -        return name().substring(TEST_METHOD_PREFIX.length());
  -    }
  -
  -    /**
  -     * @return the name of the test begin method to call that initialize the
  -     *         test by initializing the <code>ServletTestRequest</code> object
  -     *         for the test case.
  -     */
  -    protected String getBeginMethodName()
  -    {
  -        return BEGIN_METHOD_PREFIX + getBaseMethodName();
  -    }
  -
  -    /**
  -     * @return the name of the test end method to call when the test has been
  -     *         run on the server. It can be used to verify returned headers,
  -     *         cookies, ...
  -     */
  -    protected String getEndMethodName()
  -    {
  -        return END_METHOD_PREFIX + getBaseMethodName();
  -    }
  -
  -    /**
  -     * Call the test case begin method
  -     *
  -     * @param theRequest the <code>ServletTestRequest</code> object to
  -     *                   pass to the begin method.
  -     */
  -    protected void callBeginMethod(ServletTestRequest theRequest) throws Throwable
  -    {
  -        // First, verify if a begin method exist. If one is found, verify if
  -        // it has the correct signature. If not, send a warning.
  -        Method[] methods = getClass().getMethods();
  -        for (int i = 0; i < methods.length; i++) {
  -            if (methods[i].getName().equals(getBeginMethodName())) {
  -
  -                // Check return type
  -                if (!methods[i].getReturnType().getName().equals("void")) {
  -                    fail("The begin method [" + methods[i].getName() +
  -                        "] should return void and not [" +
  -                        methods[i].getReturnType().getName() + "]");
  -                }
  -
  -                // Check if method is public
  -                if (!Modifier.isPublic(methods[i].getModifiers())) {
  -                   fail("Method [" + methods[i].getName() + "] should be declared 
public");
  -                }
  -
  -                // Check parameters
  -                Class[] parameters = methods[i].getParameterTypes();
  -                if ((parameters.length != 1) || 
(!parameters[0].equals(ServletTestRequest.class))) {
  -                    fail("The begin method [" + methods[i].getName() +
  -                    "] must accept a single parameter of type [" +
  -                    ServletTestRequest.class.getName() + "]");
  -                }
  -
  -                try {
  -
  -                    methods[i].invoke(this, new Object[] { theRequest });
  -
  -                } catch (InvocationTargetException e) {
  -                    e.fillInStackTrace();
  -                    throw e.getTargetException();
  -                }
  -                catch (IllegalAccessException e) {
  -                    e.fillInStackTrace();
  -                    throw e;
  -                }
  -
  -            }
  -        }
       }
   
       /**
  -     * Call the test case end method
  -     *
  -     * @param theConnection the <code>HttpURLConnection</code> that was used
  -     *        to open the connection to the redirection servlet. The response
  -     *        codes, headers, cookies can be checked using the get methods of
  -     *        this object.
  -     */
  -    protected void callEndMethod(HttpURLConnection theConnection) throws Throwable
  -    {
  -        // First, verify if an end method exist. If one is found, verify if
  -        // it has the correct signature. If not, send a warning.
  -        Method[] methods = getClass().getMethods();
  -        for (int i = 0; i < methods.length; i++) {
  -            if (methods[i].getName().equals(getEndMethodName())) {
  -
  -                // Check return type
  -                if (!methods[i].getReturnType().getName().equals("void")) {
  -                    fail("The end method [" + methods[i].getName() +
  -                        "] should return void and not [" +
  -                        methods[i].getReturnType().getName() + "]");
  -                }
  -
  -                // Check if method is public
  -                if (!Modifier.isPublic(methods[i].getModifiers())) {
  -                   fail("Method [" + methods[i].getName() + "] should be declared 
public");
  -                }
  -
  -                // Check parameters
  -                Class[] parameters = methods[i].getParameterTypes();
  -                if ((parameters.length != 1) || 
(!parameters[0].equals(HttpURLConnection.class))) {
  -                    fail("The end method [" + methods[i].getName() +
  -                    "] must accept a single parameter of type [" +
  -                    HttpURLConnection.class.getName() + "]");
  -                }
  -
  -                try {
  -
  -                    methods[i].invoke(this, new Object[] { theConnection });
  -
  -                } catch (InvocationTargetException e) {
  -                    e.fillInStackTrace();
  -                    throw e.getTargetException();
  -                }
  -                catch (IllegalAccessException e) {
  -                    e.fillInStackTrace();
  -                    throw e;
  -                }
  -
  -            }
  -        }
  -    }
  -
  -    /**
  -     * Runs the bare test sequence. This method is overridden from the
  -     * JUnit <code>TestCase</code> class in order to prevent the latter
  -     * to call the <code>setUp()</code> and <code>tearDown()</code> methods
  -     * which, in our case, need to be ran in the servlet engine by the
  -     * servlet redirector class.
  -     *
  -     * @exception Throwable if any exception is thrown
  -     */
  -    public void runBare() throws Throwable
  -    {
  -        runTest();
  -    }
  -
  -    /**
        * Runs a test case. This method is overriden from the JUnit
        * <code>TestCase</code> class in order to seamlessly call the
        * Cactus redirection servlet.
  @@ -339,54 +160,5 @@
           connection.getInputStream().close();
           //connection.disconnect();
        }
  -
  -     /**
  -      * Run the test that was specified in the constructor on the server side,
  -     * calling <code>setUp()</code> and <code>tearDown()</code>.
  -      */
  -    public void runBareServerTest() throws Throwable
  -    {
  -             setUp();
  -             try {
  -            runServerTest();
  -             }
  -             finally {
  -             tearDown();
  -             }
  -     }
  -
  -     /**
  -      * Run the test that was specified in the constructor on the server side,
  -      */
  -     protected void runServerTest() throws Throwable
  -    {
  -             Method runMethod= null;
  -             try {
  -                     // use getMethod to get all public inherited
  -                     // methods. getDeclaredMethods returns all
  -                     // methods of this class but excludes the
  -                     // inherited ones.
  -                     runMethod = getClass().getMethod(currentTestMethod, new 
Class[0]);
  -             } catch (NoSuchMethodException e) {
  -            fail("Method [" + currentTestMethod +
  -                "()] does not exist for class [" + 
  -                this.getClass().getName() + "].");
  -             }
  -             if (runMethod != null && !Modifier.isPublic(runMethod.getModifiers())) 
{
  -                     fail("Method [" + currentTestMethod + "()] should be public");
  -             }
  -
  -             try {
  -                     runMethod.invoke(this, new Class[0]);
  -             }
  -             catch (InvocationTargetException e) {
  -                     e.fillInStackTrace();
  -                     throw e.getTargetException();
  -             }
  -             catch (IllegalAccessException e) {
  -                     e.fillInStackTrace();
  -                     throw e;
  -             }
  -     }
        
   }
  
  
  
  1.1                  
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/AbstractTestCase.java
  
  Index: AbstractTestCase.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.commons.cactus;
  
  import java.lang.reflect.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  import java.net.*;
  
  import junit.framework.*;
  
  import org.apache.commons.cactus.client.*;
  import org.apache.commons.cactus.server.*;
  
  /**
   * Abstract class that specific test cases (<code>ServletTestCase</code>,
   * <code>FilterTestCase</code>, ...) must extend. Provides generally useful
   * methods fro writing a specific test case.
   *
   * @version @version@
   */
  public abstract class AbstractTestCase extends TestCase
  {
      /**
       * The prefix of a test method.
       */
      protected final static String TEST_METHOD_PREFIX = "test";
  
      /**
       * The prefix of a begin test method.
       */
      protected final static String BEGIN_METHOD_PREFIX = "begin";
  
      /**
       * The prefix of an end test method.
       */
      protected final static String END_METHOD_PREFIX = "end";
  
      /**
       * The name of the current test method being executed. This name is valid
       * both on the client side and on the server side, meaning you can call it
       * from a <code>testXXX()</code>, <code>setUp()</code> or
       * <code>tearDown()</code> method, as well as from <code>beginXXX()</code>
       * and <code>endXXX()</code> methods.
       */
      public String currentTestMethod;
  
      /**
       * Constructs a JUnit test case with the given name.
       *
       * @param theName the name of the test case
       */
      public AbstractTestCase(String theName)
      {
          super(theName);
          currentTestMethod = name();
      }
  
      /**
       * @return the name of the test method to call without the
       *         TEST_METHOD_PREFIX prefix
       */
      private String getBaseMethodName()
      {
          // Sanity check
          if (!name().startsWith(TEST_METHOD_PREFIX)) {
              throw new RuntimeException("bad name [" + name() +
                  "]. It should start with [" + TEST_METHOD_PREFIX + "].");
          }
  
          return name().substring(TEST_METHOD_PREFIX.length());
      }
  
      /**
       * @return the name of the test begin method to call that initialize the
       *         test by initializing the <code>ServletTestRequest</code> object
       *         for the test case.
       */
      protected String getBeginMethodName()
      {
          return BEGIN_METHOD_PREFIX + getBaseMethodName();
      }
  
      /**
       * @return the name of the test end method to call when the test has been
       *         run on the server. It can be used to verify returned headers,
       *         cookies, ...
       */
      protected String getEndMethodName()
      {
          return END_METHOD_PREFIX + getBaseMethodName();
      }
  
      /**
       * Call the test case begin method
       *
       * @param theRequest the <code>ServletTestRequest</code> object to
       *                   pass to the begin method.
       */
      protected void callBeginMethod(ServletTestRequest theRequest) throws Throwable
      {
          // First, verify if a begin method exist. If one is found, verify if
          // it has the correct signature. If not, send a warning.
          Method[] methods = getClass().getMethods();
          for (int i = 0; i < methods.length; i++) {
              if (methods[i].getName().equals(getBeginMethodName())) {
  
                  // Check return type
                  if (!methods[i].getReturnType().getName().equals("void")) {
                      fail("The begin method [" + methods[i].getName() +
                          "] should return void and not [" +
                          methods[i].getReturnType().getName() + "]");
                  }
  
                  // Check if method is public
                  if (!Modifier.isPublic(methods[i].getModifiers())) {
                     fail("Method [" + methods[i].getName() + 
                          "] should be declared public");
                  }
  
                  // Check parameters
                  Class[] parameters = methods[i].getParameterTypes();
                  if ((parameters.length != 1) || 
                      (!parameters[0].equals(ServletTestRequest.class))) {
  
                      fail("The begin method [" + methods[i].getName() +
                          "] must accept a single parameter of type [" +
                          ServletTestRequest.class.getName() + "]");
                  }
  
                  try {
  
                      methods[i].invoke(this, new Object[] { theRequest });
  
                  } catch (InvocationTargetException e) {
                      e.fillInStackTrace();
                      throw e.getTargetException();
                  }
                  catch (IllegalAccessException e) {
                      e.fillInStackTrace();
                      throw e;
                  }
  
              }
          }
      }
  
      /**
       * Call the test case end method
       *
       * @param theConnection the <code>HttpURLConnection</code> that was used
       *        to open the connection to the redirection servlet. The response
       *        codes, headers, cookies can be checked using the get methods of
       *        this object.
       */
      protected void callEndMethod(HttpURLConnection theConnection) throws Throwable
      {
          // First, verify if an end method exist. If one is found, verify if
          // it has the correct signature. If not, send a warning.
          Method[] methods = getClass().getMethods();
          for (int i = 0; i < methods.length; i++) {
              if (methods[i].getName().equals(getEndMethodName())) {
  
                  // Check return type
                  if (!methods[i].getReturnType().getName().equals("void")) {
                      fail("The end method [" + methods[i].getName() +
                          "] should return void and not [" +
                          methods[i].getReturnType().getName() + "]");
                  }
  
                  // Check if method is public
                  if (!Modifier.isPublic(methods[i].getModifiers())) {
                      fail("Method [" + methods[i].getName() + 
                          "] should be declared public");
                  }
  
                  // Check parameters
                  Class[] parameters = methods[i].getParameterTypes();
                  if ((parameters.length != 1) || 
                      (!parameters[0].equals(HttpURLConnection.class))) {
  
                      fail("The end method [" + methods[i].getName() +
                          "] must accept a single parameter of type [" +
                          HttpURLConnection.class.getName() + "]");
                  }
  
                  try {
  
                      methods[i].invoke(this, new Object[] { theConnection });
  
                  } catch (InvocationTargetException e) {
                      e.fillInStackTrace();
                      throw e.getTargetException();
                  }
                  catch (IllegalAccessException e) {
                      e.fillInStackTrace();
                      throw e;
                  }
  
              }
          }
      }
  
      /**
       * Runs the bare test sequence. This method is overridden from the
       * JUnit <code>TestCase</code> class in order to prevent the latter
       * to call the <code>setUp()</code> and <code>tearDown()</code> methods
       * which, in our case, need to be ran in the servlet engine by the
       * servlet redirector class.
       *
       * @exception Throwable if any exception is thrown
       */
      public void runBare() throws Throwable
      {
          runTest();
      }
  
      /**
       * Runs a test case. This method is overriden from the JUnit
       * <code>TestCase</code> class in order to seamlessly call the
       * Cactus redirection servlet.
       */
      protected abstract void runTest() throws Throwable;
  
        /**
         * Run the test that was specified in the constructor on the server side,
       * calling <code>setUp()</code> and <code>tearDown()</code>.
         */
      public void runBareServerTest() throws Throwable
      {
                setUp();
                try {
              runServerTest();
                }
                finally {
                tearDown();
                }
        }
  
        /**
         * Run the test that was specified in the constructor on the server side,
         */
        protected void runServerTest() throws Throwable
      {
                Method runMethod= null;
                try {
                        // use getMethod to get all public inherited
                        // methods. getDeclaredMethods returns all
                        // methods of this class but excludes the
                        // inherited ones.
                        runMethod = getClass().getMethod(currentTestMethod, new 
Class[0]);
                } catch (NoSuchMethodException e) {
              fail("Method [" + currentTestMethod +
                  "()] does not exist for class [" + 
                  this.getClass().getName() + "].");
                }
                if (runMethod != null && !Modifier.isPublic(runMethod.getModifiers())) 
{
                        fail("Method [" + currentTestMethod + "()] should be public");
                }
  
                try {
                        runMethod.invoke(this, new Class[0]);
                }
                catch (InvocationTargetException e) {
                        e.fillInStackTrace();
                        throw e.getTargetException();
                }
                catch (IllegalAccessException e) {
                        e.fillInStackTrace();
                        throw e;
                }
        }
        
  }
  
  
  
  1.2       +0 -10     
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/AbstractHttpClient.java
  
  Index: AbstractHttpClient.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/AbstractHttpClient.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractHttpClient.java   2001/04/09 11:52:37     1.1
  +++ AbstractHttpClient.java   2001/04/19 23:22:10     1.2
  @@ -70,16 +70,6 @@
   public abstract class AbstractHttpClient
   {
       /**
  -     * Default URL to call the <code>jspRedirector</code> JSP.
  -     */
  -    protected final static String m_JspRedirectorURL = 
PropertyResourceBundle.getBundle("cactus").getString("cactus.jspRedirectorURL");
  -
  -    /**
  -     * Default URL to call the <code>ServletRedirector</code> servlet.
  -     */
  -    protected final static String m_ServletRedirectorURL = 
PropertyResourceBundle.getBundle("cactus").getString("cactus.servletRedirectorURL");
  -
  -    /**
        * Calls the test method indirectly by calling the Redirector servlet and
        * then open a second HTTP connection to retrieve the test results.
        *
  
  
  
  1.2       +6 -0      
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/JspHttpClient.java
  
  Index: JspHttpClient.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/JspHttpClient.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JspHttpClient.java        2001/04/09 11:52:37     1.1
  +++ JspHttpClient.java        2001/04/19 23:22:10     1.2
  @@ -73,6 +73,12 @@
   public class JspHttpClient extends AbstractHttpClient
   {
       /**
  +     * Default URL to call the <code>jspRedirector</code> JSP.
  +     */
  +    protected final static String m_JspRedirectorURL = 
  +        
PropertyResourceBundle.getBundle("cactus").getString("cactus.jspRedirectorURL");
  +
  +    /**
        * Calls the test method indirectly by calling the Redirector JSP and
        * then open a second HTTP connection to the Servlet Redirector to retrieve
        * the test results.
  
  
  
  1.2       +6 -0      
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/ServletHttpClient.java
  
  Index: ServletHttpClient.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/client/ServletHttpClient.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ServletHttpClient.java    2001/04/09 11:52:37     1.1
  +++ ServletHttpClient.java    2001/04/19 23:22:10     1.2
  @@ -73,6 +73,12 @@
   public class ServletHttpClient extends AbstractHttpClient
   {
       /**
  +     * Default URL to call the <code>ServletRedirector</code> servlet.
  +     */
  +    protected final static String m_ServletRedirectorURL = 
  +        
PropertyResourceBundle.getBundle("cactus").getString("cactus.servletRedirectorURL");
  +
  +    /**
        * Calls the test method indirectly by calling the Redirector servlet and
        * then open a second HTTP connection to retrieve the test results.
        *
  
  
  

Reply via email to