From f0d07c0307ba5a15a5d0dfea0030aae57a3fa3bc Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Tue, 24 Dec 2019 09:47:28 +0800 Subject: [PATCH] =?utf8?q?=E7=A7=BB=E9=99=A4=20multi-tenant=20library?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- multi-tenant-core/build.gradle | 9 --- .../multitenant/HttpHeaderAutoRegistrar.java | 33 -------- .../multitenant/HttpSessionAutoRegistrar.java | 33 -------- .../MultiTenantAutoConfiguration.java | 47 ----------- .../supwisdom/multitenant/TenantContext.java | 9 --- .../multitenant/TenantContextHolder.java | 24 ------ .../TenantContextHolderStrategy.java | 11 --- .../supwisdom/multitenant/TenantDetails.java | 46 ----------- .../multitenant/TenantDetailsProvider.java | 9 --- .../multitenant/TenantInterceptor.java | 7 -- .../EnableHttpHeaderTenantInterceptor.java | 14 ---- .../EnableSessionTenantInterceptor.java | 14 ---- .../multitenant/condition/OnPgDatabase.java | 15 ---- .../config/HttpHeaderWebMvcConfig.java | 21 ----- .../config/HttpSessionWebMvcConfig.java | 20 ----- .../multitenant/config/TenantCoreUtils.java | 6 -- .../config/TenantHeaderProperties.java | 20 ----- .../config/TenantJwtProperties.java | 31 -------- .../config/TenantSessionProperties.java | 20 ----- .../impl/HttpHeaderTenantInterceptor.java | 45 ----------- .../impl/HttpSessionTenantInterceptor.java | 45 ----------- .../multitenant/impl/TenantContextImpl.java | 27 ------- ...hreadLocalTenantContextHolderStrategy.java | 33 -------- .../supwisdom/multitenant/HttpHeaderTest.java | 59 -------------- .../multitenant/HttpSessionTest.java | 45 ----------- .../src/test/resources/test.properties | 2 - multi-tenant-datasource/build.gradle | 29 ------- .../MultiTenantConnectionProviderImpl.java | 79 ------------------- .../MultiTenantDataSourceProvider.java | 9 --- .../datasource/MultiTenantFactory.java | 7 -- .../datasource/beans/TenantProps.java | 5 -- ...ultiTenantDataSourceAutoConfiguration.java | 22 ------ .../config/MutliTenantHibernateConfig.java | 68 ---------------- .../impl/PostgresDataSourceProvider.java | 25 ------ .../datasource/PgDatasourceTest.java | 17 ---- .../src/test/resources/test-pg.properties | 13 --- settings.gradle | 2 - 37 files changed, 921 deletions(-) delete mode 100644 multi-tenant-core/build.gradle delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpHeaderAutoRegistrar.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpSessionAutoRegistrar.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/MultiTenantAutoConfiguration.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContext.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolder.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolderStrategy.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetails.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetailsProvider.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantInterceptor.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableHttpHeaderTenantInterceptor.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableSessionTenantInterceptor.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/condition/OnPgDatabase.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpHeaderWebMvcConfig.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpSessionWebMvcConfig.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantCoreUtils.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantHeaderProperties.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantJwtProperties.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantSessionProperties.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpHeaderTenantInterceptor.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpSessionTenantInterceptor.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/TenantContextImpl.java delete mode 100644 multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/ThreadLocalTenantContextHolderStrategy.java delete mode 100644 multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpHeaderTest.java delete mode 100644 multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpSessionTest.java delete mode 100644 multi-tenant-core/src/test/resources/test.properties delete mode 100644 multi-tenant-datasource/build.gradle delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantConnectionProviderImpl.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantDataSourceProvider.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantFactory.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/beans/TenantProps.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MultiTenantDataSourceAutoConfiguration.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MutliTenantHibernateConfig.java delete mode 100644 multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/impl/PostgresDataSourceProvider.java delete mode 100644 multi-tenant-datasource/src/test/java/com/supwisdom/multitenant/datasource/PgDatasourceTest.java delete mode 100644 multi-tenant-datasource/src/test/resources/test-pg.properties diff --git a/multi-tenant-core/build.gradle b/multi-tenant-core/build.gradle deleted file mode 100644 index b456c6ec..00000000 --- a/multi-tenant-core/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -plugins { - id 'java' - id 'org.springframework.boot' -} - -dependencies { - implementation "org.springframework:spring-webmvc" - implementation "javax.servlet:javax.servlet-api:${javaxServletVersion}" -} \ No newline at end of file diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpHeaderAutoRegistrar.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpHeaderAutoRegistrar.java deleted file mode 100644 index c18c0099..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpHeaderAutoRegistrar.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.supwisdom.multitenant; - -import com.supwisdom.multitenant.config.HttpHeaderWebMvcConfig; -import com.supwisdom.multitenant.impl.HttpHeaderTenantInterceptor; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.support.GenericBeanDefinition; -import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; -import org.springframework.core.type.AnnotationMetadata; - -public class HttpHeaderAutoRegistrar implements ImportBeanDefinitionRegistrar { - public static final String BEAN_NAME = "httpHeaderTenantInterceptor"; - - private void registerInterceptor(BeanDefinitionRegistry registry) { - GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); - beanDefinition.setBeanClass(HttpHeaderTenantInterceptor.class); - beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - registry.registerBeanDefinition(BEAN_NAME, beanDefinition); - } - - private void registerMvcConfigure(BeanDefinitionRegistry registry) { - GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); - beanDefinition.setBeanClass(HttpHeaderWebMvcConfig.class); - beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - registry.registerBeanDefinition(BEAN_NAME + "MvcConfig", beanDefinition); - } - - @Override - public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { - registerInterceptor(registry); - registerMvcConfigure(registry); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpSessionAutoRegistrar.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpSessionAutoRegistrar.java deleted file mode 100644 index 4064aeaa..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/HttpSessionAutoRegistrar.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.supwisdom.multitenant; - -import com.supwisdom.multitenant.config.HttpSessionWebMvcConfig; -import com.supwisdom.multitenant.impl.HttpSessionTenantInterceptor; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.support.GenericBeanDefinition; -import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; -import org.springframework.core.type.AnnotationMetadata; - -public class HttpSessionAutoRegistrar implements ImportBeanDefinitionRegistrar { - public static final String BEAN_NAME = "httpSessionTenantInterceptor"; - - private void registerInterceptor(BeanDefinitionRegistry registry) { - GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); - beanDefinition.setBeanClass(HttpSessionTenantInterceptor.class); - beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - registry.registerBeanDefinition(BEAN_NAME, beanDefinition); -} - - private void registerMvcConfigurater(BeanDefinitionRegistry registry) { - GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); - beanDefinition.setBeanClass(HttpSessionWebMvcConfig.class); - beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - registry.registerBeanDefinition(BEAN_NAME + "MvcConfig", beanDefinition); - } - - @Override - public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { - registerInterceptor(registry); - registerMvcConfigurater(registry); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/MultiTenantAutoConfiguration.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/MultiTenantAutoConfiguration.java deleted file mode 100644 index 6a13357c..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/MultiTenantAutoConfiguration.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.supwisdom.multitenant; - -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Role; - -@Configuration -@ComponentScan(basePackages = {"com.supwisdom.multitenant"}) -@Role(BeanDefinition.ROLE_INFRASTRUCTURE) -public class MultiTenantAutoConfiguration { - - @Bean - @ConditionalOnMissingBean(TenantDetailsProvider.class) - public TenantDetailsProvider createDetailsProvider() { - return new TenantDetailsProvider() { - }; - } - - public static class SessionTenantInterceptorAutoConfig { - } - -// @ConditionalOnProperty( -// name = "multi-tenant.interceptor.httpsession.enabled", -// havingValue = "true") -// @Bean -// @Role(BeanDefinition.ROLE_INFRASTRUCTURE) -// public SessionTenantInterceptorAutoConfig sessionTenantInterceptorAutoConfig() { -// return new SessionTenantInterceptorAutoConfig(); -// } - - - public static class HttpHeaderTenantInterceptorAutoConfig { - } - -// @Bean -// @ConditionalOnProperty( -// name = "multi-tenant.interceptor.httpheader.enabled", -// havingValue = "true") -// @Role(BeanDefinition.ROLE_INFRASTRUCTURE) -// public HttpHeaderTenantInterceptorAutoConfig httpHeaderTenantInterceptorAutoConfig() { -// return new HttpHeaderTenantInterceptorAutoConfig(); -// } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContext.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContext.java deleted file mode 100644 index 0c3bbf22..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContext.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.supwisdom.multitenant; - -import java.io.Serializable; - -public interface TenantContext extends Serializable { - TenantDetails getTenant(); - - void setTenant(TenantDetails details); -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolder.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolder.java deleted file mode 100644 index bb0d51f4..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolder.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.supwisdom.multitenant; - -import com.supwisdom.multitenant.impl.ThreadLocalTenantContextHolderStrategy; - -public class TenantContextHolder { - private static TenantContextHolderStrategy strategy; - - static { - initialize(); - } - - private static void initialize() { - strategy = new ThreadLocalTenantContextHolderStrategy(); - } - - public static TenantContext getContext() { - return strategy.getContext(); - } - - public static void clearContext() { - strategy.clearContext(); - } - -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolderStrategy.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolderStrategy.java deleted file mode 100644 index 300130a8..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantContextHolderStrategy.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.supwisdom.multitenant; - -public interface TenantContextHolderStrategy { - TenantContext getContext(); - - void setContext(TenantContext tenant); - - TenantContext createEmptyContext(); - - void clearContext(); -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetails.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetails.java deleted file mode 100644 index 07372bb5..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetails.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.supwisdom.multitenant; - -import java.io.Serializable; - -public class TenantDetails implements Serializable { - private String id; - - private String dbSchema; - - private Boolean enabled; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getDbSchema() { - return dbSchema; - } - - public void setDbSchema(String dbSchema) { - this.dbSchema = dbSchema; - } - - public Boolean getEnabled() { - return enabled; - } - - public void setEnabled(Boolean enabled) { - this.enabled = enabled; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof TenantDetails) { - TenantDetails other = (TenantDetails) obj; - if (getId().equals(other.getId())) { - return true; - } - } - return false; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetailsProvider.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetailsProvider.java deleted file mode 100644 index d8d9990b..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantDetailsProvider.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.supwisdom.multitenant; - -public interface TenantDetailsProvider { - default TenantDetails createDetailsById(String id) { - TenantDetails details = new TenantDetails(); - details.setId(id); - return details; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantInterceptor.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantInterceptor.java deleted file mode 100644 index 3a502495..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/TenantInterceptor.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.supwisdom.multitenant; - -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - -public abstract class TenantInterceptor extends HandlerInterceptorAdapter { - -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableHttpHeaderTenantInterceptor.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableHttpHeaderTenantInterceptor.java deleted file mode 100644 index daf9d4c3..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableHttpHeaderTenantInterceptor.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.supwisdom.multitenant.annotations; - -import com.supwisdom.multitenant.HttpHeaderAutoRegistrar; -import com.supwisdom.multitenant.MultiTenantAutoConfiguration; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.*; - -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Import({MultiTenantAutoConfiguration.class, HttpHeaderAutoRegistrar.class}) -@Documented -public @interface EnableHttpHeaderTenantInterceptor { -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableSessionTenantInterceptor.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableSessionTenantInterceptor.java deleted file mode 100644 index 347b58da..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/annotations/EnableSessionTenantInterceptor.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.supwisdom.multitenant.annotations; - -import com.supwisdom.multitenant.HttpSessionAutoRegistrar; -import com.supwisdom.multitenant.MultiTenantAutoConfiguration; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.*; - -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Import({MultiTenantAutoConfiguration.class, HttpSessionAutoRegistrar.class}) -@Documented -public @interface EnableSessionTenantInterceptor { -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/condition/OnPgDatabase.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/condition/OnPgDatabase.java deleted file mode 100644 index c09439dd..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/condition/OnPgDatabase.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.supwisdom.multitenant.condition; - -import org.springframework.context.annotation.Condition; -import org.springframework.context.annotation.ConditionContext; -import org.springframework.core.type.AnnotatedTypeMetadata; - -public class OnPgDatabase implements Condition { - private static final String DATABASE_PLATFORM = "spring.jpa.database-platform"; - - @Override - public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { - String platform = context.getEnvironment().getProperty(DATABASE_PLATFORM, String.class); - return "postgresql".equals(platform); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpHeaderWebMvcConfig.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpHeaderWebMvcConfig.java deleted file mode 100644 index 0227a23d..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpHeaderWebMvcConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.supwisdom.multitenant.config; - - -import com.supwisdom.multitenant.impl.HttpHeaderTenantInterceptor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) -public class HttpHeaderWebMvcConfig implements WebMvcConfigurer { - private final HttpHeaderTenantInterceptor interceptor; - - public HttpHeaderWebMvcConfig(HttpHeaderTenantInterceptor interceptor) { - this.interceptor = interceptor; - } - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(interceptor); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpSessionWebMvcConfig.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpSessionWebMvcConfig.java deleted file mode 100644 index c4d80304..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/HttpSessionWebMvcConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.supwisdom.multitenant.config; - -import com.supwisdom.multitenant.impl.HttpSessionTenantInterceptor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) -public class HttpSessionWebMvcConfig implements WebMvcConfigurer { - private final HttpSessionTenantInterceptor interceptor; - - public HttpSessionWebMvcConfig(HttpSessionTenantInterceptor interceptor) { - this.interceptor = interceptor; - } - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(interceptor); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantCoreUtils.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantCoreUtils.java deleted file mode 100644 index 97c70962..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantCoreUtils.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.supwisdom.multitenant.config; - -public final class TenantCoreUtils { - public static final String INTERNAL_TENANT_INTERCEPTOR_BEAN_NAME = "coms.supwisdom.multitenant.interceptor"; - -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantHeaderProperties.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantHeaderProperties.java deleted file mode 100644 index 4d313909..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantHeaderProperties.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.supwisdom.multitenant.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties("multi-tenant.header") -public class TenantHeaderProperties { - @Value("${key:X-Tenant-Id}") - private String key; - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantJwtProperties.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantJwtProperties.java deleted file mode 100644 index c4dcbb48..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantJwtProperties.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.supwisdom.multitenant.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties("multi-tenant.jwt") -public class TenantJwtProperties { - @Value("${header:Authentication}") - private String jwtHeader; - - @Value("${schema:Bears}") - private String schema; - - public String getJwtHeader() { - return jwtHeader; - } - - public void setJwtHeader(String jwtHeader) { - this.jwtHeader = jwtHeader; - } - - public String getSchema() { - return schema; - } - - public void setSchema(String schema) { - this.schema = schema; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantSessionProperties.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantSessionProperties.java deleted file mode 100644 index 3d57c62b..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/config/TenantSessionProperties.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.supwisdom.multitenant.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties("multi-tenant.session") -public class TenantSessionProperties { - @Value("${name:multi-tenant-id}") - private String name; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpHeaderTenantInterceptor.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpHeaderTenantInterceptor.java deleted file mode 100644 index 375eda04..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpHeaderTenantInterceptor.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.supwisdom.multitenant.impl; - -import com.supwisdom.multitenant.TenantContextHolder; -import com.supwisdom.multitenant.TenantDetails; -import com.supwisdom.multitenant.TenantInterceptor; -import com.supwisdom.multitenant.config.TenantHeaderProperties; -import com.supwisdom.multitenant.config.TenantJwtProperties; -import org.springframework.util.StringUtils; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class HttpHeaderTenantInterceptor extends TenantInterceptor { - private final TenantJwtProperties properties; - - private final TenantHeaderProperties headerProperties; - - public HttpHeaderTenantInterceptor(TenantJwtProperties properties, - TenantHeaderProperties headerProperties) { - this.properties = properties; - this.headerProperties = headerProperties; - } - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - String tenant = request.getHeader(headerProperties.getKey()); - if (tenant != null && !StringUtils.isEmpty(tenant)) { - TenantDetails details = new TenantDetails(); - details.setId(tenant); - TenantContextHolder.getContext().setTenant(details); - } - String header = request.getHeader(properties.getJwtHeader()); - if (header.startsWith(properties.getSchema())) { - // parse jwt - } - return super.preHandle(request, response, handler); - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - TenantContextHolder.clearContext(); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpSessionTenantInterceptor.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpSessionTenantInterceptor.java deleted file mode 100644 index cb711e00..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/HttpSessionTenantInterceptor.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.supwisdom.multitenant.impl; - -import com.supwisdom.multitenant.TenantContextHolder; -import com.supwisdom.multitenant.TenantDetails; -import com.supwisdom.multitenant.TenantDetailsProvider; -import com.supwisdom.multitenant.TenantInterceptor; -import com.supwisdom.multitenant.config.TenantSessionProperties; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class HttpSessionTenantInterceptor extends TenantInterceptor { - private final TenantSessionProperties properties; - - private final TenantDetailsProvider provider; - - public HttpSessionTenantInterceptor(TenantSessionProperties properties, - TenantDetailsProvider provider) { - this.properties = properties; - this.provider = provider; - } - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - Object details = request.getSession().getAttribute(properties.getName()); - if (details != null) { - if (details instanceof TenantDetails) { - TenantContextHolder.getContext().setTenant((TenantDetails) details); - } else if (details instanceof String) { - TenantContextHolder.getContext().setTenant(provider.createDetailsById((String) details)); - } else { - return false; - } - } - return super.preHandle(request, response, handler); - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - TenantContextHolder.clearContext(); - super.postHandle(request, response, handler, modelAndView); - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/TenantContextImpl.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/TenantContextImpl.java deleted file mode 100644 index 39bdae82..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/TenantContextImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.supwisdom.multitenant.impl; - -import com.supwisdom.multitenant.TenantContext; -import com.supwisdom.multitenant.TenantDetails; - -public class TenantContextImpl implements TenantContext { - private TenantDetails details; - - @Override - public TenantDetails getTenant() { - return details; - } - - @Override - public void setTenant(TenantDetails details) { - this.details = details; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof TenantContextImpl) { - TenantContextImpl other = (TenantContextImpl) obj; - getTenant().equals(other.getTenant()); - } - return false; - } -} diff --git a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/ThreadLocalTenantContextHolderStrategy.java b/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/ThreadLocalTenantContextHolderStrategy.java deleted file mode 100644 index fd325ec8..00000000 --- a/multi-tenant-core/src/main/java/com/supwisdom/multitenant/impl/ThreadLocalTenantContextHolderStrategy.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.supwisdom.multitenant.impl; - -import com.supwisdom.multitenant.TenantContext; -import com.supwisdom.multitenant.TenantContextHolderStrategy; - -public class ThreadLocalTenantContextHolderStrategy implements TenantContextHolderStrategy { - private static final ThreadLocal contextHolder = new ThreadLocal<>(); - - @Override - public TenantContext getContext() { - TenantContext context = contextHolder.get(); - if (context == null) { - context = createEmptyContext(); - contextHolder.set(context); - } - return context; - } - - @Override - public void setContext(TenantContext tenant) { - contextHolder.set(tenant); - } - - @Override - public void clearContext() { - contextHolder.remove(); - } - - @Override - public TenantContext createEmptyContext() { - return new TenantContextImpl(); - } -} diff --git a/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpHeaderTest.java b/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpHeaderTest.java deleted file mode 100644 index ce1ce580..00000000 --- a/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpHeaderTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.supwisdom.multitenant; - -import com.supwisdom.multitenant.annotations.EnableHttpHeaderTenantInterceptor; -import com.supwisdom.multitenant.condition.OnPgDatabase; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.TestPropertySource; - -import java.util.Arrays; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -@SpringBootTest(classes = {HttpHeaderTest.class}) -@TestPropertySource("/test.properties") -@EnableHttpHeaderTenantInterceptor -public class HttpHeaderTest { - - @Autowired - private ApplicationContext appContext; - - @Test - public void testSessionOk() { - assertThat(TenantContextHolder.getContext(), notNullValue()); - assertThat(findBeanByName(HttpHeaderAutoRegistrar.BEAN_NAME), is(true)); - } - - @Test - public void testError() { - assertThat(findBeanByName(HttpSessionAutoRegistrar.BEAN_NAME), is(false)); - } - - @Configuration - static class PostgresTest { - @Bean - @Conditional(OnPgDatabase.class) - public PostgresTest testPg() { - return new PostgresTest(); - } - } - - - private boolean findBeanByName(String name) { - String[] beans = appContext.getBeanDefinitionNames(); - Arrays.sort(beans); - for (String bean : beans) { - if (name.equals(bean)) { - return true; - } - } - return false; - } -} diff --git a/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpSessionTest.java b/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpSessionTest.java deleted file mode 100644 index ea612e1c..00000000 --- a/multi-tenant-core/src/test/java/com/supwisdom/multitenant/HttpSessionTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.supwisdom.multitenant; - -import com.supwisdom.multitenant.annotations.EnableSessionTenantInterceptor; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.ApplicationContext; -import org.springframework.test.context.TestPropertySource; - -import java.util.Arrays; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -@SpringBootTest(classes = {HttpSessionTest.class}) -@TestPropertySource("/test.properties") -@EnableSessionTenantInterceptor -public class HttpSessionTest { - @Autowired - private ApplicationContext appContext; - - @Test - public void testSessionOk() { - assertThat(TenantContextHolder.getContext(), notNullValue()); - assertThat(findBeanByName(HttpSessionAutoRegistrar.BEAN_NAME), is(true)); - } - - @Test - public void testError() { - assertThat(findBeanByName(HttpHeaderAutoRegistrar.BEAN_NAME), is(false)); - } - - - private boolean findBeanByName(String name) { - String[] beans = appContext.getBeanDefinitionNames(); - Arrays.sort(beans); - for (String bean : beans) { - if (name.equals(bean)) { - return true; - } - } - return false; - } -} diff --git a/multi-tenant-core/src/test/resources/test.properties b/multi-tenant-core/src/test/resources/test.properties deleted file mode 100644 index d6cc728b..00000000 --- a/multi-tenant-core/src/test/resources/test.properties +++ /dev/null @@ -1,2 +0,0 @@ -debug=true -spring.jpa.database-platform=postgresql diff --git a/multi-tenant-datasource/build.gradle b/multi-tenant-datasource/build.gradle deleted file mode 100644 index bc2a8127..00000000 --- a/multi-tenant-datasource/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -plugins { - id "java-library" - id "org.springframework.boot" -} - -jar { - enabled = true - archiveFileName = "${project.name}-${buildVersion}.${archiveExtension.getOrElse('.jar')}" - manifest { - attributes('Implementation-Title': project.name, - 'Implementation-Version': buildVersion) - } -} -println("Build Version: $buildVersion") -bootJar { - enabled = false -} - -dependencies { - implementation project(":multi-tenant-core") - implementation "org.springframework.boot:spring-boot-autoconfigure" - implementation "commons-beanutils:commons-beanutils:${beanutilsVersion}" - implementation "commons-codec:commons-codec:${codecVersion}" - implementation "org.apache.commons:commons-lang3:${lang3Version}" - - compileOnly "org.projectlombok:lombok:${lombokVersion}" - annotationProcessor "org.projectlombok:lombok:${lombokVersion}" -} - diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantConnectionProviderImpl.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantConnectionProviderImpl.java deleted file mode 100644 index 737cba0d..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantConnectionProviderImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.supwisdom.multitenant.datasource; - -import com.supwisdom.multitenant.TenantContextHolder; -import com.supwisdom.multitenant.TenantDetails; -import lombok.extern.slf4j.Slf4j; -import org.hibernate.HibernateException; -import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider; -import org.springframework.stereotype.Component; - -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.SQLException; - -/** - * Created by shuwei on 2018/12/4. - */ -@Slf4j -@Component -public class MultiTenantConnectionProviderImpl implements MultiTenantConnectionProvider { - private final DataSource dataSource; - - private final MultiTenantDataSourceProvider dsProvider; - - public MultiTenantConnectionProviderImpl(DataSource dataSource, - MultiTenantDataSourceProvider provider) { - this.dataSource = dataSource; - this.dsProvider = provider; - } - - @Override - public Connection getAnyConnection() throws SQLException { - return dataSource.getConnection(); - } - - @Override - public void releaseAnyConnection(Connection connection) throws SQLException { - connection.close(); - } - - @Override - public Connection getConnection(String ti) throws SQLException { - TenantDetails tenant = TenantContextHolder.getContext().getTenant(); - final Connection connection = getAnyConnection(); - try { - if (tenant != null) { - log.debug("postgresql set search path to <" + tenant.getDbSchema() + ">"); - connection.createStatement().execute(dsProvider.getTenantSQL(tenant)); - } else { - log.debug("postgresql set search path to public"); - connection.createStatement().execute(dsProvider.getDefaultSQL()); - } - } catch (SQLException e) { - assert tenant != null; - throw new HibernateException("Problem setting schema to " + tenant.toString(), e); - } - return connection; - } - - @Override - public void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException { - connection.close(); - } - - @Override - public boolean supportsAggressiveRelease() { - return false; - } - - @SuppressWarnings("rawtypes") - @Override - public boolean isUnwrappableAs(Class unwrapType) { - return false; - } - - @Override - public T unwrap(Class unwrapType) { - return null; - } -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantDataSourceProvider.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantDataSourceProvider.java deleted file mode 100644 index 394b743f..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantDataSourceProvider.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.supwisdom.multitenant.datasource; - -import com.supwisdom.multitenant.TenantDetails; - -public interface MultiTenantDataSourceProvider { - String getDefaultSQL(); - - String getTenantSQL(TenantDetails details); -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantFactory.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantFactory.java deleted file mode 100644 index 6706bd18..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/MultiTenantFactory.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.supwisdom.multitenant.datasource; - -import com.supwisdom.multitenant.datasource.beans.TenantProps; - -public interface MultiTenantFactory { - TenantProps createMultiTenant(); -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/beans/TenantProps.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/beans/TenantProps.java deleted file mode 100644 index 5e0b6daa..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/beans/TenantProps.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.supwisdom.multitenant.datasource.beans; - -public class TenantProps { - private String schema; -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MultiTenantDataSourceAutoConfiguration.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MultiTenantDataSourceAutoConfiguration.java deleted file mode 100644 index db0c5f75..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MultiTenantDataSourceAutoConfiguration.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.supwisdom.multitenant.datasource.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; -import org.springframework.core.type.AnnotationMetadata; - -@Configuration -public class MultiTenantDataSourceAutoConfiguration implements ImportBeanDefinitionRegistrar { - - @Value("${spring.jpa.database-platform:all}") - private String datasourcePlatform; - - @Override - public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { -// GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); -// beanDefinition.setBeanClass(); -// registry.registerBeanDefinition(); - } - -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MutliTenantHibernateConfig.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MutliTenantHibernateConfig.java deleted file mode 100644 index 87be5f6e..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/config/MutliTenantHibernateConfig.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.supwisdom.multitenant.datasource.config; - - -import com.supwisdom.multitenant.MultiTenantAutoConfiguration; -import lombok.extern.slf4j.Slf4j; -import org.hibernate.MultiTenancyStrategy; -import org.hibernate.cfg.Environment; -import org.hibernate.context.spi.CurrentTenantIdentifierResolver; -import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.orm.jpa.JpaVendorAdapter; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; - -import javax.sql.DataSource; -import java.util.HashMap; -import java.util.Map; - -@Configuration -@ConditionalOnBean({MultiTenantAutoConfiguration.class}) -@Slf4j -public class MutliTenantHibernateConfig { - - private final JpaProperties jpaProperties; - - private final HibernateProperties hibernateProperties; - - public MutliTenantHibernateConfig(@Autowired JpaProperties jpaProperties, - HibernateProperties hibernateProperties) { - this.jpaProperties = jpaProperties; - this.hibernateProperties = hibernateProperties; - } - - @Bean - public JpaVendorAdapter getJpaVendorAdapter() { - HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); - adapter.setGenerateDdl(true); - return adapter; - } - - @Bean("entityManagerFactory") - public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(DataSource dataSource, - MultiTenantConnectionProvider multiTenantConnectionProvider, - CurrentTenantIdentifierResolver currentTenantIdentifierResolver) { - Map properties = new HashMap<>(); - properties.putAll(hibernateProperties - .determineHibernateProperties(jpaProperties.getProperties(), - new HibernateSettings())); - properties.put(Environment.MULTI_TENANT, MultiTenancyStrategy.SCHEMA); - properties.put(Environment.MULTI_TENANT_CONNECTION_PROVIDER, multiTenantConnectionProvider); - properties.put(Environment.MULTI_TENANT_IDENTIFIER_RESOLVER, currentTenantIdentifierResolver); - - LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); - em.setDataSource(dataSource); - em.setPackagesToScan("com.supwisdom"); - em.setJpaPropertyMap(properties); - em.setJpaVendorAdapter(getJpaVendorAdapter()); - log.info("setup multi-tenant entityManagerFactor"); - return em; - } - -} diff --git a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/impl/PostgresDataSourceProvider.java b/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/impl/PostgresDataSourceProvider.java deleted file mode 100644 index 19305ef3..00000000 --- a/multi-tenant-datasource/src/main/java/com/supwisdom/multitenant/datasource/impl/PostgresDataSourceProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.supwisdom.multitenant.datasource.impl; - -import com.supwisdom.multitenant.TenantDetails; -import com.supwisdom.multitenant.datasource.MultiTenantDataSourceProvider; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.StringUtils; - -@Configuration -@ConditionalOnExpression("${spring.jpa.database-platform:postgresql}") -public class PostgresDataSourceProvider implements MultiTenantDataSourceProvider { - @Override - public String getTenantSQL(TenantDetails details) { - if (details == null || details.getDbSchema() == null - || StringUtils.isEmpty(details.getDbSchema())) { - return getDefaultSQL(); - } - return String.format("set search_path \"%s\", public; ", details.getDbSchema()); - } - - @Override - public String getDefaultSQL() { - return "set search_path public;"; - } -} diff --git a/multi-tenant-datasource/src/test/java/com/supwisdom/multitenant/datasource/PgDatasourceTest.java b/multi-tenant-datasource/src/test/java/com/supwisdom/multitenant/datasource/PgDatasourceTest.java deleted file mode 100644 index 7aae07af..00000000 --- a/multi-tenant-datasource/src/test/java/com/supwisdom/multitenant/datasource/PgDatasourceTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.supwisdom.multitenant.datasource; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; - -@SpringBootTest(classes = {PgDatasourceTest.class}, - properties = {"multi-tenant.interceptor.httpsession.enabled=true", - "multi-tenant.interceptor.httpheader.enabled=true"}) -@TestPropertySource("/test-pg.properties") -public class PgDatasourceTest { - - @Test - public void connectDatasource() { - - } -} diff --git a/multi-tenant-datasource/src/test/resources/test-pg.properties b/multi-tenant-datasource/src/test/resources/test-pg.properties deleted file mode 100644 index 3613c3ba..00000000 --- a/multi-tenant-datasource/src/test/resources/test-pg.properties +++ /dev/null @@ -1,13 +0,0 @@ -spring.main.banner-mode=off -# create and drop tables and sequences, loads import.sql -spring.jpa.hibernate.ddl-auto=update -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect -spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false -# Postgresql settings -spring.datasource.platform=postgresql -#spring.datasource.url=jdbc:postgresql://ykt.supwisdom.com:15432/payapidev -spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/payapidev -spring.datasource.username=payapi -spring.datasource.password=123456 -spring.datasource.continue-on-error=true -spring.datasource.initialization-mode=always \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 9ec25d1a..c670d5a2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,6 +4,4 @@ include 'payapi-sdk' include 'payapi-common' include 'ynrcc-agent' include 'oauth' -include 'multi-tenant-core' -include 'multi-tenant-datasource' -- 2.17.1