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:35:53 UTC
svn commit: r1100782 -
/pig/trunk/src/org/apache/pig/impl/util/UDFContext.java
Author: thejas
Date: Sun May 8 17:35:52 2011
New Revision: 1100782
URL: http://svn.apache.org/viewvc?rev=1100782&view=rev
Log:
PIG-1821: UDFContext.getUDFProperties does not handle collisions in hashcode of udf classname (+ arg hashcodes) (PIG-1821.3.patch)
Modified:
pig/trunk/src/org/apache/pig/impl/util/UDFContext.java
Modified: pig/trunk/src/org/apache/pig/impl/util/UDFContext.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/impl/util/UDFContext.java?rev=1100782&r1=1100781&r2=1100782&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/impl/util/UDFContext.java (original)
+++ pig/trunk/src/org/apache/pig/impl/util/UDFContext.java Sun May 8 17:35:52 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;
}