Author: markt
Date: Tue Dec  5 22:37:33 2017
New Revision: 1817248

URL: http://svn.apache.org/viewvc?rev=1817248&view=rev
Log:
Fix SpotBugs warning (rank <=16)
serialization for ByteChunk

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
    tomcat/trunk/test/org/apache/tomcat/util/buf/TestByteChunk.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java?rev=1817248&r1=1817247&r2=1817248&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java Tue Dec  5 
22:37:33 2017
@@ -17,6 +17,8 @@
 package org.apache.tomcat.util.buf;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
@@ -127,7 +129,7 @@ public final class ByteChunk implements
     private int start=0;
     private int end;
 
-    private Charset charset;
+    private transient Charset charset;
 
     private boolean isSet=false; // XXX
 
@@ -149,6 +151,19 @@ public final class ByteChunk implements
         allocate( initial, -1 );
     }
 
+
+    private void writeObject(ObjectOutputStream oos) throws IOException {
+        oos.defaultWriteObject();
+        oos.writeUTF(getCharset().name());
+    }
+
+
+    private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        this.charset = Charset.forName(ois.readUTF());
+    }
+
+
     @Override
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
@@ -799,6 +814,7 @@ public final class ByteChunk implements
         return (ret >= start) ? ret - start : -1;
     }
 
+
     /**
      * Returns the first instance of the given character in the given byte 
array
      * between the specified start and end.

Modified: tomcat/trunk/test/org/apache/tomcat/util/buf/TestByteChunk.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/buf/TestByteChunk.java?rev=1817248&r1=1817247&r2=1817248&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/buf/TestByteChunk.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/buf/TestByteChunk.java Tue Dec  5 
22:37:33 2017
@@ -16,7 +16,12 @@
  */
 package org.apache.tomcat.util.buf;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 import org.junit.Assert;
@@ -133,4 +138,26 @@ public class TestByteChunk {
                 'e' }));
         Assert.assertEquals(-1, ByteChunk.findBytes(bytes, 2, 5, new byte[] { 
'w' }));
     }
+
+    @Test
+    public void testSerialization() throws Exception {
+        String data = "Hello world!";
+        byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
+
+        ByteChunk bcIn = new ByteChunk();
+        bcIn.setBytes(bytes, 0, bytes.length);
+        bcIn.setCharset(StandardCharsets.UTF_8);
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(baos);
+        oos.writeObject(bcIn);
+        oos.close();
+
+        ByteArrayInputStream bais = new 
ByteArrayInputStream(baos.toByteArray());
+        ObjectInputStream ois = new ObjectInputStream(bais);
+        ByteChunk bcOut = (ByteChunk) ois.readObject();
+
+        Assert.assertArrayEquals(bytes, bcOut.getBytes());
+        Assert.assertEquals(bcIn.getCharset(), bcOut.getCharset());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to