You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2010/07/16 15:57:17 UTC

svn commit: r964800 - in /poi/trunk/src: documentation/content/xdocs/status.xml java/org/apache/poi/hssf/record/NoteRecord.java testcases/org/apache/poi/hssf/record/TestNoteRecord.java

Author: nick
Date: Fri Jul 16 13:57:17 2010
New Revision: 964800

URL: http://svn.apache.org/viewvc?rev=964800&view=rev
Log:
49599 - Correct writing of NoteRecord author text when switching between ASCII and Unicode

Modified:
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=964800&r1=964799&r2=964800&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Fri Jul 16 13:57:17 2010
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-beta2" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">49599 - Correct writing of NoteRecord author text when switching between ASCII and Unicode</action>
            <action dev="POI-DEVELOPERS" type="fix">HWPF: Improve reading of auto-saved ("complex") documents</action>
            <action dev="POI-DEVELOPERS" type="add">Paragraph level as well as whole-file text extraction for Word 6/95 files through HWPF</action>
            <action dev="POI-DEVELOPERS" type="add">Text Extraction support for older Word 6 and Word 95 files via HWPF</action>

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java?rev=964800&r1=964799&r2=964800&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java Fri Jul 16 13:57:17 2010
@@ -190,6 +190,13 @@ public final class NoteRecord extends St
 	public void setFlags(short flags) {
 		field_3_flags = flags;
 	}
+	
+	/**
+	 * For unit testing only!
+	 */
+	protected boolean authorIsMultibyte() {
+	   return field_5_hasMultibyte;
+	}
 
 	/**
 	 * Object id for OBJ record that contains the comment
@@ -221,6 +228,7 @@ public final class NoteRecord extends St
 	 */
 	public void setAuthor(String author) {
 		field_6_author = author;
+      field_5_hasMultibyte = StringUtil.hasMultibyte(author);
 	}
 
 	public Object clone() {

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java?rev=964800&r1=964799&r2=964800&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java Fri Jul 16 13:57:17 2010
@@ -102,8 +102,34 @@ public final class TestNoteRecord extend
             throw new AssertionFailedError("Identified bug in reading note with unicode author");
         }
         assertEquals("\u30A2\u30D1\u30C3\u30C1\u65CF", nr.getAuthor());
+        assertTrue(nr.authorIsMultibyte());
         
         byte[] ser = nr.serialize();
         TestcaseRecordInputStream.confirmRecordEncoding(NoteRecord.sid, data, ser);
+
+        // Re-check
+        in = TestcaseRecordInputStream.create(ser);
+        nr = new NoteRecord(in);
+        assertEquals("\u30A2\u30D1\u30C3\u30C1\u65CF", nr.getAuthor());
+        assertTrue(nr.authorIsMultibyte());
+        
+        
+        // Change to a non unicode author, will stop being unicode
+        nr.setAuthor("Simple");
+        ser = nr.serialize();
+        in = TestcaseRecordInputStream.create(ser);
+        nr = new NoteRecord(in);
+        
+        assertEquals("Simple", nr.getAuthor());
+        assertFalse(nr.authorIsMultibyte());
+        
+        // Now set it back again
+        nr.setAuthor("Unicode\u1234");
+        ser = nr.serialize();
+        in = TestcaseRecordInputStream.create(ser);
+        nr = new NoteRecord(in);
+        
+        assertEquals("Unicode\u1234", nr.getAuthor());
+        assertTrue(nr.authorIsMultibyte());
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org