axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Russell Butek" <bu...@us.ibm.com>
Subject Re: cvs commit: xml-axis/java/test/functional FunctionalTests.java TestAttachmentsSample.java
Date Wed, 01 May 2002 18:49:43 GMT
Yay!  An attachment test!  Thanks, Rick.

Russell Butek
butek@us.ibm.com


rineholt@apache.org on 05/01/2002 01:40:47 PM

Please respond to axis-dev@xml.apache.org

To:    xml-axis-cvs@apache.org
cc:
Subject:    cvs commit: xml-axis/java/test/functional FunctionalTests.java
       TestAttachmentsSample.java



rineholt    02/05/01 11:40:47

  Modified:    java/src/org/apache/axis/transport/http
                        NonBlockingBufferedInputStream.java
                        SimpleAxisServer.java
               java/test/functional FunctionalTests.java
                        TestAttachmentsSample.java
  Added:       java/samples/attachments leaveempty.txt
  Log:
  Added attachment support for SimpleAxisServer.
  Completed the work to attachments tests to functional test.

  Revision  Changes    Path
  1.1                  xml-axis/java/samples/attachments/leaveempty.txt

   <<Binary file>>


  1.8       +13 -0
  xml-axis/java/src/org/apache/axis/transport/http/NonBlockingBufferedInputStream.java


  Index: NonBlockingBufferedInputStream.java
  ===================================================================
  RCS file:
  /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/NonBlockingBufferedInputStream.java,v

  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- NonBlockingBufferedInputStream.java 27 Nov 2001 20:48:13 -0000    1.7
  +++ NonBlockingBufferedInputStream.java 1 May 2002 18:40:47 -0000     1.8
  @@ -198,5 +198,18 @@
       public void close() throws IOException {
           setInputStream(null);
       }
  +
  +    /**
  +     * Just like read except byte is not removed from the buffer.
  +     * the data is buffered for efficiency.
  +     * Was added to support multiline http headers. ;-)
  +     * @return the byte read
  +     */
  +    public int peek() throws IOException {
  +        if (in == null) return -1;
  +        if (offset >= numbytes) refillBuffer();
  +        if (offset >= numbytes) return -1;
  +        return buffer[offset];
  +    }
   }




  1.56      +56 -14
  xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java

  Index: SimpleAxisServer.java
  ===================================================================
  RCS file:
  /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java,v

  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- SimpleAxisServer.java   6 Mar 2002 23:39:17 -0000     1.55
  +++ SimpleAxisServer.java   1 May 2002 18:40:47 -0000     1.56
  @@ -191,6 +191,8 @@
           StringBuffer cookie = new StringBuffer();
           StringBuffer cookie2 = new StringBuffer();
           StringBuffer authInfo = new StringBuffer();
  +        StringBuffer contentType= new StringBuffer();
  +        StringBuffer contentLocation= new StringBuffer();

           Message responseMsg = null;

  @@ -242,7 +244,8 @@
                       // read headers
                       is.setInputStream(socket.getInputStream());
                       // parse all headers into hashtable
  -                    int contentLength = parseHeaders(is, soapAction,
  +                    int contentLength = parseHeaders(is, contentType,
  +                                                     contentLocation,
  soapAction,
                                                        httpRequest,
                                                        fileName,
                                                        cookie, cookie2,
                                                        authInfo);
                       is.setContentLength(contentLength);
  @@ -345,7 +348,11 @@
                           msgContext.setUseSOAPAction(true);
                           msgContext.setSOAPActionURI(soapActionString);
                       }
  -                    requestMsg = new Message(is);
  +                    requestMsg = new Message(is,
  +                                             false,
  +                                             contentType.toString(),
  +                                             contentLocation.toString()
  +                                            );
                       msgContext.setRequestMessage(requestMsg);

                       // set up session, if any
  @@ -431,24 +438,27 @@
                   OutputStream out = socket.getOutputStream();
                   out.write(HTTP);
                   out.write(status);
  -                out.write(XML_MIME_STUFF);
  -                putInt(out, response.length);
  +                //out.write(XML_MIME_STUFF);
  +                out.write(("\n" + HTTPConstants.HEADER_CONTENT_TYPE + ":
  " + responseMsg.getContentType()).getBytes());
  +                out.write(("\n" + HTTPConstants.HEADER_CONTENT_LENGTH +
  ": " + responseMsg.getContentLength()).getBytes());
  +                // putInt(out, response.length);

  -                if (doSessions) {
  +                if (doSessions && null != cooky && 0 != cooky.trim
  ().length()) {
                       // write cookie headers, if any
                       // don't sweat efficiency *too* badly
                       // optimize at will
                       StringBuffer cookieOut = new StringBuffer();
  -                    cookieOut.append("\r\nSet-Cookie: ")
  +                    cookieOut.append("\nSet-Cookie: ")
                           .append(cooky)
  -                        .append("\r\nSet-Cookie2: ")
  +                        .append("\nSet-Cookie2: ")
                           .append(cooky);
                       // OH, THE HUMILITY!  yes this is inefficient.
                       out.write(cookieOut.toString().getBytes());
                   }

                   out.write(SEPARATOR);
  -                out.write(response);
  +                responseMsg.writeContentToStream(out);
  +               // out.write(response);
                   out.flush();

                   if (msgContext.getProperty(msgContext.QUIT_REQUESTED) !
  = null) {
  @@ -488,6 +498,14 @@
       private static final byte lenHeader[] = "content-length: ".getBytes
       ();
       private static final int lenLen = lenHeader.length;

  +    // mime header for content type
  +    private static final byte typeHeader[]
  = (HTTPConstants.HEADER_CONTENT_TYPE.toLowerCase() +": ").getBytes();
  +    private static final int typeLen = typeHeader.length;
  +
  +    // mime header for content location
  +    private static final byte locationHeader[]
  = (HTTPConstants.HEADER_CONTENT_LOCATION.toLowerCase()+": ").getBytes();
  +    private static final int locationLen = locationHeader.length;
  +
       // mime header for soap action
       private static final byte actionHeader[] = "soapaction: ".getBytes
       ();
       private static final int actionLen = actionHeader.length;
  @@ -527,15 +545,21 @@
        * @param off       starting offset into the byte array
        * @param len       maximum number of bytes to read
        */
  -    private int readLine(InputStream is, byte[] b, int off, int len)
  +    private int readLine(NonBlockingBufferedInputStream is, byte[] b,
  int off, int len)
           throws IOException
       {
           int count = 0, c;

           while ((c = is.read()) != -1) {
  -            b[off++] = (byte)c;
  -            count++;
  -            if (c == '\n' || count == len) break;
  +            if(c != '\n' && c != '\r'){
  +              b[off++] = (byte)c;
  +              count++;
  +            }
  +            if (count == len) break;
  +            if( '\n' == c ){
  +              int peek= is.peek(); //If the next line begins with tab or
  space then this is a continuation.
  +              if(peek != ' ' && peek != '\t') break;
  +            }
           }
           return count > 0 ? count : -1;
       }
  @@ -544,13 +568,17 @@
        * Read all mime headers, returning the value of Content-Length and
        * SOAPAction.
        * @param is         InputStream to read from
  +     * @param contentType The content type.
  +     * @param contentLocation The content location
        * @param soapAction StringBuffer to return the soapAction into
        * @param httpRequest StringBuffer for GET / POST
        * @param cookie first cookie header (if doSessions)
        * @param cookie2 second cookie header (if doSessions)
        * @return Content-Length
        */
  -    private int parseHeaders(InputStream is,
  +    private int parseHeaders(NonBlockingBufferedInputStream is,
  +                             StringBuffer contentType,
  +                             StringBuffer contentLocation,
                                StringBuffer soapAction,
                                StringBuffer httpRequest,
                                StringBuffer fileName,
  @@ -572,6 +600,8 @@
           // which does it begin with?
           httpRequest.delete(0, httpRequest.length());
           fileName.delete(0, fileName.length());
  +        contentType.delete(0, contentType.length());
  +        contentLocation.delete(0, contentLocation.length());

           if (buf[0] == getHeader[0]) {
               httpRequest.append("GET");
  @@ -596,9 +626,9 @@
               throw new IOException(JavaUtils.getMessage("badRequest00"));
           }

  +        StringBuffer lastbuf=null;
           while ((n=readLine(is,buf,0,buf.length)) > 0) {

  -            // if we are at the separator blank line, bail right now
               if ((n<=2) && (buf[0]=='\n'||buf[0]=='\r') && (len>0))
               break;

               // RobJ gutted the previous logic; it was too hard to extend
  for more headers.
  @@ -670,6 +700,18 @@
                       throw new IOException(
                               JavaUtils.getMessage("badAuth00"));
                   }
  +            }
  +            else if (endHeaderIndex == locationLen && matches(buf,
  locationHeader)) {
  +                    while (++i<n && (buf[i]!='\r') && (buf[i]!='\n'))
{
  +                        if (buf[i]==' ') continue;
  +                        contentLocation.append((char)(buf[i] & 0x7f));
  +                    }
  +            }
  +            else if (endHeaderIndex == typeLen&& matches(buf,
  typeHeader)) {
  +                    while (++i<n && (buf[i]!='\r') && (buf[i]!='\n'))
{
  +                        if (buf[i]==' ') continue;
  +                        contentType.append((char)(buf[i] & 0x7f));
  +                    }
               }

           }



  1.18      +6 -2      xml-axis/java/test/functional/FunctionalTests.java

  Index: FunctionalTests.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/FunctionalTests.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FunctionalTests.java    19 Apr 2002 18:42:30 -0000    1.17
  +++ FunctionalTests.java    1 May 2002 18:40:47 -0000     1.18
  @@ -53,8 +53,12 @@
           suite.addTestSuite(TestMessageSample.class);

           // Attachments service test.
  -        // Commented out for now since SimpleAxisServer doesn't support
  this
  -        // suite.addTestSuite(TestAttachmentsSample.class);
  +        try{
  +          if( null !=  Class.forName("javax.activation.DataHandler") &&
  +              null != Class.forName
  ("javax.mail.internet.MimeMultipart")){
  +                suite.addTestSuite(TestAttachmentsSample.class);
  +          }
  +        }catch( Throwable t){;}

           return suite;
       }



  1.2       +1 -1
  xml-axis/java/test/functional/TestAttachmentsSample.java

  Index: TestAttachmentsSample.java
  ===================================================================
  RCS file:
  /home/cvs/xml-axis/java/test/functional/TestAttachmentsSample.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestAttachmentsSample.java    19 Apr 2002 18:42:30 -0000    1.1
  +++ TestAttachmentsSample.java    1 May 2002 18:40:47 -0000     1.2
  @@ -86,7 +86,7 @@

       public void doTestAttachments2() throws Exception {
           Options opts = new Options( new String[]{});
  -        boolean res = new EchoAttachment(opts).echo
  ("samples/attachments");
  +        boolean res = new EchoAttachment(opts).echoDir
  ("samples/attachments");
           assertEquals("Didn't process attachments correctly", res, true);
       }







Mime
View raw message