Author: kiwiwings
Date: Sun Feb  9 21:19:20 2014
New Revision: 1566427

URL: http://svn.apache.org/r1566427
Log:
FindBugs fix
- fixed "Class defines equals() and uses Object.hashCode()"
- see 
http://findbugs.sourceforge.net/bugDescriptions.html#HE_EQUALS_USE_HASHCODE
- implemented UnicodeString.ExtRst.hashCode() + junit-test

Modified:
    poi/trunk/build.xml
    poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java
    poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
    poi/trunk/src/java/org/apache/poi/ss/util/Region.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Ffn.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FontTable.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java
    
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/UPX.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java
    
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java
    
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java
    
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java

Modified: poi/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/build.xml (original)
+++ poi/trunk/build.xml Sun Feb  9 21:19:20 2014
@@ -884,7 +884,7 @@ under the License.
                   <classpath refid="@{classpath}"/>
                   <syspropertyset refid="junit.properties"/>
                   <jvmarg value="${poi.test.locale}"/>
-    <!--              <jvmarg value="-ea"/> -->
+                  <jvmarg value="-ea"/>
                   <formatter type="plain"/>
                   <formatter type="xml"/>
                   <batchtest todir="${ooxml.reports.test}">

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java Sun Feb  
9 21:19:20 2014
@@ -90,7 +90,13 @@ public final class HyperlinkRecord exten
                            && _d3 == other._d3 && _d4 == other._d4;
                }
 
-               public int getD1() {
+       @Override
+       public int hashCode() {
+           assert false : "hashCode not designed";
+           return 42; // any arbitrary constant will do
+       }
+
+       public int getD1() {
                        return _d1;
                }
 

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java Sun 
Feb  9 21:19:20 2014
@@ -18,14 +18,21 @@
 package org.apache.poi.hssf.record.common;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.poi.hssf.record.cont.ContinuableRecordInput;
 import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.record.cont.ContinuableRecordInput;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
-import org.apache.poi.util.*;
+import org.apache.poi.util.BitField;
+import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Title: Unicode String<p/>
@@ -88,6 +95,12 @@ public class UnicodeString implements Co
             return _character - r._character;
         }
 
+        @Override
+        public int hashCode() {
+            assert false : "hashCode not designed";
+            return 42; // any arbitrary constant will do
+        }
+
         public String toString() {
             return "character="+_character+",fontIndex="+_fontIndex;
         }
@@ -248,17 +261,33 @@ public class UnicodeString implements Co
              if(result != 0) return result;
              result = phRuns[i].realTextFirstCharacterOffset - 
o.phRuns[i].realTextFirstCharacterOffset;
              if(result != 0) return result;
-             result = phRuns[i].realTextFirstCharacterOffset - 
o.phRuns[i].realTextLength;
+             result = phRuns[i].realTextLength - o.phRuns[i].realTextLength;
              if(result != 0) return result;
           }
           
-          result = extraData.length - o.extraData.length;
-          if(result != 0) return result;
+          result = Arrays.hashCode(extraData)-Arrays.hashCode(o.extraData);
           
-          // If we get here, it's the same
-          return 0;
+          return result;
        }
-       
+
+       @Override
+       public int hashCode() {
+           int hash = reserved;
+           hash = 31*hash+formattingFontIndex;
+           hash = 31*hash+formattingOptions;
+           hash = 31*hash+numberOfRuns;
+           hash = 31*hash+phoneticText.hashCode();
+
+           if (phRuns != null) {
+               for (PhRun ph : phRuns) {
+                   hash = 31*hash+ph.phoneticTextFirstCharacterOffset;
+                   hash = 31*hash+ph.realTextFirstCharacterOffset;
+                   hash = 31*hash+ph.realTextLength;
+               }
+           }
+           return hash;
+       }
+
        protected ExtRst clone() {
           ExtRst ext = new ExtRst();
           ext.reserved = reserved;

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java Sun 
Feb  9 21:19:20 2014
@@ -140,4 +140,10 @@ public final class HSSFChildAnchor exten
         return anchor.getDx1() == getDx1() && anchor.getDx2() == getDx2() && 
anchor.getDy1() == getDy1()
                 && anchor.getDy2() == getDy2();
     }
+
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java Sun 
Feb  9 21:19:20 2014
@@ -275,6 +275,12 @@ public final class HSSFClientAnchor exte
     }
 
     @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+      }
+
+    @Override
     public int getDx1() {
         return _escherClientAnchor.getDx1();
     }

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java 
Sun Feb  9 21:19:20 2014
@@ -301,6 +301,7 @@ public final class HSSFRichTextString im
        return _string.compareTo(r._string);
     }
 
+    @Override
     public boolean equals(Object o) {
       if (o instanceof HSSFRichTextString) {
         return _string.equals(((HSSFRichTextString)o)._string);
@@ -309,6 +310,13 @@ public final class HSSFRichTextString im
 
     }
 
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
+
+    
     /**
      * @return  the plain text representation of this string.
      */

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java Sun Feb  9 
21:19:20 2014
@@ -23,10 +23,10 @@ import java.util.NoSuchElementException;
 import org.apache.poi.hssf.record.CellValueRecordInterface;
 import org.apache.poi.hssf.record.ExtendedFormatRecord;
 import org.apache.poi.hssf.record.RowRecord;
+import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.util.Configurator;
 
 /**
@@ -684,6 +684,7 @@ public final class HSSFRow implements Ro
         return -1;
     }
 
+    @Override
     public boolean equals(Object obj)
     {
         if (!(obj instanceof HSSFRow))
@@ -698,4 +699,10 @@ public final class HSSFRow implements Ro
         }
         return false;
     }
+
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java Sun Feb  9 
21:19:20 2014
@@ -517,4 +517,10 @@ public class CellReference {
                        && _isRowAbs == cr._isColAbs
                        && _isColAbs == cr._isColAbs;
        }
+
+       @Override
+       public int hashCode() {
+           assert false : "hashCode not designed";
+           return 42; // any arbitrary constant will do
+       }
 }

Modified: poi/trunk/src/java/org/apache/poi/ss/util/Region.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/Region.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/util/Region.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/util/Region.java Sun Feb  9 21:19:20 
2014
@@ -164,6 +164,14 @@ public class Region implements Comparabl
                return (compareTo(r) == 0);
        }
 
+
+       @Override
+       public int hashCode() {
+           assert false : "hashCode not designed";
+           return 42; // any arbitrary constant will do
+       }
+
+       
        /**
         * Compares that the given region is the same less than or greater than 
this
         * region.  If any regional coordiant passed in is less than this 
regions

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java 
(original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java 
Sun Feb  9 21:19:20 2014
@@ -173,6 +173,12 @@ public final class XSSFClientAnchor exte
     }
 
     @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
+
+    @Override
     public String toString(){
         return "from : " + cell1.toString()  + "; to: " + cell2.toString();
     }

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Ffn.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Ffn.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Ffn.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Ffn.java Sun Feb  9 
21:19:20 2014
@@ -181,7 +181,8 @@ public final class Ffn
 
   }
 
-    public boolean equals(Object o)
+  @Override
+  public boolean equals(Object o)
     {
     boolean retVal = true;
 
@@ -227,6 +228,11 @@ public final class Ffn
   }
 
 
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
 }
 
 

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FontTable.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FontTable.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FontTable.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FontTable.java Sun 
Feb  9 21:19:20 2014
@@ -137,6 +137,7 @@ public final class FontTable
 
   }
 
+  @Override
   public boolean equals(Object o)
   {
        boolean retVal = true;
@@ -162,8 +163,10 @@ public final class FontTable
          return retVal;
   }
 
-
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
 
 }
-
-

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java Sun 
Feb  9 21:19:20 2014
@@ -101,6 +101,7 @@ public final class ListLevel
         _xst = new Xst(numberText);
     }
 
+    @Override
     public boolean equals( Object obj )
     {
         if ( obj == null )
@@ -113,6 +114,12 @@ public final class ListLevel
                 && lvl._xst.equals( this._xst );
     }
 
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+      }
+
     /**
      * "Alignment (left, right, or centered) of the paragraph number."
      */

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java Sun Feb  9 
21:19:20 2014
@@ -155,6 +155,7 @@ public final class PAPX extends ByteProp
     return props;
   }
 
+  @Override
   public boolean equals(Object o)
   {
     if (super.equals(o))
@@ -164,6 +165,12 @@ public final class PAPX extends ByteProp
     return false;
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+
     public String toString()
     {
         return "PAPX from " + getStart() + " to " + getEnd() + " (in bytes "

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java 
Sun Feb  9 21:19:20 2014
@@ -81,4 +81,11 @@ public final class ParagraphHeight
     return infoField == ph.infoField && reserved == ph.reserved &&
            dxaCol == ph.dxaCol && dymLineOrHeight == ph.dymLineOrHeight;
   }
+
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+
 }

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java Sun Feb  9 
21:19:20 2014
@@ -64,6 +64,7 @@ public final class SEPX extends Property
         return sectionProperties;
     }
 
+    @Override
     public boolean equals( Object o )
     {
         SEPX sepx = (SEPX) o;
@@ -74,6 +75,12 @@ public final class SEPX extends Property
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
+
     public String toString()
     {
         return "SEPX from " + getStart() + " to " + getEnd();

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java 
(original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java 
Sun Feb  9 21:19:20 2014
@@ -77,12 +77,19 @@ public final class SectionDescriptor
     this.fcSepx = fc;
   }
 
+  @Override
   public boolean equals(Object o)
   {
     SectionDescriptor sed = (SectionDescriptor)o;
     return sed.fn == fn && sed.fnMpr == fnMpr;
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+  
   public byte[] toByteArray()
   {
     int offset = 0;

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java Sun 
Feb  9 21:19:20 2014
@@ -174,6 +174,8 @@ public final class StyleSheet implements
       }
     }
   }
+
+  @Override
   public boolean equals(Object o)
   {
     StyleSheet ss = (StyleSheet)o;
@@ -199,6 +201,13 @@ public final class StyleSheet implements
     }
     return false;
   }
+
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+
   /**
    * Creates a PartagraphProperties object from a papx stored in the
    * StyleDescription at the index istd in the StyleDescription array. The PAP

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java Sun 
Feb  9 21:19:20 2014
@@ -201,6 +201,7 @@ public class TextPiece extends PropertyN
           return (getEnd() - getStart()) * (_usesUnicode ? 2 : 1);
    }
 
+   @Override
    public boolean equals(Object o)
    {
      if (limitsAreEqual(o))
@@ -212,6 +213,12 @@ public class TextPiece extends PropertyN
      return false;
    }
 
+   @Override
+   public int hashCode() {
+       assert false : "hashCode not designed";
+       return 42; // any arbitrary constant will do
+   }
+
 
    /**
     * Returns the character position we start at.

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/UPX.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/UPX.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/UPX.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/UPX.java Sun Feb  9 
21:19:20 2014
@@ -40,12 +40,19 @@ public final class UPX
     return _upx.length;
   }
 
+  @Override
   public boolean equals(Object o)
   {
     UPX upx = (UPX)o;
     return Arrays.equals(_upx, upx._upx);
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+
     @Override
     public String toString()
     {

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java Sun 
Feb  9 21:19:20 2014
@@ -150,12 +150,20 @@ public final class SprmBuffer implements
         _buf = newBuf;
     }
 }
+
+  @Override
   public boolean equals(Object obj)
   {
     SprmBuffer sprmBuf = (SprmBuffer)obj;
     return (Arrays.equals(_buf, sprmBuf._buf));
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+
   public SprmOperation findSprm( short opcode )
 {
     int operation = SprmOperation.getOperationFromOpcode( opcode );

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java 
Sun Feb  9 21:19:20 2014
@@ -68,12 +68,19 @@ public final class BorderCode implements
     return _info == 0 && _info2 == 0 || _info == -1;
   }
 
+  @Override
   public boolean equals(Object o)
   {
     BorderCode brc = (BorderCode)o;
     return _info == brc._info && _info2 == brc._info2;
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+  
   public Object clone()
     throws CloneNotSupportedException
   {

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java 
Sun Feb  9 21:19:20 2014
@@ -72,12 +72,19 @@ public final class DateAndTime
     LittleEndian.putShort(buf, offset + LittleEndian.SHORT_SIZE, _info2);
   }
 
+  @Override
   public boolean equals(Object o)
   {
     DateAndTime dttm = (DateAndTime)o;
     return _info == dttm._info && _info2 == dttm._info2;
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+  
   public Object clone()
     throws CloneNotSupportedException
   {

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java
 Sun Feb  9 21:19:20 2014
@@ -71,6 +71,8 @@ public final class LineSpacingDescriptor
   {
     _dyaLine = dyaLine;
   }
+  
+  @Override
   public boolean equals(Object o)
   {
     LineSpacingDescriptor lspd = (LineSpacingDescriptor)o;
@@ -78,6 +80,12 @@ public final class LineSpacingDescriptor
     return _dyaLine == lspd._dyaLine && _fMultiLinespace == 
lspd._fMultiLinespace;
   }
 
+  @Override
+  public int hashCode() {
+      assert false : "hashCode not designed";
+      return 42; // any arbitrary constant will do
+  }
+  
     public boolean isEmpty()
     {
         return _dyaLine == 0 && _fMultiLinespace == 0;

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java
 Sun Feb  9 21:19:20 2014
@@ -45,7 +45,8 @@ public final class SectionProperties ext
 
         return copy;
     }
-
+    
+    @Override
     public boolean equals( Object obj )
     {
         Field[] fields = SectionProperties.class.getSuperclass()
@@ -74,4 +75,9 @@ public final class SectionProperties ext
         }
     }
 
+    @Override
+    public int hashCode() {
+        assert false : "hashCode not designed";
+        return 42; // any arbitrary constant will do
+    }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java Sun 
Feb  9 21:19:20 2014
@@ -17,87 +17,80 @@
 
 package org.apache.poi.hssf.record;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
 import org.apache.poi.hssf.record.aggregates.AllRecordAggregateTests;
 import org.apache.poi.hssf.record.cf.TestCellRange;
 import org.apache.poi.hssf.record.chart.AllChartRecordTests;
 import org.apache.poi.hssf.record.common.TestUnicodeString;
-import org.apache.poi.ss.formula.constant.TestConstantValueParser;
 import org.apache.poi.hssf.record.crypto.AllHSSFEncryptionTests;
-import org.apache.poi.ss.formula.ptg.AllFormulaTests;
 import org.apache.poi.hssf.record.pivot.AllPivotRecordTests;
+import org.apache.poi.ss.formula.constant.TestConstantValueParser;
+import org.apache.poi.ss.formula.ptg.AllFormulaTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
 
 /**
  * Collects all tests for package <tt>org.apache.poi.hssf.record</tt> and 
sub-packages.
- *
- * @author Josh Micich
  */
+@RunWith(Suite.class)
[email protected]({
+    AllChartRecordTests.class,
+    AllHSSFEncryptionTests.class,
+    AllFormulaTests.class,
+    AllPivotRecordTests.class,
+    AllRecordAggregateTests.class,
+    TestArrayRecord.class,
+    TestBOFRecord.class,
+    TestBoolErrRecord.class,
+    TestBoundSheetRecord.class,
+    TestCellRange.class,
+    TestCFHeaderRecord.class,
+    TestCFRuleRecord.class,
+    TestColumnInfoRecord.class,
+    TestCommonObjectDataSubRecord.class,
+    TestConstantValueParser.class,
+    TestDVALRecord.class,
+    TestDrawingGroupRecord.class,
+    TestDrawingRecord.class,
+    TestEmbeddedObjectRefSubRecord.class,
+    TestEndSubRecord.class,
+    TestEscherAggregate.class,
+    TestExtendedFormatRecord.class,
+    TestExternalNameRecord.class,
+    TestFeatRecord.class,
+    TestFontRecord.class,
+    TestFormulaRecord.class,
+    TestHyperlinkRecord.class,
+    TestInterfaceEndRecord.class,
+    TestLabelRecord.class,
+    TestLbsDataSubRecord.class,
+    TestMergeCellsRecord.class,
+    TestNameRecord.class,
+    TestNoteRecord.class,
+    TestNoteStructureSubRecord.class,
+    TestObjRecord.class,
+    TestPaletteRecord.class,
+    TestPaneRecord.class,
+    TestPLVRecord.class,
+    TestRecalcIdRecord.class,
+    TestRecordFactory.class,
+    TestRecordFactoryInputStream.class,
+    TestRecordInputStream.class,
+    TestSCLRecord.class,
+    TestSSTDeserializer.class,
+    TestSSTRecord.class,
+    TestSSTRecordSizeCalculator.class,
+    TestSharedFormulaRecord.class,
+    TestStringRecord.class,
+    TestStyleRecord.class,
+    TestSubRecord.class,
+    TestSupBookRecord.class,
+    TestTableRecord.class,
+    TestTextObjectBaseRecord.class,
+    TestTextObjectRecord.class,
+    TestUnicodeNameRecord.class,
+    TestUnicodeString.class,
+    TestWriteAccessRecord.class,
+    TestDConRefRecord.class
+})
 public final class AllRecordTests {
-
-       public static Test suite() {
-               TestSuite result = new 
TestSuite(AllRecordTests.class.getName());
-
-               result.addTest(AllChartRecordTests.suite());
-               result.addTest(AllHSSFEncryptionTests.suite());
-               result.addTest(AllFormulaTests.suite());
-               result.addTest(AllPivotRecordTests.suite());
-               result.addTest(AllRecordAggregateTests.suite());
-
-               result.addTestSuite(TestArrayRecord.class);
-               result.addTestSuite(TestBOFRecord.class);
-               result.addTestSuite(TestBoolErrRecord.class);
-               result.addTestSuite(TestBoundSheetRecord.class);
-               result.addTestSuite(TestCellRange.class);
-               result.addTestSuite(TestCFHeaderRecord.class);
-               result.addTestSuite(TestCFRuleRecord.class);
-               result.addTestSuite(TestColumnInfoRecord.class);
-               result.addTestSuite(TestCommonObjectDataSubRecord.class);
-               result.addTestSuite(TestConstantValueParser.class);
-               result.addTestSuite(TestDVALRecord.class);
-               result.addTestSuite(TestDrawingGroupRecord.class);
-               result.addTestSuite(TestDrawingRecord.class);
-               result.addTestSuite(TestEmbeddedObjectRefSubRecord.class);
-               result.addTestSuite(TestEndSubRecord.class);
-               result.addTestSuite(TestEscherAggregate.class);
-               result.addTestSuite(TestExtendedFormatRecord.class);
-               result.addTestSuite(TestExternalNameRecord.class);
-               result.addTestSuite(TestFeatRecord.class);
-               result.addTestSuite(TestFontRecord.class);
-               result.addTestSuite(TestFormulaRecord.class);
-               result.addTestSuite(TestHyperlinkRecord.class);
-               result.addTestSuite(TestInterfaceEndRecord.class);
-               result.addTestSuite(TestLabelRecord.class);
-               result.addTestSuite(TestLbsDataSubRecord.class);
-               result.addTestSuite(TestMergeCellsRecord.class);
-               result.addTestSuite(TestNameRecord.class);
-               result.addTestSuite(TestNoteRecord.class);
-               result.addTestSuite(TestNoteStructureSubRecord.class);
-               result.addTestSuite(TestObjRecord.class);
-               result.addTestSuite(TestPaletteRecord.class);
-               result.addTestSuite(TestPaneRecord.class);
-               result.addTestSuite(TestPLVRecord.class);
-               result.addTestSuite(TestRecalcIdRecord.class);
-               result.addTestSuite(TestRecordFactory.class);
-               result.addTestSuite(TestRecordFactoryInputStream.class);
-               result.addTestSuite(TestRecordInputStream.class);
-               result.addTestSuite(TestSCLRecord.class);
-               result.addTestSuite(TestSSTDeserializer.class);
-               result.addTestSuite(TestSSTRecord.class);
-               result.addTestSuite(TestSSTRecordSizeCalculator.class);
-               result.addTestSuite(TestSharedFormulaRecord.class);
-               result.addTestSuite(TestStringRecord.class);
-               result.addTestSuite(TestStyleRecord.class);
-               result.addTestSuite(TestSubRecord.class);
-               result.addTestSuite(TestSupBookRecord.class);
-               result.addTestSuite(TestTableRecord.class);
-               result.addTestSuite(TestTextObjectBaseRecord.class);
-               result.addTestSuite(TestTextObjectRecord.class);
-               result.addTestSuite(TestUnicodeNameRecord.class);
-               result.addTestSuite(TestUnicodeString.class);
-               result.addTestSuite(TestWriteAccessRecord.class);
-                result.addTestSuite(TestDConRefRecord.class);
-               return result;
-       }
 }

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java?rev=1566427&r1=1566426&r2=1566427&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
 Sun Feb  9 21:19:20 2014
@@ -17,19 +17,25 @@
 
 package org.apache.poi.hssf.record.common;
 
+import static org.junit.Assert.assertEquals;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.hssf.record.ContinueRecord;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
 import org.apache.poi.hssf.record.common.UnicodeString.ExtRst;
 import org.apache.poi.hssf.record.common.UnicodeString.FormatRun;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
+import org.apache.poi.util.LittleEndianByteArrayInputStream;
+import org.apache.poi.util.LittleEndianByteArrayOutputStream;
+import org.apache.poi.util.LittleEndianConsts;
+import org.apache.poi.util.LittleEndianInput;
 import org.apache.poi.util.LittleEndianInputStream;
 import org.apache.poi.util.LittleEndianOutputStream;
+import org.apache.poi.util.StringUtil;
+import org.junit.Test;
 
 /**
  * Tests that {@link UnicodeString} record size calculates correctly.  The 
record size
@@ -37,7 +43,7 @@ import org.apache.poi.util.LittleEndianO
  *
  * @author Jason Height (jheight at apache.org)
  */
-public final class TestUnicodeString extends TestCase {
+public final class TestUnicodeString {
     private static final int MAX_DATA_SIZE = 
RecordInputStream.MAX_RECORD_DATA_SIZE;
 
     /** a 4 character string requiring 16 bit encoding */
@@ -65,7 +71,8 @@ public final class TestUnicodeString ext
         assertEquals(expectedSize, actualSize);
     }
 
-    public void testSmallStringSize() {
+    @Test
+    public void smallStringSize() {
         //Test a basic string
         UnicodeString s = makeUnicodeString("Test");
         confirmSize(7, s);
@@ -111,7 +118,8 @@ public final class TestUnicodeString ext
         confirmSize(21, s);
     }
 
-    public void testPerfectStringSize() {
+    @Test
+    public void perfectStringSize() {
       //Test a basic string
       UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1);
       confirmSize(MAX_DATA_SIZE, s);
@@ -124,7 +132,8 @@ public final class TestUnicodeString ext
       confirmSize(MAX_DATA_SIZE-1, s);
     }
 
-    public void testPerfectRichStringSize() {
+    @Test
+    public void perfectRichStringSize() {
       //Test a rich text string
       UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1-8-2);
       s.addFormatRun(new UnicodeString.FormatRun((short)1,(short)0));
@@ -142,14 +151,16 @@ public final class TestUnicodeString ext
       confirmSize(MAX_DATA_SIZE-1, s);
     }
 
-    public void testContinuedStringSize() {
+    @Test
+    public void continuedStringSize() {
       //Test a basic string
       UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1+20);
       confirmSize(MAX_DATA_SIZE+4+1+20, s);
     }
 
     /** Tests that a string size calculation that fits neatly in two records, 
the second being a continue*/
-    public void testPerfectContinuedStringSize() {
+    @Test
+    public void perfectContinuedStringSize() {
       //Test a basic string
       int strSize = MAX_DATA_SIZE*2;
       //String overhead
@@ -162,7 +173,8 @@ public final class TestUnicodeString ext
       confirmSize(MAX_DATA_SIZE*2, s);
     }
     
-    public void testFormatRun() throws Exception {
+    @Test
+    public void formatRun() throws Exception {
        FormatRun fr = new FormatRun((short)4, (short)0x15c);
        assertEquals(4, fr.getCharacterPos());
        assertEquals(0x15c, fr.getFontIndex());
@@ -187,7 +199,8 @@ public final class TestUnicodeString ext
        assertEquals(0x15c, fr.getFontIndex());
     }
     
-    public void testExtRstFromEmpty() throws Exception {
+    @Test
+    public void extRstFromEmpty() throws Exception {
        ExtRst ext = new ExtRst();
        
        assertEquals(0, ext.getNumberOfRuns());
@@ -253,7 +266,8 @@ public final class TestUnicodeString ext
        assertEquals(0, ext.getPhRuns().length);
     }
     
-    public void testExtRstFromData() throws Exception {
+    @Test
+    public void extRstFromData() throws Exception {
        byte[] data = new byte[] {
              01, 00, 0x0C, 00, 
              00, 00, 0x37, 00, 
@@ -276,7 +290,8 @@ public final class TestUnicodeString ext
        assertEquals(0, ext.getPhRuns().length);
     }
     
-    public void testCorruptExtRstDetection() throws Exception {
+    @Test
+    public void corruptExtRstDetection() throws Exception {
        byte[] data = new byte[] {
              0x79, 0x79, 0x11, 0x11, 
              0x22, 0x22, 0x33, 0x33, 
@@ -302,6 +317,32 @@ public final class TestUnicodeString ext
        assertEquals(0, ext.getPhRuns().length);
     }
 
+    @Test
+    public void extRstEqualsAndHashCode() {
+        byte buf[] = new byte[200];
+        LittleEndianByteArrayOutputStream bos = new 
LittleEndianByteArrayOutputStream(buf, 0);
+        String str = "\u1d02\u1d12\u1d22";
+        bos.writeShort(1);
+        
bos.writeShort(5*LittleEndianConsts.SHORT_SIZE+str.length()*2+3*LittleEndianConsts.SHORT_SIZE+2);
 // data size
+        bos.writeShort(0x4711);
+        bos.writeShort(0x0815);
+        bos.writeShort(1);
+        bos.writeShort(str.length());
+        bos.writeShort(str.length());
+        StringUtil.putUnicodeLE(str, bos);
+        bos.writeShort(1);
+        bos.writeShort(1);
+        bos.writeShort(3);
+        bos.writeShort(42);
+        
+        LittleEndianInput in = new LittleEndianByteArrayInputStream(buf, 0, 
bos.getWriteIndex());
+        UnicodeString.ExtRst extRst1 = new UnicodeString.ExtRst(in, 
bos.getWriteIndex());
+        in = new LittleEndianByteArrayInputStream(buf, 0, bos.getWriteIndex());
+        UnicodeString.ExtRst extRst2 = new UnicodeString.ExtRst(in, 
bos.getWriteIndex());
+        
+        assertEquals(extRst1, extRst2);
+        assertEquals(extRst1.hashCode(), extRst2.hashCode());
+    }
 
     private static UnicodeString makeUnicodeString(String s) {
       UnicodeString st = new UnicodeString(s);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to