[ https://issues.apache.org/jira/browse/SAMZA-1160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Prateek Maheshwari reassigned SAMZA-1160: ----------------------------------------- Assignee: Fred Ji > 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 > Assignee: Fred Ji > Fix For: 0.13.0 > > > 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)