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 2005/10/16 22:04:33 UTC

svn commit: r322508 - in /jakarta/httpclient/trunk/http-common: ./ src/java/org/apache/http/entity/StringEntity.java src/test/org/apache/http/entity/TestHttpEntities.java

Author: olegk
Date: Sun Oct 16 13:04:24 2005
New Revision: 322508

URL: http://svn.apache.org/viewcvs?rev=322508&view=rev
Log:
* Fixed bug in StringEntity#getContentLength method
* Added test cases for StringEntity class

Modified:
    jakarta/httpclient/trunk/http-common/   (props changed)
    jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/StringEntity.java
    jakarta/httpclient/trunk/http-common/src/test/org/apache/http/entity/TestHttpEntities.java

Propchange: jakarta/httpclient/trunk/http-common/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Oct 16 13:04:24 2005
@@ -1,4 +1,6 @@
+
 .project
 .classpath
 bin
 lib
+.settings

Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/StringEntity.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/StringEntity.java?rev=322508&r1=322507&r2=322508&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/StringEntity.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/StringEntity.java Sun Oct 16 13:04:24 2005
@@ -33,6 +33,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 
 import org.apache.http.HttpEntity;
 
@@ -47,25 +48,29 @@
  */
 public class StringEntity implements HttpEntity {
 
+    private final static String DEFAULT_CHARSET = "ISO-8859-1";
     private final static String DEFAULT_CONTENT_TYPE = "text/plain; charset=";
 
-    private final String content;
+    private final byte[] content;
     private String contentType = null;
     private String contentEncoding = null;
     private boolean chunked = false;
 
-    public StringEntity(final String s, final String charset) {
+    public StringEntity(final String s, String charset) 
+            throws UnsupportedEncodingException {
         super();
         if (s == null) {
             throw new IllegalArgumentException("Source string may not be null");
         }
-        this.content = s;
-        if (charset != null) {
-            this.contentType = DEFAULT_CONTENT_TYPE + charset;
+        if (charset == null) {
+            charset = DEFAULT_CHARSET;
         }
+        this.contentType = DEFAULT_CONTENT_TYPE + charset;
+        this.content = s.getBytes(charset);
     }
 
-    public StringEntity(final String s) {
+    public StringEntity(final String s) 
+            throws UnsupportedEncodingException {
         this(s, null);
     }
 
@@ -82,7 +87,7 @@
     }
 
     public long getContentLength() {
-        return this.content.length();
+        return this.content.length;
     }
     
     public String getContentType() {
@@ -102,17 +107,14 @@
     }
     
     public InputStream getContent() throws IOException {
-        String charset = EntityConsumer.getContentCharSet(this);
-        return new ByteArrayInputStream(this.content.getBytes(charset));
+        return new ByteArrayInputStream(this.content);
     }
     
     public boolean writeTo(final OutputStream outstream) throws IOException {
         if (outstream == null) {
             throw new IllegalArgumentException("Output stream may not be null");
         }
-        String charset = EntityConsumer.getContentCharSet(this);
-        byte[] content = this.content.getBytes(charset);
-        outstream.write(content);
+        outstream.write(this.content);
         outstream.flush();
         return true;
     }

Modified: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/entity/TestHttpEntities.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/entity/TestHttpEntities.java?rev=322508&r1=322507&r2=322508&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/entity/TestHttpEntities.java (original)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/entity/TestHttpEntities.java Sun Oct 16 13:04:24 2005
@@ -157,13 +157,79 @@
     	for (int i = 0; i < bytes.length; i++) {
     		assertEquals(bytes[i], bytes2[i]);
     	}
-    	
+        
     	try {
     		httpentity.writeTo(null);
     		fail("IllegalArgumentException should have been thrown");
     	} catch (IllegalArgumentException ex) {
     		// expected
     	}
+    }
+    
+    public void testStringEntity() throws Exception {
+        String s = "Message content";
+        StringEntity httpentity = new StringEntity(s, "ISO-8859-1");
+        httpentity.setContentType("text/plain");
+        httpentity.setContentEncoding("identity");
+        httpentity.setChunked(false);
+        
+        byte[] bytes = s.getBytes("ISO-8859-1");
+        assertEquals(bytes.length, httpentity.getContentLength());
+        assertEquals("text/plain", httpentity.getContentType());
+        assertEquals("identity", httpentity.getContentEncoding());
+        assertNotNull(httpentity.getContent());
+        assertFalse(httpentity.isChunked());
+        assertTrue(httpentity.isRepeatable());
+    }
+
+    public void testStringEntityIllegalConstructor() throws Exception {
+        try {
+            new StringEntity(null);
+            fail("IllegalArgumentException should have been thrown");
+        } catch (IllegalArgumentException ex) {
+            // expected
+        }
+    }
+
+    public void testStringEntityDefaultContent() throws Exception {
+        String s = "Message content";
+        StringEntity httpentity = new StringEntity(s, "US-ASCII");
+        assertEquals("text/plain; charset=US-ASCII", 
+                httpentity.getContentType());
+        httpentity = new StringEntity(s);
+        assertEquals("text/plain; charset=ISO-8859-1", 
+                httpentity.getContentType());
+    }
+
+    public void testStringEntityWriteTo() throws Exception {
+        String s = "Message content";
+        byte[] bytes = s.getBytes("ISO-8859-1");
+        StringEntity httpentity = new StringEntity(s);
+        
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        assertTrue(httpentity.writeTo(out));
+        byte[] bytes2 = out.toByteArray();
+        assertNotNull(bytes2);
+        assertEquals(bytes.length, bytes2.length);
+        for (int i = 0; i < bytes.length; i++) {
+            assertEquals(bytes[i], bytes2[i]);
+        }
+
+        out = new ByteArrayOutputStream();
+        assertTrue(httpentity.writeTo(out));
+        bytes2 = out.toByteArray();
+        assertNotNull(bytes2);
+        assertEquals(bytes.length, bytes2.length);
+        for (int i = 0; i < bytes.length; i++) {
+            assertEquals(bytes[i], bytes2[i]);
+        }
+        
+        try {
+            httpentity.writeTo(null);
+            fail("IllegalArgumentException should have been thrown");
+        } catch (IllegalArgumentException ex) {
+            // expected
+        }
     }
     
 }