joerg       2003/08/20 19:11:59

  Modified:    src/java/org/apache/cocoon/components/language/markup/xsp
                        SOAPHelper.java
  Log:
  Updated HttpClient to the latest version 2.0 RC 1. Backported changes to SOAPHelper 
from Cocoon 2.1.
  
  Revision  Changes    Path
  1.2       +42 -49    
cocoon-2.0/src/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java
  
  Index: SOAPHelper.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.0/src/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SOAPHelper.java   9 Mar 2003 00:01:56 -0000       1.1
  +++ SOAPHelper.java   21 Aug 2003 02:11:59 -0000      1.2
  @@ -50,6 +50,11 @@
   */
   package org.apache.cocoon.components.language.markup.xsp;
   
  +import java.io.InputStreamReader;
  +import java.io.Reader;
  +import java.net.MalformedURLException;
  +import java.net.URL;
  +
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
   
  @@ -62,13 +67,8 @@
   import org.apache.commons.httpclient.HttpConnection;
   import org.apache.commons.httpclient.HttpState;
   import org.apache.commons.httpclient.methods.PostMethod;
  -import org.xml.sax.InputSource;
   
  -import java.io.InputStreamReader;
  -import java.io.Reader;
  -import java.net.MalformedURLException;
  -import java.net.URL;
  -import java.util.HashMap;
  +import org.xml.sax.InputSource;
   
   /**
    * Helper for the SOAP logicsheet.
  @@ -115,51 +115,46 @@
                   conn = new HttpConnection(host, port);
               }
   
  -            PostMethod method = new PostMethod(url.getFile()) {
  -                protected String generateRequestBody(HashMap params) {
  -                    try {
  -                        StringBuffer bodyBuffer
  -                                = new 
StringBuffer(super.generateRequestBody(params));
  +            PostMethod method = new PostMethod(url.getFile());
  +            String request;
   
  -                        // Write the SOAP request body
  -                        if (xscriptObject instanceof XScriptObjectInlineXML) {
  -                            // Skip overhead
  -                            bodyBuffer.append(((XScriptObjectInlineXML) 
xscriptObject).getContent());
  -                        } else {
  -                            InputSource saxSource = xscriptObject.getInputSource();
  -
  -                            Reader r = null;
  -                            // Byte stream or character stream?
  -                            if (saxSource.getByteStream() != null) {
  -                                r = new 
InputStreamReader(saxSource.getByteStream());
  -                            } else {
  -                                r = saxSource.getCharacterStream();
  -                            }
  -
  -                            try {
  -                                char[] buffer = new char[1024];
  -                                int len;
  -                                while ((len = r.read(buffer)) > 0)
  -                                    bodyBuffer.append(buffer, 0, len);
  -                            } finally {
  -                                if (r != null) {
  -                                    r.close();
  -                                }
  -                            }
  -                        }
  +            try {
  +                // Write the SOAP request body
  +                if (xscriptObject instanceof XScriptObjectInlineXML) {
  +                    // Skip overhead
  +                    request = ((XScriptObjectInlineXML) xscriptObject).getContent();
  +                } else {
  +                    StringBuffer bodyBuffer = new StringBuffer();
  +                    InputSource saxSource = xscriptObject.getInputSource();
  +
  +                    Reader r = null;
  +                    // Byte stream or character stream?
  +                    if (saxSource.getByteStream() != null) {
  +                        r = new InputStreamReader(saxSource.getByteStream());
  +                    } else {
  +                        r = saxSource.getCharacterStream();
  +                    }
   
  -                        return bodyBuffer.toString();
  -                    } catch (Exception ex) {
  -                        // FIXME (VG): Will result in NPE in httpClient code
  -                        return null;
  +                    try {
  +                        char[] buffer = new char[1024];
  +                        int len;
  +                        while ((len = r.read(buffer)) > 0)
  +                            bodyBuffer.append(buffer, 0, len);
  +                    } finally {
  +                        if (r != null) {
  +                            r.close();
  +                        }
                       }
  +                    request = bodyBuffer.toString();
                   }
  -            };
  +            } catch (Exception ex) {
  +                throw new ProcessingException("Error assembling request", ex);
  +            }
   
               method.setRequestHeader(
                       new Header("Content-type", "text/xml; charset=\"utf-8\""));
               method.setRequestHeader(new Header("SOAPAction", action));
  -            method.setUseDisk(false);
  +            method.setRequestBody(request);
   
               method.execute(new HttpState(), conn);
   
  @@ -169,12 +164,10 @@
                   throw new ProcessingException("Invalid response - no xml");
               }
   
  -            return new XScriptObjectInlineXML(
  -                    xscriptManager,
  -                    ret.substring(startOfXML));
  +            return new XScriptObjectInlineXML(xscriptManager,
  +                                              ret.substring(startOfXML));
           } catch (Exception ex) {
  -            throw new ProcessingException("Error invoking remote service: " + ex,
  -                    ex);
  +            throw new ProcessingException("Error invoking remote service: " + ex, 
ex);
           } finally {
               try {
                   if (conn != null)
  
  
  

Reply via email to