You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by wo...@apache.org on 2005/05/14 03:46:48 UTC

cvs commit: jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler WebServiceSampler.java

woolfel     2005/05/13 18:46:48

  Modified:    src/protocol/http/org/apache/jmeter/protocol/http/sampler
                        WebServiceSampler.java
  Log:
  improved the error handling a bit.
  
  peter lin
  
  Revision  Changes    Path
  1.21      +48 -28    jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.java
  
  Index: WebServiceSampler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- WebServiceSampler.java	9 Apr 2005 15:06:25 -0000	1.20
  +++ WebServiceSampler.java	14 May 2005 01:46:48 -0000	1.21
  @@ -44,6 +44,7 @@
   import org.apache.soap.transport.SOAPTransport;
   import org.apache.soap.transport.http.SOAPHTTPConnection;
   import org.apache.soap.util.xml.XMLParserUtils;
  +import org.apache.soap.SOAPException;
   import org.w3c.dom.Document;
   
   /**
  @@ -400,6 +401,7 @@
   				doc = XDB.parse(new FileInputStream(retrieveRuntimeXmlData()));
       		} catch (Exception e){
       			// there should be a file, if not fail silently
  +                log.debug(e.getMessage());
       		}
       	} else {
       		FILE_CONTENTS = getXmlData();
  @@ -448,6 +450,7 @@
               // create a new message
               Message msg = new Message();
               RESULT.setURL(this.getUrl());
  +            RESULT.setSampleLabel(this.getUrl().toString());
               RESULT.sampleStart();
   			SOAPHTTPConnection spconn = null;
   			// if a blank HeaderManager exists, try to
  @@ -497,33 +500,47 @@
   			}
   
               SOAPTransport st = msg.getSOAPTransport();
  -            BufferedReader br = st.receive();
               RESULT.setDataType(SampleResult.TEXT);
  -            if (this.getPropertyAsBoolean(READ_RESPONSE))
  -            {
  -                StringBuffer buf = new StringBuffer();
  -                String line;
  -                while ((line = br.readLine()) != null)
  +            BufferedReader br = null;
  +            // check to see if SOAPTransport is not nul and receive is
  +            // also not null. hopefully this will improve the error
  +            // reporting. 5/13/05 peter lin
  +            if (st != null && st.receive() != null){
  +                br = st.receive();
  +                if (this.getPropertyAsBoolean(READ_RESPONSE))
                   {
  -                    buf.append(line);
  +                    StringBuffer buf = new StringBuffer();
  +                    String line;
  +                    while ((line = br.readLine()) != null)
  +                    {
  +                        buf.append(line);
  +                    }
  +                    RESULT.sampleEnd();
  +                    // set the response
  +                    RESULT.setResponseData(buf.toString().getBytes());
                   }
  -                RESULT.sampleEnd();
  -                // set the response
  -                RESULT.setResponseData(buf.toString().getBytes());
  -            }
  -            else
  -            {
  -                // by not reading the response
  -                // for real, it improves the
  -                // performance on slow clients
  -                br.read();
  -				RESULT.sampleEnd();
  +                else
  +                {
  +                    // by not reading the response
  +                    // for real, it improves the
  +                    // performance on slow clients
  +                    br.read();
  +                    RESULT.sampleEnd();
  +                    RESULT.setResponseData(
  +                        JMeterUtils
  +                            .getResString("read_response_message")
  +                            .getBytes());
  +                }
  +                RESULT.setSuccessful(true);
  +                RESULT.setResponseCode("200");
  +                RESULT.setResponseHeaders(this.convertSoapHeaders(st.getHeaders()));
  +            } else {
  +                RESULT.setSuccessful(false);
                   RESULT.setResponseData(
  -                    JMeterUtils
  -                        .getResString("read_response_message")
  -                        .getBytes());
  +                        st.getResponseSOAPContext().getContentType().getBytes());
  +                RESULT.setResponseCode("000");
  +                RESULT.setResponseHeaders("error");
               }
  -            RESULT.setSuccessful(true);
               // 1-22-04 updated the sampler so that when read
               // response is set, it also sets SamplerData with
               // the XML message, so users can see what was
  @@ -544,16 +561,19 @@
               // soap will return a descriptive error
               // message, soap errors within the response
               // are preferred.
  -            RESULT.setResponseCode("200");
  -			RESULT.setResponseHeaders(this.convertSoapHeaders(st.getHeaders()));
  -			RESULT.setSampleLabel(this.getUrl().toString());
  -            br.close();
  +            if (br != null){
  +                br.close();
  +            }
               msg = null;
               st = null;
               // reponse code doesn't really apply, since
               // the soap driver doesn't provide a
               // response code
           }
  +        catch (SOAPException exception){
  +            log.debug(exception.getMessage());
  +            RESULT.setSuccessful(false);
  +        }
           catch (Exception exception)
           {
               log.debug(exception.getMessage());
  
  
  

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