[ https://issues.apache.org/jira/browse/EAGLE-442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hao Chen updated EAGLE-442: --------------------------- Description: Module Registry Interfaces ApplicationProvider ApplicationProvider{ void register(ModuleRegistry) } ModuleRegistry ModuleRegistry { void register(ModuleScope scope,Module module); default void register(Module moduel) { register(GlobalScope.class, module) } } ModuleScope Modules registered in scope of GlobalScope will be visible globally Modules registered in MySQLMetadataStore/MongodbMetadataStore/MemoryMetadataStore will only be visible when selected MetadataStore is active (set in configuration file) ModuleScope |- GlobalScope |- MetadataStore |- MySQLMetadataStore |- MongodbMetadataStore |- MemoryMetadataStore Example Registry: in HBaseAuditLogAppProvider @Override public void register(ModuleRegistry registry) { registry.register(MemoryMetadataStore.class, new AbstractModule() { @Override protected void configure() { bind(ISecurityMetadataDAO.class).to(InMemMetadataDaoImpl.class); } }); registry.register(MySQLMetadataStore.class, new AbstractModule() { @Override protected void configure() { bind(ISecurityMetadataDAO.class).to(JDBCSecurityMetadataDAO.class); } }); } Inject: For example, HbaseMetadataBrowseWebResource could get current ISecurityMetadataDAO with @Inject ISecurityMetadataDAO metadataDAO as following, instead of using MetadataDaoFactory @Inject public HbaseMetadataBrowseWebResource(ApplicationEntityService entityService, ISecurityMetadataDAO metadataDAO){ this.entityService = entityService; this.dao = metadataDAO; } More Use Cases ExampleResource ExampleService ExampleApplicationProviderTest#testApplicationExtensions > Support to extend metastore DAO modules in SPI > ---------------------------------------------- > > Key: EAGLE-442 > URL: https://issues.apache.org/jira/browse/EAGLE-442 > Project: Eagle > Issue Type: Sub-task > Affects Versions: v0.5.0 > Reporter: Hao Chen > Assignee: Hao Chen > Labels: app-framework, extensibility > Fix For: v0.5.0 > > > Module Registry Interfaces > ApplicationProvider > ApplicationProvider{ > void register(ModuleRegistry) > } > ModuleRegistry > ModuleRegistry { > void register(ModuleScope scope,Module module); > default void register(Module moduel) { > register(GlobalScope.class, module) > } > } > ModuleScope > Modules registered in scope of GlobalScope will be visible globally > Modules registered in > MySQLMetadataStore/MongodbMetadataStore/MemoryMetadataStore will only be > visible when selected MetadataStore is active (set in configuration file) > ModuleScope > |- GlobalScope > |- MetadataStore > |- MySQLMetadataStore > |- MongodbMetadataStore > |- MemoryMetadataStore > Example > Registry: in HBaseAuditLogAppProvider > @Override > public void register(ModuleRegistry registry) { > registry.register(MemoryMetadataStore.class, new AbstractModule() { > @Override > protected void configure() { > > bind(ISecurityMetadataDAO.class).to(InMemMetadataDaoImpl.class); > } > }); > registry.register(MySQLMetadataStore.class, new AbstractModule() { > @Override > protected void configure() { > > bind(ISecurityMetadataDAO.class).to(JDBCSecurityMetadataDAO.class); > } > }); > } > Inject: For example, HbaseMetadataBrowseWebResource could get current > ISecurityMetadataDAO with @Inject ISecurityMetadataDAO metadataDAO as > following, instead of using MetadataDaoFactory > @Inject > public HbaseMetadataBrowseWebResource(ApplicationEntityService > entityService, ISecurityMetadataDAO metadataDAO){ > this.entityService = entityService; > this.dao = metadataDAO; > } > More Use Cases > ExampleResource > ExampleService > ExampleApplicationProviderTest#testApplicationExtensions -- This message was sent by Atlassian JIRA (v6.3.4#6332)