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)