[ 
https://issues.apache.org/jira/browse/YARN-103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13536908#comment-13536908
 ] 

Alejandro Abdelnur commented on YARN-103:
-----------------------------------------

If developers (of AMs) suppose to use the interface only, then they should not 
see the implementing class. They should get an interface instance via a 
factory. The implementing class should not be in the same package or it should 
be package private. Using annotations in public API on methods to state they 
are for testing only is calling for trouble as developers will use those 
methods.

As I assume this pattern will hold true for more than one interface/impl set, 
we could have a generic factory for this:

{code}
  public <T> T create(Class<T> klass, Configuration conf);
{code}

Internally we can use our good old {{ReflectionUtils.newInstance()}} and drive 
the implementation from a configuration property.





                
> Add a yarn AM - RM client module
> --------------------------------
>
>                 Key: YARN-103
>                 URL: https://issues.apache.org/jira/browse/YARN-103
>             Project: Hadoop YARN
>          Issue Type: Improvement
>            Reporter: Bikas Saha
>            Assignee: Bikas Saha
>         Attachments: YARN-103.1.patch, YARN-103.2.patch, YARN-103.3.patch, 
> YARN-103.4.patch, YARN-103.4.wrapper.patch, YARN-103.5.patch, 
> YARN-103.6.patch, YARN-103.7.patch
>
>
> Add a basic client wrapper library to the AM RM protocol in order to prevent 
> proliferation of code being duplicated everywhere. Provide helper functions 
> to perform reverse mapping of container requests to RM allocation resource 
> request table format.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to