You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by th...@apache.org on 2011/05/08 19:36:33 UTC

svn commit: r1100783 - /pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java

Author: thejas
Date: Sun May  8 17:36:33 2011
New Revision: 1100783

URL: http://svn.apache.org/viewvc?rev=1100783&view=rev
Log:
PIG-1821: UDFContext.getUDFProperties does not handle collisions in hashcode of udf classname (+ arg hashcodes) (PIG-1821.3.patch)

Modified:
    pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java

Modified: pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java?rev=1100783&r1=1100782&r2=1100783&view=diff
==============================================================================
--- pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java (original)
+++ pig/branches/branch-0.9/src/org/apache/pig/impl/util/UDFContext.java Sun May  8 17:36:33 2011
@@ -182,7 +182,7 @@ public class UDFContext {
     }
     
     private UDFContextKey generateKey(Class<?> c, String[] args) {
-        return new UDFContextKey(c, args);
+        return new UDFContextKey(c.getName(), args);
     }
     
     public void reset() {
@@ -201,21 +201,17 @@ public class UDFContext {
     private static class UDFContextKey implements Serializable{
 
         private static final long serialVersionUID = 1;
-        private Class<?> udfClass;
+        private String className;
         private String[] args;
         
         UDFContextKey(){
         }
 
-        UDFContextKey(Class<?> udfClass, String [] args){
-            setValue(udfClass, args);
+        UDFContextKey(String className, String [] args){
+            this.className = className;
+            this.args = args;        
         }
 
-        void setValue(Class<?> udfClass, String [] args){
-            this.udfClass = udfClass;
-            this.args = args;
-        }
-        
         /* (non-Javadoc)
          * @see java.lang.Object#hashCode()
          */
@@ -225,10 +221,10 @@ public class UDFContext {
             int result = 1;
             result = prime * result + Arrays.hashCode(args);
             result = prime * result
-                    + ((udfClass == null) ? 0 : udfClass.getName().hashCode());
+                    + ((className == null) ? 0 : className.hashCode());
             return result;
         }
-        
+
         /* (non-Javadoc)
          * @see java.lang.Object#equals(java.lang.Object)
          */
@@ -243,7 +239,10 @@ public class UDFContext {
             UDFContextKey other = (UDFContextKey) obj;
             if (!Arrays.equals(args, other.args))
                 return false;
-            if(udfClass != other.udfClass)
+            if (className == null) {
+                if (other.className != null)
+                    return false;
+            } else if (!className.equals(other.className))
                 return false;
             return true;
         }