From: Josh Micich Date: Tue, 6 May 2008 03:57:15 +0000 (+0000) Subject: 42570 - fixed LabelRecord to use empty string instead of null when the length is... X-Git-Tag: REL_3_2_FINAL~360 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=34ce6171ac80f0df599fcfb58db3879dad6b0cf7;p=poi.git 42570 - fixed LabelRecord to use empty string instead of null when the length is zero. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@653675 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 5d842b02a3..c711678b33 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 42570 - fixed LabelRecord to use empty string instead of null when the length is zero. 42564 - fixed ArrayPtg to use ConstantValueParser. Fixed a few other ArrayPtg encoding issues. Follow-on from 28754 - StringPtg.toFormulaString() should escape double quotes 44929 - Improved error handling in HSSFWorkbook when attempting to read a BIFF5 file diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 97269693e5..63a6b12bf8 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 42570 - fixed LabelRecord to use empty string instead of null when the length is zero. 42564 - fixed ArrayPtg to use ConstantValueParser. Fixed a few other ArrayPtg encoding issues. Follow-on from 28754 - StringPtg.toFormulaString() should escape double quotes 44929 - Improved error handling in HSSFWorkbook when attempting to read a BIFF5 file diff --git a/src/java/org/apache/poi/hssf/record/LabelRecord.java b/src/java/org/apache/poi/hssf/record/LabelRecord.java index 2dc2d940f4..c3fd5fb3dd 100644 --- a/src/java/org/apache/poi/hssf/record/LabelRecord.java +++ b/src/java/org/apache/poi/hssf/record/LabelRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,13 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - -/* - * LabelRecord.java - * - * Created on November 11, 2001, 12:51 PM - */ package org.apache.poi.hssf.record; /** @@ -33,14 +26,10 @@ package org.apache.poi.hssf.record; * @version 2.0-pre * @see org.apache.poi.hssf.record.LabelSSTRecord */ - -public class LabelRecord - extends Record - implements CellValueRecordInterface -{ +public final class LabelRecord extends Record implements CellValueRecordInterface { public final static short sid = 0x204; - //private short field_1_row; - private int field_1_row; + + private int field_1_row; private short field_2_column; private short field_3_xf_index; private short field_4_string_len; @@ -85,35 +74,30 @@ public class LabelRecord protected void fillFields(RecordInputStream in) { - //field_1_row = LittleEndian.getShort(data, 0 + offset); field_1_row = in.readUShort(); field_2_column = in.readShort(); field_3_xf_index = in.readShort(); field_4_string_len = in.readShort(); field_5_unicode_flag = in.readByte(); if (field_4_string_len > 0) { - if (isUnCompressedUnicode()) { - field_6_value = in.readUnicodeLEString(field_4_string_len); - } else { - field_6_value = in.readCompressedUnicode(field_4_string_len); + if (isUnCompressedUnicode()) { + field_6_value = in.readUnicodeLEString(field_4_string_len); + } else { + field_6_value = in.readCompressedUnicode(field_4_string_len); + } + } else { + field_6_value = ""; } - } else field_6_value = null; } -/* READ ONLY ACCESS... THIS IS FOR COMPATIBILITY ONLY...USE LABELSST! - public void setRow(short row) { - field_1_row = row; - } - - public void setColumn(short col) { - field_2_column = col; - } - - public void setXFIndex(short index) { - field_3_xf_index = index; - } - */ - //public short getRow() +/* + * READ ONLY ACCESS... THIS IS FOR COMPATIBILITY ONLY...USE LABELSST! public + * void setRow(short row) { field_1_row = row; } + * + * public void setColumn(short col) { field_2_column = col; } + * + * public void setXFIndex(short index) { field_3_xf_index = index; } + */ public int getRow() { return field_1_row; diff --git a/src/testcases/org/apache/poi/hssf/data/ex42570-20305.xls b/src/testcases/org/apache/poi/hssf/data/ex42570-20305.xls new file mode 100644 index 0000000000..e3d4cc8372 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/ex42570-20305.xls differ diff --git a/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java b/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java index d2a1b36841..2b8e3c3ab5 100755 --- a/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java +++ b/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java @@ -67,6 +67,7 @@ public final class AllRecordTests { result.addTestSuite(TestFormulaRecord.class); result.addTestSuite(TestFrameRecord.class); result.addTestSuite(TestHyperlinkRecord.class); + result.addTestSuite(TestLabelRecord.class); result.addTestSuite(TestLegendRecord.class); result.addTestSuite(TestLineFormatRecord.class); result.addTestSuite(TestLinkedDataRecord.class); diff --git a/src/testcases/org/apache/poi/hssf/record/TestLabelRecord.java b/src/testcases/org/apache/poi/hssf/record/TestLabelRecord.java new file mode 100644 index 0000000000..10f363652e --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/record/TestLabelRecord.java @@ -0,0 +1,41 @@ +/* ==================================================================== + 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. +==================================================================== */ + +package org.apache.poi.hssf.record; + +import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; +/** + * Tests for LabelRecord + * + * @author Josh Micich + */ +public final class TestLabelRecord extends TestCase { + + public void testEmptyString() { + HSSFWorkbook wb; + try { + wb = HSSFTestDataSamples.openSampleWorkbook("ex42570-20305.xls"); + } catch (NullPointerException e) { + throw new AssertionFailedError("Identified bug 42570"); + } + HSSFTestDataSamples.writeOutAndReadBack(wb); + } +}