poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject svn commit: r893057 - in /poi/trunk/src: java/org/apache/poi/hssf/record/aggregates/ testcases/org/apache/poi/hssf/record/aggregates/
Date Tue, 22 Dec 2009 01:41:17 GMT
Author: josh
Date: Tue Dec 22 01:41:16 2009
New Revision: 893057

URL: http://svn.apache.org/viewvc?rev=893057&view=rev
Log:
Fixed SharedValueManager to create separate empty instances in anticipation of instances becoming
mutable.

Modified:
    poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java
    poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestRowRecordsAggregate.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java?rev=893057&r1=893056&r2=893057&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java Tue
Dec 22 01:41:16 2009
@@ -56,9 +56,12 @@
 
 	/** Creates a new instance of ValueRecordsAggregate */
 	public RowRecordsAggregate() {
-		this(SharedValueManager.EMPTY);
+		this(SharedValueManager.createEmpty());
 	}
 	private RowRecordsAggregate(SharedValueManager svm) {
+		if (svm == null) {
+			throw new IllegalArgumentException("SharedValueManager must be provided.");
+		}
 		_rowRecords = new TreeMap<Integer, RowRecord>();
 		_valuesAgg = new ValueRecordsAggregate();
 		_unknownRecords = new ArrayList<Record>();
@@ -68,6 +71,8 @@
 	/**
 	 * @param rs record stream with all {@link SharedFormulaRecord}
 	 * {@link ArrayRecord}, {@link TableRecord} {@link MergeCellsRecord} Records removed
+	 * @param svm an initialised {@link SharedValueManager} (from the shared formula, array
+	 * and table records of the current sheet).  Never <code>null</code>.
 	 */
 	public RowRecordsAggregate(RecordStream rs, SharedValueManager svm) {
 		this(svm);

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java?rev=893057&r1=893056&r2=893057&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java Tue Dec
22 01:41:16 2009
@@ -109,8 +109,14 @@
 		}
 	}
 
-	public static final SharedValueManager EMPTY = new SharedValueManager(
+	/**
+	 * @return a new empty {@link SharedValueManager}.
+	 */
+	public static final SharedValueManager createEmpty() {
+		// Note - must create distinct instances because they are assumed to be mutable.
+		return new SharedValueManager(
 			new SharedFormulaRecord[0], new CellReference[0], new ArrayRecord[0], new TableRecord[0]);
+	}
 	private final ArrayRecord[] _arrayRecords;
 	private final TableRecord[] _tableRecords;
 	private final Map<SharedFormulaRecord, SharedFormulaGroup> _groupsBySharedFormulaRecord;
@@ -144,7 +150,7 @@
 	public static SharedValueManager create(SharedFormulaRecord[] sharedFormulaRecords,
 			CellReference[] firstCells, ArrayRecord[] arrayRecords, TableRecord[] tableRecords) {
 		if (sharedFormulaRecords.length + firstCells.length + arrayRecords.length + tableRecords.length
< 1) {
-			return EMPTY;
+			return createEmpty();
 		}
 		return new SharedValueManager(sharedFormulaRecords, firstCells, arrayRecords, tableRecords);
 	}

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java?rev=893057&r1=893056&r2=893057&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java
Tue Dec 22 01:41:16 2009
@@ -37,7 +37,7 @@
 		f.setCachedResultTypeString();
 		StringRecord s = new StringRecord();
 		s.setString("abc");
-		FormulaRecordAggregate fagg = new FormulaRecordAggregate(f, s, SharedValueManager.EMPTY);
+		FormulaRecordAggregate fagg = new FormulaRecordAggregate(f, s, SharedValueManager.createEmpty());
 		assertEquals("abc", fagg.getStringValue());
 	}
 
@@ -54,7 +54,7 @@
 		fr.setValue(2.0);
 		StringRecord sr = new StringRecord();
 		sr.setString("NA");
-		SharedValueManager svm = SharedValueManager.EMPTY;
+		SharedValueManager svm = SharedValueManager.createEmpty();
 		FormulaRecordAggregate fra;
 
 		try {

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestRowRecordsAggregate.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestRowRecordsAggregate.java?rev=893057&r1=893056&r2=893057&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestRowRecordsAggregate.java
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestRowRecordsAggregate.java
Tue Dec 22 01:41:16 2009
@@ -63,24 +63,24 @@
 
 	/**
 	 * Prior to Aug 2008, POI would re-serialize spreadsheets with {@link ArrayRecord}s or
-	 * {@link TableRecord}s with those records out of order.  Similar to 
+	 * {@link TableRecord}s with those records out of order.  Similar to
 	 * {@link SharedFormulaRecord}s, these records should appear immediately after the first
 	 * {@link FormulaRecord}s that they apply to (and only once).<br/>
 	 */
 	public void testArraysAndTables() {
 		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("testArraysAndTables.xls");
 		Record[] sheetRecs = RecordInspector.getRecords(wb.getSheetAt(0), 0);
-		
+
 		int countArrayFormulas = verifySharedValues(sheetRecs, ArrayRecord.class);
 		assertEquals(5, countArrayFormulas);
 		int countTableFormulas = verifySharedValues(sheetRecs, TableRecord.class);
 		assertEquals(3, countTableFormulas);
 
 		// Note - SharedFormulaRecords are currently not re-serialized by POI (each is extracted
-		// into many non-shared formulas), but if they ever were, the same rules would apply. 
+		// into many non-shared formulas), but if they ever were, the same rules would apply.
 		int countSharedFormulas = verifySharedValues(sheetRecs, SharedFormulaRecord.class);
 		assertEquals(0, countSharedFormulas);
-		
+
 
 		if (false) { // set true to observe re-serialized file
 			File f = new File(System.getProperty("java.io.tmpdir") + "/testArraysAndTables-out.xls");
@@ -96,7 +96,7 @@
 	}
 
 	private static int verifySharedValues(Record[] recs, Class shfClass) {
-		
+
 		int result =0;
 		for(int i=0; i<recs.length; i++) {
 			Record rec = recs[i];
@@ -105,7 +105,7 @@
 				Record prevRec = recs[i-1];
 				if (!(prevRec instanceof FormulaRecord)) {
 					throw new AssertionFailedError("Bad record order at index "
-							+ i + ": Formula record expected but got (" 
+							+ i + ": Formula record expected but got ("
 							+ prevRec.getClass().getName() + ")");
 				}
 				verifySharedFormula((FormulaRecord) prevRec, rec);
@@ -127,7 +127,7 @@
 	 * The functionality change being tested here is actually not critical to the overall fix
 	 * for bug 46280, since the fix involved making sure the that offending <i>PivotTable</i>
 	 * records do not get into {@link RowRecordsAggregate}.<br/>
-	 * This fix in {@link RowRecordsAggregate} was implemented anyway since any {@link 
+	 * This fix in {@link RowRecordsAggregate} was implemented anyway since any {@link
 	 * UnknownRecord} has the potential of being 'continued'.
 	 */
 	public void testUnknownContinue_bug46280() {
@@ -140,7 +140,7 @@
 		RecordStream rs = new RecordStream(Arrays.asList(inRecs), 0);
 		RowRecordsAggregate rra;
 		try {
-			rra = new RowRecordsAggregate(rs, SharedValueManager.EMPTY);
+			rra = new RowRecordsAggregate(rs, SharedValueManager.createEmpty());
 		} catch (RuntimeException e) {
 			if (e.getMessage().startsWith("Unexpected record type")) {
 				throw new AssertionFailedError("Identified bug 46280a");



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


Mime
View raw message