diff options
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/ChunkedInputStream.java')
-rw-r--r-- | bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/ChunkedInputStream.java | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/ChunkedInputStream.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/ChunkedInputStream.java deleted file mode 100644 index 8f610328f..000000000 --- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/ChunkedInputStream.java +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.wst.ws.internal.explorer.platform.wsdl.transport; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class ChunkedInputStream extends FilterInputStream -{ - protected long chunkSize = 0l; - protected volatile boolean closed = false; - private static final int maxCharLong = (Long.toHexString(Long.MAX_VALUE)).toString().length(); - - private ChunkedInputStream() - { - super(null); - } - - public ChunkedInputStream(InputStream is) - { - super(is); - } - - public int read() throws IOException - { - byte[] d = new byte[1]; - int rc = read(d, 0, 1); - return rc > 0 ? (d[0] & 0xFF) : rc; - } - - public int read(byte[] b) throws IOException - { - return read(b, 0, b.length); - } - - public synchronized int read(byte[] b, int off, int len) throws IOException - { - if (closed) - return -1; - int cs = (int) Math.min(Integer.MAX_VALUE, chunkSize); - int totalread = 0; - int bytesread = 0; - try - { - do - { - if (chunkSize < 1L) - { - if (0l == getChunked()) - { - if (totalread == 0) - return -1; - else - return totalread; - } - } - bytesread = in.read(b, off + totalread, Math.min(len - totalread, (int) Math.min(chunkSize, Integer.MAX_VALUE))); - if (bytesread > 0) - { - totalread += bytesread; - chunkSize -= bytesread; - } - } - while (len - totalread > 0 && bytesread > -1); - } - catch (IOException e) - { - closed = true; - throw e; - } - return totalread; - } - - public long skip(final long n) throws IOException - { - if (closed) - return 0; - long skipped = 0l; - byte[] b = new byte[1024]; - int bread = -1; - do - { - bread = read(b, 0, b.length); - if (bread > 0) - skipped += bread; - } - while (bread != -1 && skipped < n); - return skipped; - } - - public int available() throws IOException - { - if (closed) - return 0; - int rc = (int) Math.min(chunkSize, Integer.MAX_VALUE); - return Math.min(rc, in.available()); - } - - protected long getChunked() throws IOException - { - //StringBuffer buf= new StringBuffer(1024); - byte[] buf = new byte[maxCharLong + 2]; - int bufsz = 0; - chunkSize = -1L; - int c = -1; - do - { - c = in.read(); - if (c > -1) - { - if (c != '\r' && c != '\n' && c != ' ' && c != '\t') - { - buf[bufsz++] = ((byte) c); - } - } - } - while (c > -1 && (c != '\n' || bufsz == 0) && bufsz < buf.length); - if (c < 0) - { - closed = true; - } - String sbuf = new String(buf, 0, bufsz); - if (bufsz > maxCharLong) - { - closed = true; - throw new IOException("Chunked input stream failed to receive valid chunk size:" + sbuf); - } - try - { - chunkSize = Long.parseLong(sbuf, 16); - } - catch (NumberFormatException ne) - { - closed = true; - throw new IOException("'" + sbuf + "' " + ne.getMessage()); - } - if (chunkSize < 1L) - closed = true; - if (chunkSize != 0L && c < 0) - { - //If chunk size is zero try and be tolerant that there maybe no cr or lf - // at the end. - throw new IOException("HTTP Chunked stream closed in middle of chunk."); - } - if (chunkSize < 0L) - throw new IOException("HTTP Chunk size received " + chunkSize + " is less than zero."); - return chunkSize; - } - - public void close() throws IOException - { - synchronized (this) - { - if (closed) - return; - closed = true; - } - byte[] b = new byte[1024]; - int bread = -1; - do - { - bread = read(b, 0, b.length); - } - while (bread != -1); - } - - /* - * public void mark(int readlimit) - * { - * } - */ - - public void reset() throws IOException - { - throw new IOException("Don't support marked streams"); - } - - public boolean markSupported() - { - return false; - } -} |