1 package com.atlassian.activeobjects.spi;
2
3 import com.atlassian.tenancy.api.Tenant;
4 import com.atlassian.tenancy.api.TenantContext;
5
6 import javax.sql.DataSource;
7
8
9
10
11
12
13
14 public class DataSourceProviderImpl implements DataSourceProvider {
15 private final TenantAwareDataSourceProvider tenantAwareDataSourceProvider;
16
17 private final TenantContext tenantContext;
18
19 public DataSourceProviderImpl(final TenantAwareDataSourceProvider tenantAwareDataSourceProvider, final TenantContext tenantContext) {
20 this.tenantAwareDataSourceProvider = tenantAwareDataSourceProvider;
21 this.tenantContext = tenantContext;
22 }
23
24 @Override
25 public DataSource getDataSource() {
26 Tenant tenant = tenantContext.getCurrentTenant();
27 if (tenant == null) {
28 throw new IllegalStateException("tenant / dataSource unavailable");
29 }
30 return tenantAwareDataSourceProvider.getDataSource(tenant);
31 }
32
33 @Override
34 public DatabaseType getDatabaseType() {
35 Tenant tenant = tenantContext.getCurrentTenant();
36 if (tenant == null) {
37 throw new IllegalStateException("tenant / databaseType unavailable");
38 }
39 return tenantAwareDataSourceProvider.getDatabaseType(tenant);
40 }
41
42 @Override
43 public String getSchema() {
44 Tenant tenant = tenantContext.getCurrentTenant();
45 if (tenant == null) {
46 throw new IllegalStateException("tenant / schema unavailable");
47 }
48 return tenantAwareDataSourceProvider.getSchema(tenant);
49 }
50 }