You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pig.apache.org by "Daniel Dai (JIRA)" <ji...@apache.org> on 2010/04/30 19:48:54 UTC
[jira] Updated: (PIG-1288) EvalFunc returnType is wrong for generic
subclasses
[ https://issues.apache.org/jira/browse/PIG-1288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Dai updated PIG-1288:
----------------------------
Status: Patch Available (was: Open)
Fix Version/s: 0.8.0
> EvalFunc returnType is wrong for generic subclasses
> ---------------------------------------------------
>
> Key: PIG-1288
> URL: https://issues.apache.org/jira/browse/PIG-1288
> Project: Pig
> Issue Type: Bug
> Components: impl
> Affects Versions: 0.7.0
> Reporter: Daniel Dai
> Assignee: Daniel Dai
> Fix For: 0.8.0
>
> Attachments: PIG-1288-1.patch
>
>
> From Garrett Buster Kaminaga:
> The EvalFunc constructor has code to determine the return type of the function.
> This walks up the object hierarchy until it encounters EvalFunc, then calls getActualTypeArguments and extracts type
> param 0.
> However, if the user class is itself a generic extension of EvalFunc, then the returned object is not the correct type,
> but a TypeVariable.
> Example:
> class MyAbstractEvalFunc<T> extends EvalFunc<T> ...
> class MyEvalFunc extends MyAbstractEvalFunc<String> ...
> when MyEvalFunc() is called, inside EvalFunc constructor the return type is set to a TypeVariable rather than
> String.class.
> The workaround we've implemented is for the MyAbstractEvalFunc<T> to determine *its* type parameters using code
> similar to that in the EvalFunc constructor, and then reset protected data member returnType manually in the
> MyAbstractEvalFunc constructor. (though this has the same drawback of not working if someone then extends
> MyAbstractEvalFunc)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.