You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by wh...@apache.org on 2006/11/23 00:29:44 UTC

svn commit: r478378 - /lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java

Author: whoschek
Date: Wed Nov 22 15:29:42 2006
New Revision: 478378

URL: http://svn.apache.org/viewvc?view=rev&rev=478378
Log:
hashing on a pair isn't necessary and overly complicates semantics. So taking Pair logic out.

Modified:
    lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java

Modified: lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java?view=diff&rev=478378&r1=478377&r2=478378
==============================================================================
--- lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java (original)
+++ lucene/java/trunk/contrib/memory/src/java/org/apache/lucene/index/memory/AnalyzerUtil.java Wed Nov 22 15:29:42 2006
@@ -210,8 +210,6 @@
    * This can help improve performance in the presence of expensive Analyzer / TokenFilter chains.
    * <p>
    * Caveats: 
-   * 1) Caching only works if the methods equals() and hashCode() are properly 
-   * implemented on the Reader passed to <code>tokenStream(String fieldName, Reader reader)</code>.
    * 2) Caching the tokens of large Lucene documents can lead to out of memory exceptions. 
    * 3) The Token instances delivered by the underlying child analyzer must be immutable.
    * 
@@ -229,11 +227,10 @@
       private final HashMap cache = new HashMap();
 
       public TokenStream tokenStream(String fieldName, Reader reader) {
-        Pair key = new Pair(fieldName, reader);
-        final ArrayList tokens = (ArrayList) cache.get(key);
+        final ArrayList tokens = (ArrayList) cache.get(fieldName);
         if (tokens == null) { // not yet cached
           final ArrayList tokens2 = new ArrayList();
-          cache.put(key, tokens2);
+          cache.put(fieldName, tokens2);
           return new TokenFilter(child.tokenStream(fieldName, reader)) {
 
             public Token next() throws IOException {
@@ -439,109 +436,4 @@
     }   
   }
   
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  /**
-   * A convenience class holding two elements, namely <code>first</code> and <code>second</code>,
-   * either or both of which may be <code>null</code>.
-   */
-  private static final class Pair implements java.io.Serializable {
-    
-    protected Object first;
-    protected Object second;
-
-    private Pair() {}
-
-    /** Constructs a pair with the given two elements, either or both of which may be <code>null</code>.
-     * 
-     * @param first the first element of the pair.
-     * @param second the second element of the pair.
-     */
-    public Pair(Object first, Object second) {
-      this.first = first;
-      this.second = second;
-    }
-
-    /** Returns the first element of the pair.
-     * 
-     *  @return The first element of the pair.
-     */
-    public Object first() {
-      return this.first;
-    }
-
-    /** Returns the second element of the pair.
-     * 
-     *  @return The second element of the pair.
-     */
-    public Object second() {
-      return this.second;
-    }
-
-    public String toString() {
-      return "Pair (first=" + String.valueOf(first) + ", second=" + String.valueOf(second) + ")";
-    }
-
-    public int hashCode() {
-      return hashCode(this.first, this.second);
-    }
-
-    public boolean equals(Object other) {
-      if (!(other instanceof Pair)) return false;
-      return equals(this.first, ((Pair) other).first, this.second, ((Pair) other).second);
-    }
-
-    /** Compares two 'pairs' <code>x</code> and <code>y</code> for equality.
-     * 
-     * In other words determines <code>xA.equals(yA)</code> and <code>xB.equals(yB)</code>, 
-     * taking care of <code>null</code> values.
-     * This is a static method that avoids the inefficiency of temporary {@link Pair} objects.
-     * 
-     * @return <code>true</code> if the pair <code>x</code> and the pair <code>y</code> are equal; <code>false</code> otherwise.
-     */
-    public static boolean equals(Object xA, Object yA, Object xB, Object yB) {
-      // compare A
-      if (xA != yA) {
-        if (xA == null && yA != null)
-          return false;
-        if (xA != null && yA == null)
-          return false;
-        if (!xA.equals(yA))
-          return false;
-      }
-
-      // compare B
-      if (xB != yB) {
-        if (xB == null && yB != null)
-          return false;
-        if (xB != null && yB == null)
-          return false;
-        if (!xB.equals(yB))
-          return false;
-      }
-
-      return true;
-    }
-
-    /** Returns the hashcode of the two elements of a 'pair'.
-     * 
-     * This is a static method that avoids the inefficiency of temporary {@link Pair} objects.
-     * 
-     * @return the hash code.
-     */
-    public static int hashCode(Object x, Object y) {
-      if (x == null && y == null)
-        return 0;
-      else if (x == null)
-        return y.hashCode();
-      else if (y == null)
-        return x.hashCode();
-      else
-        return x.hashCode() ^ y.hashCode();
-    }
-
-  }
-
 }