[ 
https://issues.apache.org/jira/browse/HBASE-765?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan Smith updated HBASE-765:
-----------------------------

    Description: 
Spring can configure classes/object graphs via xml.  I am pretty much able to 
configure the entire MR object graph to launch MR jobs via spring except class 
IndexConfiguration.java. So instead of only using addFromXML() to configure 
IndexConfiguration, it would be nice to add support so Spring could set all 
class variables needed for initialization in IndexConfiguration without 
invoking addFromXML().  

Since the class IndexConfiguration already has setters and getters for almost 
all its members, it's almost compliant for a spring configuration bean except 
one issue: no ability to configure columnMap outside of calling addFromXML().  
The easiest way i can figure is to allow a setter for the column map and put 
any logic for checking the map integrity there.  By adding a few methods to 
IndexConfiguration.java , it should solve the issue.

I will be submitting a patch for it here shortly.


  was:
Spring can configure classes/object graphs via xml.  I am pretty much able to 
configure the entire MR object graph to launch MR jobs via spring except class 
IndexConfiguration.java. So instead of only using addFromXML() to configure 
IndexConfiguration, it would be nice to add support so Spring could set all 
class variables needed for initialization in IndexConfiguration without 
invoking addFromXML().  

Since the class IndexConfiguration already has setters and getters for almost 
all its members, it's almost compliant for a spring configuration bean except 
one issue: no ability to configure columnMap outside of calling addFromXML().  
The easiest way i can figure is to allow a setter for the column map and put 
any logic for checking the map integrity there.  By adding these 2 methods to 
IndexConfiguration.java , it should solve the issue.



        public void setColumnConfs(List<ColumnConf> columnConfList) {
                setColumnConfs(columnConfList, true);
        }
        
        public void setColumnConfs(List<ColumnConf> columnConfList, boolean 
override) {
                for (ColumnConf columnConf: columnConfList) {
                        if (columnConf.getProperty(HBASE_COLUMN_NAME) != null) {
                                if 
(getColumnMap().containsKey(columnConf.getProperty(HBASE_COLUMN_NAME)) ) {
                                        if (override) {
                                                log.info("overwriting an 
exisitng column name map.");
                                                
this.columnMap.put(columnConf.getProperty(HBASE_COLUMN_NAME), columnConf);
                                        }
                                } else {
                                        log.info("adding columnConf for: " + 
columnConf.getProperty(HBASE_COLUMN_NAME));
                                
this.columnMap.put(columnConf.getProperty(HBASE_COLUMN_NAME), columnConf);
                                }
                    } else {
                        log.warn("bad column conf: name not specified");
                    }
                }
        }

We could possibly also have addFromXML() reference these new methods to add 
config to columnMap or refactor out logic into another method so addFromXML and 
setColumnConfs share the same logic.

Ive never submitted a patch via JIRA before so if i need to do something else, 
please met me know.



> Adding basic Spring DI support to IndexConfiguration class.
> -----------------------------------------------------------
>
>                 Key: HBASE-765
>                 URL: https://issues.apache.org/jira/browse/HBASE-765
>             Project: Hadoop HBase
>          Issue Type: Improvement
>          Components: mapred
>    Affects Versions: 0.16.0, 0.1.0, 0.1.1, 0.1.2, 0.1.3
>         Environment: n/a
>            Reporter: Ryan Smith
>            Priority: Minor
>             Fix For: 0.2.1, 0.3.0
>
>   Original Estimate: 0.33h
>  Remaining Estimate: 0.33h
>
> Spring can configure classes/object graphs via xml.  I am pretty much able to 
> configure the entire MR object graph to launch MR jobs via spring except 
> class IndexConfiguration.java. So instead of only using addFromXML() to 
> configure IndexConfiguration, it would be nice to add support so Spring could 
> set all class variables needed for initialization in IndexConfiguration 
> without invoking addFromXML().  
> Since the class IndexConfiguration already has setters and getters for almost 
> all its members, it's almost compliant for a spring configuration bean except 
> one issue: no ability to configure columnMap outside of calling addFromXML(). 
>  The easiest way i can figure is to allow a setter for the column map and put 
> any logic for checking the map integrity there.  By adding a few methods to 
> IndexConfiguration.java , it should solve the issue.
> I will be submitting a patch for it here shortly.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to