You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/12/08 18:42:32 UTC
svn commit: r602520 - in /jakarta/httpcomponents/httpcore/trunk:
module-main/src/main/java/org/apache/http/entity/
module-main/src/main/java/org/apache/http/impl/
module-main/src/main/java/org/apache/http/message/
module-nio/src/examples/org/apache/htt...
Author: olegk
Date: Sat Dec 8 09:42:26 2007
New Revision: 602520
URL: http://svn.apache.org/viewvc?rev=602520&view=rev
Log:
HTTPCORE-68: NIO specific entity classes
Added:
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java (with props)
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java (with props)
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java (with props)
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java (with props)
Modified:
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java Sat Dec 8 09:42:26 2007
@@ -37,7 +37,7 @@
import java.io.OutputStream;
/**
- * A self-contained entity obtaining content from a byte array.
+ * An entity whose content is retrieved from a byte array.
*
* @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
*
@@ -47,7 +47,7 @@
*/
public class ByteArrayEntity extends AbstractHttpEntity {
- private final byte[] content;
+ protected final byte[] content;
public ByteArrayEntity(final byte[] b) {
super();
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java Sat Dec 8 09:42:26 2007
@@ -38,7 +38,7 @@
import java.io.OutputStream;
/**
- * A self-contained entity obtaining content from a file.
+ * An entity whose content is retrieved from a file.
*
* @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
*
@@ -48,7 +48,7 @@
*/
public class FileEntity extends AbstractHttpEntity {
- private final File file;
+ protected final File file;
public FileEntity(final File file, final String contentType) {
super();
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java Sat Dec 8 09:42:26 2007
@@ -40,7 +40,7 @@
import org.apache.http.protocol.HTTP;
/**
- * A self-contained entity obtaining content from a string.
+ * An entity whose content is retrieved from a string.
*
* @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
*
@@ -50,7 +50,7 @@
*/
public class StringEntity extends AbstractHttpEntity {
- private final byte[] content;
+ protected final byte[] content;
public StringEntity(final String s, String charset)
throws UnsupportedEncodingException {
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java Sat Dec 8 09:42:26 2007
@@ -33,7 +33,6 @@
import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpConnection;
-import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
@@ -45,7 +44,6 @@
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.TokenIterator;
import org.apache.http.message.BasicTokenIterator;
-
/**
* Default implementation of a strategy deciding about connection re-use.
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java Sat Dec 8 09:42:26 2007
@@ -33,14 +33,9 @@
import java.util.NoSuchElementException;
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
import org.apache.http.HeaderIterator;
-import org.apache.http.TokenIterator;
import org.apache.http.ParseException;
-
-
+import org.apache.http.TokenIterator;
/**
* Basic implementation of a {@link TokenIterator}.
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java?rev=602520&r1=602519&r2=602520&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java Sat Dec 8 09:42:26 2007
@@ -31,9 +31,7 @@
package org.apache.http.examples.nio;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.InterruptedIOException;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
@@ -43,6 +41,7 @@
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.WritableByteChannel;
import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.Header;
@@ -56,8 +55,6 @@
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.ProtocolVersion;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.FileEntity;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.impl.nio.DefaultServerIOEventDispatch;
@@ -65,8 +62,12 @@
import org.apache.http.nio.ContentDecoder;
import org.apache.http.nio.ContentEncoder;
import org.apache.http.nio.FileContentDecoder;
+import org.apache.http.nio.FileContentEncoder;
import org.apache.http.nio.NHttpServerConnection;
import org.apache.http.nio.NHttpServiceHandler;
+import org.apache.http.nio.entity.ByteArrayNIOEntity;
+import org.apache.http.nio.entity.FileNIOEntity;
+import org.apache.http.nio.entity.HttpNIOEntity;
import org.apache.http.nio.reactor.IOEventDispatch;
import org.apache.http.nio.reactor.ListeningIOReactor;
import org.apache.http.params.BasicHttpParams;
@@ -117,7 +118,6 @@
}
private static final String CONN_STATE = "http.conn-state";
- private static final String OUT_CHANNEL = "http.out-channel";
static class ConnState {
@@ -126,7 +126,10 @@
private File fileHandle;
private RandomAccessFile inputFile;
+ private WritableByteChannel inputChannel;
+ private ReadableByteChannel outputChannel;
private long inputCount;
+ private long outputCount;
public ConnState() {
super();
@@ -142,7 +145,6 @@
return this.outbuf;
}
-
public File getInputFile() throws IOException {
if (this.fileHandle == null) {
this.fileHandle = File.createTempFile("tmp", ".tmp", null);
@@ -150,11 +152,22 @@
return this.fileHandle;
}
- public FileChannel getInputChannel() throws IOException {
+ public WritableByteChannel getInputChannel() throws IOException {
if (this.inputFile == null) {
this.inputFile = new RandomAccessFile(getInputFile(), "rw");
}
- return this.inputFile.getChannel();
+ if (this.inputChannel == null) {
+ this.inputChannel = this.inputFile.getChannel();
+ }
+ return this.inputChannel;
+ }
+
+ public void setOutputChannel(final ReadableByteChannel channel) {
+ this.outputChannel = channel;
+ }
+
+ public ReadableByteChannel getOutputChannel() {
+ return this.outputChannel;
}
public long getInputCount() {
@@ -165,10 +178,23 @@
this.inputCount += count;
}
+ public long getOutputCount() {
+ return this.outputCount;
+ }
+
+ public void incrementOutputCount(long count) {
+ this.outputCount += count;
+ }
+
public void reset() throws IOException {
this.inbuf.clear();
this.outbuf.clear();
this.inputCount = 0;
+ this.outputCount = 0;
+ if (this.inputChannel != null) {
+ this.inputChannel.close();
+ this.inputChannel = null;
+ }
if (this.inputFile != null) {
this.inputFile.close();
this.inputFile = null;
@@ -246,6 +272,9 @@
}
HttpContext context = conn.getContext();
+
+ ConnState connState = (ConnState) context.getAttribute(CONN_STATE);
+
HttpResponse response = this.responseFactory.newHttpResponse(
HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST, context);
HttpParamsLinker.link(response, this.params);
@@ -256,7 +285,7 @@
try {
handleException(ex, response, context);
this.httpProcessor.process(response, context);
- commitResponse(conn, response);
+ commitResponse(conn, connState, response);
} catch (HttpException ex2) {
shutdownConnection(conn);
System.err.println("Unexpected HTTP protocol error: " + ex2.getMessage());
@@ -315,30 +344,28 @@
ConnState connState = (ConnState) context.getAttribute(
CONN_STATE);
-
try {
- FileChannel filechannel = connState.getInputChannel();
-
- // Test if the decoder is capable of
- // direct transfer to file
- if (decoder instanceof FileContentDecoder) {
+ WritableByteChannel channel = connState.getInputChannel();
+ long transferred;
+
+ // Test if the decoder is capable of direct transfer to file
+ if (decoder instanceof FileContentDecoder && channel instanceof FileChannel) {
long pos = connState.getInputCount();
- long transferred = ((FileContentDecoder) decoder).transfer(
- filechannel, pos, Integer.MAX_VALUE);
- connState.incrementInputCount(transferred);
+ transferred = ((FileContentDecoder) decoder).transfer(
+ (FileChannel) channel, pos, Integer.MAX_VALUE);
} else {
ByteBuffer buf = connState.getInbuf();
decoder.read(buf);
buf.flip();
- int transferred = filechannel.write(buf);
+ transferred = channel.write(buf);
buf.compact();
- connState.incrementInputCount(transferred);
}
+ connState.incrementInputCount(transferred);
if (decoder.isCompleted()) {
// Request entity has been fully received
- filechannel.close();
+ channel.close();
doService(conn, connState);
}
@@ -356,21 +383,33 @@
ConnState connState = (ConnState) context.getAttribute(
CONN_STATE);
- ReadableByteChannel channel = (ReadableByteChannel) context.getAttribute(
- OUT_CHANNEL);
-
HttpResponse response = conn.getHttpResponse();
- ByteBuffer outbuf = connState.getOutbuf();
try {
- int bytesRead = channel.read(outbuf);
- if (bytesRead == -1) {
- encoder.complete();
+
+ ReadableByteChannel channel = connState.getOutputChannel();
+ long transferred;
+
+ // Test if the encoder is capable of direct transfer from file
+ if (encoder instanceof FileContentDecoder && channel instanceof FileChannel) {
+ long pos = connState.getOutputCount();
+ transferred = ((FileContentEncoder) encoder).transfer(
+ (FileChannel) channel, pos, Integer.MAX_VALUE);
} else {
- outbuf.flip();
- encoder.write(outbuf);
- outbuf.compact();
+ ByteBuffer outbuf = connState.getOutbuf();
+ transferred = channel.read(outbuf);
+ if (transferred != -1) {
+ outbuf.flip();
+ encoder.write(outbuf);
+ outbuf.compact();
+ }
}
-
+ if (transferred == -1) {
+ encoder.complete();
+ }
+ if (transferred > 0) {
+ connState.incrementOutputCount(transferred);
+ }
+
if (encoder.isCompleted()) {
channel.close();
if (!this.connStrategy.keepAlive(response, context)) {
@@ -382,23 +421,23 @@
shutdownConnection(conn);
System.err.println("I/O error: " + ex.getMessage());
}
-
}
private void commitResponse(
final NHttpServerConnection conn,
+ final ConnState connState,
final HttpResponse response) throws HttpException, IOException {
- ReadableByteChannel channel = null;
- if (response.getEntity() != null) {
- InputStream instream = response.getEntity().getContent();
- if (instream instanceof FileInputStream) {
- channel = ((FileInputStream)instream).getChannel();
+
+ HttpEntity entity = response.getEntity();
+ if (entity != null) {
+ ReadableByteChannel channel;
+ if (entity instanceof HttpNIOEntity) {
+ channel = ((HttpNIOEntity) entity).getChannel();
} else {
- channel = Channels.newChannel(instream);
+ channel = Channels.newChannel(entity.getContent());
}
-
+ connState.setOutputChannel(channel);
}
- conn.getContext().setAttribute(OUT_CHANNEL, channel);
conn.submitResponse(response);
}
@@ -416,7 +455,7 @@
if (h != null) {
contentType = h.getValue();
}
- HttpEntity entity = new FileEntity(connState.getInputFile(), contentType);
+ HttpNIOEntity entity = new FileNIOEntity(connState.getInputFile(), contentType);
eeRequest.setEntity(entity);
}
@@ -435,7 +474,7 @@
handleException(ex, response, context);
}
this.httpProcessor.process(response, context);
- commitResponse(conn, response);
+ commitResponse(conn, connState, response);
}
private void handleRequest(
@@ -456,7 +495,7 @@
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
byte[] msg = EncodingUtils.getAsciiBytes(
file.getName() + ": not found");
- ByteArrayEntity entity = new ByteArrayEntity(msg);
+ ByteArrayNIOEntity entity = new ByteArrayNIOEntity(msg);
entity.setContentType("text/plain; charset=US-ASCII");
response.setEntity(entity);
@@ -465,13 +504,13 @@
response.setStatusCode(HttpStatus.SC_FORBIDDEN);
byte[] msg = EncodingUtils.getAsciiBytes(
file.getName() + ": access denied");
- ByteArrayEntity entity = new ByteArrayEntity(msg);
+ ByteArrayNIOEntity entity = new ByteArrayNIOEntity(msg);
entity.setContentType("text/plain; charset=US-ASCII");
response.setEntity(entity);
} else {
- FileEntity entity = new FileEntity(file, "text/html");
+ FileNIOEntity entity = new FileNIOEntity(file, "text/html");
response.setEntity(entity);
}
@@ -484,7 +523,7 @@
response.setStatusLine(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
byte[] msg = EncodingUtils.getAsciiBytes(
"Malformed HTTP request: " + ex.getMessage());
- ByteArrayEntity entity = new ByteArrayEntity(msg);
+ ByteArrayNIOEntity entity = new ByteArrayNIOEntity(msg);
entity.setContentType("text/plain; charset=US-ASCII");
response.setEntity(entity);
}
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java?rev=602520&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java Sat Dec 8 09:42:26 2007
@@ -0,0 +1,62 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.nio.entity;
+
+import java.io.IOException;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.entity.ByteArrayEntity;
+
+/**
+ * An entity whose content is retrieved from a byte array. In addition to the
+ * standard {@link HttpEntity} interface this class also implements NIO specific
+ * {@link HttpNIOEntity}.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ *
+ * @version $Revision:$
+ *
+ * @since 4.0
+ */
+public class ByteArrayNIOEntity extends ByteArrayEntity implements HttpNIOEntity {
+
+ public ByteArrayNIOEntity(final byte[] b) {
+ super(b);
+ }
+
+ public ReadableByteChannel getChannel() throws IOException {
+ return Channels.newChannel(getContent());
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/ByteArrayNIOEntity.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java?rev=602520&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java Sat Dec 8 09:42:26 2007
@@ -0,0 +1,64 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.nio.entity;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.channels.ReadableByteChannel;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.entity.FileEntity;
+
+/**
+ * An entity whose content is retrieved from from a file. In addition to the standard
+ * {@link HttpEntity} interface this class also implements NIO specific
+ * {@link HttpNIOEntity}.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ *
+ * @version $Revision:$
+ *
+ * @since 4.0
+ */
+public class FileNIOEntity extends FileEntity implements HttpNIOEntity {
+
+ public FileNIOEntity(final File file, final String contentType) {
+ super(file, contentType);
+ }
+
+ public ReadableByteChannel getChannel() throws IOException {
+ RandomAccessFile rafile = new RandomAccessFile(this.file, "r");
+ return rafile.getChannel();
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/FileNIOEntity.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java?rev=602520&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java Sat Dec 8 09:42:26 2007
@@ -0,0 +1,43 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.nio.entity;
+
+import java.io.IOException;
+import java.nio.channels.ReadableByteChannel;
+
+import org.apache.http.HttpEntity;
+
+public interface HttpNIOEntity extends HttpEntity {
+
+ ReadableByteChannel getChannel() throws IOException;
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/HttpNIOEntity.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java?rev=602520&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java Sat Dec 8 09:42:26 2007
@@ -0,0 +1,65 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.nio.entity;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.entity.StringEntity;
+
+/**
+ * An entity whose content is retrieved from a string. In addition to the
+ * standard {@link HttpEntity} interface this class also implements NIO specific
+ * {@link HttpNIOEntity}.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ *
+ * @version $Revision:$
+ *
+ * @since 4.0
+ */
+public class StringNIOEntity extends StringEntity implements HttpNIOEntity {
+
+ public StringNIOEntity(
+ final String s,
+ String charset) throws UnsupportedEncodingException {
+ super(s, charset);
+ }
+
+ public ReadableByteChannel getChannel() throws IOException {
+ return Channels.newChannel(getContent());
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/entity/StringNIOEntity.java
------------------------------------------------------------------------------
svn:mime-type = text/plain