use of org.qi4j.library.sql.assembly.DataSourceAssembler in project qi4j-sdk by Qi4j.
the class AppAssembler method assemble.
@Override
public ApplicationAssembly assemble(ApplicationAssemblyFactory applicationFactory) throws AssemblyException {
ApplicationAssembly appAss = applicationFactory.newApplicationAssembly();
appAss.setName("SQL Support Sample");
// Config
LayerAssembly configLayer = appAss.layer("config");
ModuleAssembly configModule = configLayer.module("config");
{
configModule.services(OrgJsonValueSerializationService.class).taggedWith(ValueSerialization.Formats.JSON);
configModule.services(MemoryEntityStoreService.class).visibleIn(Visibility.module);
// Use a PreferenceEntityStore instead if you want the configuration to be persistent
// new PreferenceEntityStoreAssembler( Visibility.module ).assemble( configModule );
}
// Infra
LayerAssembly infraLayer = appAss.layer("infra");
ModuleAssembly persistenceModule = infraLayer.module("persistence");
{
persistenceModule.services(OrgJsonValueSerializationService.class).taggedWith(ValueSerialization.Formats.JSON);
// SQL DataSource Service
String dataSourceServiceIdentity = "postgresql-datasource-service";
new DBCPDataSourceServiceAssembler().identifiedBy(dataSourceServiceIdentity).visibleIn(Visibility.module).withConfig(configModule, Visibility.application).assemble(persistenceModule);
// SQL EntityStore DataSource and Service
new DataSourceAssembler().withDataSourceServiceIdentity(dataSourceServiceIdentity).identifiedBy("postgresql-es-datasource").visibleIn(Visibility.module).withCircuitBreaker(DataSources.newDataSourceCircuitBreaker()).assemble(persistenceModule);
new PostgreSQLEntityStoreAssembler().visibleIn(Visibility.application).withConfig(configModule, Visibility.application).assemble(persistenceModule);
// SQL Index/Query DataSource and Service
new DataSourceAssembler().withDataSourceServiceIdentity(dataSourceServiceIdentity).identifiedBy("postgresql-index-datasource").visibleIn(Visibility.module).withCircuitBreaker().assemble(persistenceModule);
new PostgreSQLIndexQueryAssembler().visibleIn(Visibility.application).withConfig(configModule, Visibility.application).assemble(persistenceModule);
}
// App
LayerAssembly appLayer = appAss.layer("app");
ModuleAssembly domainModule = appLayer.module("domain");
{
domainModule.entities(PretextEntity.class);
}
// Uses
infraLayer.uses(configLayer);
appLayer.uses(infraLayer);
return appAss;
}
Aggregations