Fred Ji created SAMZA-1160:
------------------------------

             Summary: Migrate MapConfig inherited Java classes to use 
composition over inheritance
                 Key: SAMZA-1160
                 URL: https://issues.apache.org/jira/browse/SAMZA-1160
             Project: Samza
          Issue Type: Task
            Reporter: Fred Ji


In Samza code, we have a lot of classes with the name "*Config" which inherits 
from MapConfig but only intending to exposing the APIs for the specific 
configuration.

For example, JavaStorageConfig, it currently extends MapConfig, but it only 
intends to manage/fetch storeNames and store related configs, but not other 
configs. With the inheritance, it does not have good encapsulation and it 
allows the object JavaStorageConfig to call any public API from MapConfig as 
well, for example, javaStorageConfig.get("yarn.resources.package.path"). With 
it, it mixes up the business logic for different types of Config.

A proposal for addressing this is to do composition over inheritance, each type 
of Config, for example, JavaStorageConfig can have a member variable config 
which can leverage the interface of Config class (or the implementation of 
MapConfig) but not exposing the APIs of Config further down. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to