This is an automated email from the git hooks/post-receive script. New commit to branch feature/7463 in repository observe. See http://git.codelutin.com/observe.git commit aa39eddd9ec5404d3b78512e8b22fc56d842daf3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Sep 5 09:00:21 2015 +0200 Revue de la manière de se connecter (introduction de ObserveDataSourceConnection) --- .../controller/v1/DataSourceServiceController.java | 39 +++-------- .../ObserveWebSecurityApplicationContext.java | 15 +--- .../observe/ObserveTopiaApplicationContext.java | 22 ++++++ .../observe/services/ObserveServiceFactory.java | 3 + .../services/ObserveServiceInitializer.java | 65 ++++++++++++++--- .../services/service/DataSourceService.java | 11 +-- .../configuration/ObserveDataSourceConnection.java | 5 -- .../ObserveDataSourceConnectionSupport.java | 46 ++++++++++-- ...ava => ObserveDataSourceConfigurationRest.java} | 37 ++++++++-- ...veDataSourceConfigurationRestAuthenticated.java | 32 --------- ...bserveDataSourceConfigurationRestConstants.java | 1 + .../ObserveDataSourceConfigurationRestSupport.java | 43 ------------ .../ObserveDataSourceConnectionRest.java | 17 +++-- .../ObserveDataSourceConnectionTopia.java | 6 +- .../services/ObserveServiceFactoryRest.java | 76 +++++++++++++------- .../fr/ird/observe/services/TestClassResource.java | 12 ++-- .../ird/observe/services/TestMethodResource.java | 6 +- .../service/DataSourceServiceRestTest.java | 18 +++-- .../ObserveDataSourceConfigurationMainFactory.java | 52 ++++++-------- .../services/ObserveServiceMainFactory.java | 25 +++++++ .../services/ObserveServiceContextTopia.java | 28 ++++++-- .../services/ObserveServiceFactoryTopia.java | 60 ++++++++++++---- .../ird/observe/services/ObserveServiceTopia.java | 8 +-- .../ObserveTopiaApplicationContextFactory.java | 18 ++++- .../services/service/DataSourceServiceTopia.java | 81 ++++++++++------------ .../ird/observe/services/DataSourceResource.java | 2 +- .../service/DataSourceServiceTopiaTest.java | 20 ++++-- 27 files changed, 436 insertions(+), 312 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index 745c66e..8d79e93 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -3,9 +3,7 @@ package fr.ird.observe.application.web.controller.v1; import com.google.common.base.Optional; import fr.ird.observe.application.web.request.ObserveWebRequestContext; import fr.ird.observe.application.web.security.DataSourceConfigurationAlreadyRegistredException; -import fr.ird.observe.application.web.security.ObserveWebSecurityApplicationContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestAuthenticated; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.configuration.ObserveDataSourceConnectionRest; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; @@ -16,7 +14,6 @@ import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.debux.webmotion.server.WebMotionContextable; /** * Created on 30/08/15. @@ -33,25 +30,9 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override - public void setContextable(WebMotionContextable contextable) { - super.setContextable(contextable); - getRequestContext().checkSecurityContextIsPresent(); - } - - @Override - public boolean exists() { - return service.exists(); - } + public ObserveDataSourceConnection create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - @Override - public boolean canConnect() { - return service.canConnect(); - } - - @Override - public ObserveDataSourceConnection create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - - ObserveDataSourceConnection observeDataSourceConnection = service.create(dataSourceCreateConfiguration); + ObserveDataSourceConnection observeDataSourceConnection = service.create(dataSourceConfiguration, dataSourceCreateConfiguration); String authenticationToken = registerDataSourceConfiguration(); ObserveDataSourceConnection dataSourceConnection = createDataSourceConnection(observeDataSourceConnection, authenticationToken); @@ -60,9 +41,9 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override - public ObserveDataSourceConnection open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { + public ObserveDataSourceConnection open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { - ObserveDataSourceConnection observeDataSourceConnection = service.open(); + ObserveDataSourceConnection observeDataSourceConnection = service.open(dataSourceConfiguration); String authenticationToken = registerDataSourceConfiguration(); ObserveDataSourceConnection dataSourceConnection = createDataSourceConnection(observeDataSourceConnection, authenticationToken); @@ -112,18 +93,14 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport protected ObserveDataSourceConnection createDataSourceConnection(ObserveDataSourceConnection observeDataSourceConnection, String authenticationToken) { - ObserveWebSecurityApplicationContext securityApplicationContext = getSecurityApplicationContext(); - - ObserveDataSourceConfigurationRestAuthenticated dataSourceConfiguration = - securityApplicationContext.createDataSourceConnection(getApplicationConfiguration().getApiUrl(), - authenticationToken); - ObserveDataSourceConnectionRest dataSourceConnection = new ObserveDataSourceConnectionRest( - dataSourceConfiguration, + getApplicationConfiguration().getApiUrl(), + authenticationToken, observeDataSourceConnection.canReadReferential(), observeDataSourceConnection.canWriteReferential(), observeDataSourceConnection.canReadData(), - observeDataSourceConnection.canWriteData()); + observeDataSourceConnection.canWriteData() + ); return dataSourceConnection; diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java index a659779..6aff7aa 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java @@ -11,12 +11,10 @@ import fr.ird.observe.application.web.configuration.user.ObserveWebUserPermissio import fr.ird.observe.application.web.configuration.user.ObserveWebUsers; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestAuthenticated; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.Closeable; -import java.net.URL; import java.util.Objects; /** @@ -64,16 +62,6 @@ public class ObserveWebSecurityApplicationContext implements Closeable { this.dataSourceConfigurationFactory = new ObserveDataSourceConfigurationMainFactory(); } - public ObserveDataSourceConfigurationRestAuthenticated createDataSourceConnection(URL apiUrl, String authenticationToken) { - ObserveDataSourceConfigurationRestAuthenticated dataSourceConfiguration = - dataSourceConfigurationFactory.createObserveDataSourceConfigurationRestAuthenticated( - "TODO", //FIXME - apiUrl, - authenticationToken - ); - return dataSourceConfiguration; - } - public synchronized void init(ObserveWebDatabases<?> databases, ObserveWebUsers<?> users) { this.databases = databases; this.users = users; @@ -113,8 +101,7 @@ public class ObserveWebSecurityApplicationContext implements Closeable { password.toCharArray(), true, true, - true - ); + true); if (log.isInfoEnabled()) { diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 809f4c1..0a50246 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -18,6 +18,8 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Objects; +import java.util.UUID; import java.util.zip.GZIPInputStream; public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicationContext { @@ -43,8 +45,11 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat */ protected boolean open; + protected final String authenticationToken; + public ObserveTopiaApplicationContext(ObserveTopiaConfiguration topiaConfiguration) { super(topiaConfiguration); + this.authenticationToken = UUID.randomUUID().toString(); } @Override @@ -137,4 +142,21 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat } + public String getAuthenticationToken() { + return authenticationToken; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ObserveTopiaApplicationContext)) return false; + ObserveTopiaApplicationContext that = (ObserveTopiaApplicationContext) o; + return Objects.equals(authenticationToken, that.authenticationToken); + } + + @Override + public int hashCode() { + return Objects.hash(authenticationToken); + } + } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java index 5d3ee70..c6b6bc4 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java @@ -1,6 +1,7 @@ package fr.ird.observe.services; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import java.io.Closeable; @@ -17,6 +18,8 @@ public interface ObserveServiceFactory extends Closeable { <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); + <S extends ObserveService> boolean accept(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType); + <S extends ObserveService> S newService(ObserveServiceInitializer observeServiceInitializer, Class<S> serviceType); @Override diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializer.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializer.java index 7e15004..8ea0674 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializer.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializer.java @@ -1,6 +1,8 @@ package fr.ird.observe.services; +import com.google.common.base.Optional; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.constants.ReferentialLocale; import java.io.File; @@ -20,6 +22,21 @@ public class ObserveServiceInitializer { public static ObserveServiceInitializer create(Locale applicationLocale, ReferentialLocale referentialLocale, File temporaryDirectoryRoot, + ObserveDataSourceConnection dataSourceConnection) { + + ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer(); + observeServiceInitializer.setApplicationLocale(applicationLocale); + observeServiceInitializer.setReferentialLocale(referentialLocale); + observeServiceInitializer.setTemporaryDirectoryRoot(temporaryDirectoryRoot); + observeServiceInitializer.setDataSourceConfiguration(null); + observeServiceInitializer.setDataSourceConnection(dataSourceConnection); + return observeServiceInitializer; + + } + + public static ObserveServiceInitializer create(Locale applicationLocale, + ReferentialLocale referentialLocale, + File temporaryDirectoryRoot, ObserveDataSourceConfiguration dataSourceConfiguration) { ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer(); @@ -27,17 +44,28 @@ public class ObserveServiceInitializer { observeServiceInitializer.setReferentialLocale(referentialLocale); observeServiceInitializer.setTemporaryDirectoryRoot(temporaryDirectoryRoot); observeServiceInitializer.setDataSourceConfiguration(dataSourceConfiguration); + observeServiceInitializer.setDataSourceConnection(null); return observeServiceInitializer; } public static ObserveServiceInitializer create(ObserveServiceInitializer otherObserveServiceInitializer) { - ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer(); - observeServiceInitializer.setApplicationLocale(otherObserveServiceInitializer.getApplicationLocale()); - observeServiceInitializer.setReferentialLocale(otherObserveServiceInitializer.getReferentialLocale()); - observeServiceInitializer.setTemporaryDirectoryRoot(otherObserveServiceInitializer.getTemporaryDirectoryRoot()); - observeServiceInitializer.setDataSourceConfiguration(otherObserveServiceInitializer.getDataSourceConfiguration()); + ObserveServiceInitializer observeServiceInitializer; + if (otherObserveServiceInitializer.withDataSourceConnection()) { + observeServiceInitializer = create( + otherObserveServiceInitializer.getApplicationLocale(), + otherObserveServiceInitializer.getReferentialLocale(), + otherObserveServiceInitializer.getTemporaryDirectoryRoot(), + otherObserveServiceInitializer.getDataSourceConnection()); + } else { + observeServiceInitializer = create( + otherObserveServiceInitializer.getApplicationLocale(), + otherObserveServiceInitializer.getReferentialLocale(), + otherObserveServiceInitializer.getTemporaryDirectoryRoot(), + otherObserveServiceInitializer.getDataSourceConfiguration()); + } + return observeServiceInitializer; } @@ -53,9 +81,14 @@ public class ObserveServiceInitializer { protected ReferentialLocale referentialLocale; /** - * La configuration de la source de données. + * La connexion à la source de données (peut être null si on a pas encore de connexion). + */ + protected Optional<ObserveDataSourceConnection> dataSourceConnection; + + /** + * La configuration à la source de données quand on a pas encore de connexion. */ - protected ObserveDataSourceConfiguration dataSourceConfiguration; + protected Optional<ObserveDataSourceConfiguration> dataSourceConfiguration; /** * Le répertoire où créer les répertoires temporaires. @@ -71,14 +104,22 @@ public class ObserveServiceInitializer { return referentialLocale; } + public ObserveDataSourceConnection getDataSourceConnection() { + return dataSourceConnection.get(); + } + public ObserveDataSourceConfiguration getDataSourceConfiguration() { - return dataSourceConfiguration; + return dataSourceConfiguration.get(); } public File getTemporaryDirectoryRoot() { return temporaryDirectoryRoot; } + public boolean withDataSourceConnection() { + return dataSourceConnection.isPresent(); + } + protected void setApplicationLocale(Locale applicationLocale) { this.applicationLocale = applicationLocale; } @@ -87,8 +128,12 @@ public class ObserveServiceInitializer { this.referentialLocale = referentialLocale; } - public void setDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfiguration) { - this.dataSourceConfiguration = dataSourceConfiguration; + protected void setDataSourceConnection(ObserveDataSourceConnection dataSourceConnection) { + this.dataSourceConnection = Optional.fromNullable(dataSourceConnection); + } + + protected void setDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfiguration) { + this.dataSourceConfiguration = Optional.fromNullable(dataSourceConfiguration); } protected void setTemporaryDirectoryRoot(File temporaryDirectoryRoot) { diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index a0e9a5e..2a9ab95 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -1,6 +1,7 @@ package fr.ird.observe.services.service; import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; @@ -15,16 +16,10 @@ import fr.ird.observe.services.spi.NoDataAccess; public interface DataSourceService extends ObserveService { @NoDataAccess - boolean exists(); + ObserveDataSourceConnection create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException; @NoDataAccess - boolean canConnect(); - - @NoDataAccess - ObserveDataSourceConnection create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException; - - @NoDataAccess - ObserveDataSourceConnection open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; + ObserveDataSourceConnection open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; void close(); diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java index e950af2..2871e9e 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java @@ -10,11 +10,6 @@ package fr.ird.observe.services.configuration; public interface ObserveDataSourceConnection { /** - * @return la configuration de la source de données. - */ - ObserveDataSourceConfiguration getDataSourceConfiguration(); - - /** * @return {@code true} si on peut lire les référentiels, {@code false} sinon. */ boolean canReadReferential(); diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java index fa8d407..37272d5 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java @@ -1,13 +1,17 @@ package fr.ird.observe.services.configuration; +import com.google.common.base.MoreObjects; + +import java.util.Objects; + /** * Created on 04/09/15. * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class ObserveDataSourceConnectionSupport<C extends ObserveDataSourceConfiguration> implements ObserveDataSourceConnection { +public abstract class ObserveDataSourceConnectionSupport implements ObserveDataSourceConnection { - protected final C dataSourceConfiguration; + protected final String authenticationToken; protected final boolean readReferential; @@ -17,21 +21,20 @@ public abstract class ObserveDataSourceConnectionSupport<C extends ObserveDataSo protected final boolean writeData; - protected ObserveDataSourceConnectionSupport(C dataSourceConfiguration, + protected ObserveDataSourceConnectionSupport(String authenticationToken, boolean readReferential, boolean writeReferential, boolean readData, boolean writeData) { - this.dataSourceConfiguration = dataSourceConfiguration; + this.authenticationToken = authenticationToken; this.writeData = writeData; this.readReferential = readReferential; this.writeReferential = writeReferential; this.readData = readData; } - @Override - public C getDataSourceConfiguration() { - return dataSourceConfiguration; + public String getAuthenticationToken() { + return authenticationToken; } @Override @@ -53,4 +56,33 @@ public abstract class ObserveDataSourceConnectionSupport<C extends ObserveDataSo public boolean canWriteData() { return writeData; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ObserveDataSourceConnectionSupport)) return false; + ObserveDataSourceConnectionSupport that = (ObserveDataSourceConnectionSupport) o; + return Objects.equals(readReferential, that.readReferential) && + Objects.equals(writeReferential, that.writeReferential) && + Objects.equals(readData, that.readData) && + Objects.equals(writeData, that.writeData) && + Objects.equals(authenticationToken, that.authenticationToken); + } + + @Override + public int hashCode() { + return Objects.hash(authenticationToken, readReferential, writeReferential, readData, writeData); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("authenticationToken", authenticationToken) + .add("readReferential", readReferential) + .add("writeReferential", writeReferential) + .add("readData", readData) + .add("writeData", writeData) + .toString(); + } + } diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestNotAuthenticated.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java similarity index 69% rename from observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestNotAuthenticated.java rename to observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java index b260232..d173079 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestNotAuthenticated.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java @@ -2,6 +2,8 @@ package fr.ird.observe.services.configuration; import com.google.common.base.Optional; +import java.net.URL; + /** * Configuration d'une source de données Rest non connectée. * @@ -9,11 +11,21 @@ import com.google.common.base.Optional; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveDataSourceConfigurationRestNotAuthenticated extends ObserveDataSourceConfigurationRestSupport { +public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConfiguration { private static final long serialVersionUID = 1L; /** + * Le libellé de la source de données. + */ + protected String label; + + /** + * L'url du serveur à utiliser. + */ + protected URL serverUrl; + + /** * Le login de l'utilisateur. */ protected String login; @@ -28,6 +40,23 @@ public class ObserveDataSourceConfigurationRestNotAuthenticated extends ObserveD */ protected Optional<String> optionalDatabaseName; + @Override + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public URL getServerUrl() { + return serverUrl; + } + + public void setServerUrl(URL serverUrl) { + this.serverUrl = serverUrl; + } + public String getLogin() { return login; } @@ -47,6 +76,7 @@ public class ObserveDataSourceConfigurationRestNotAuthenticated extends ObserveD public boolean withDatabaseName() { return optionalDatabaseName.isPresent(); } + public Optional<String> getOptionalDatabaseName() { return optionalDatabaseName; } @@ -55,9 +85,4 @@ public class ObserveDataSourceConfigurationRestNotAuthenticated extends ObserveD this.optionalDatabaseName = optionalDatabaseName; } - @Override - public boolean isAuthenticated() { - return false; - } - } diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestAuthenticated.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestAuthenticated.java deleted file mode 100644 index 45ff7e1..0000000 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestAuthenticated.java +++ /dev/null @@ -1,32 +0,0 @@ -package fr.ird.observe.services.configuration; - -/** - * La configuration d'une source de données connectée. - * - * Created on 19/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveDataSourceConfigurationRestAuthenticated extends ObserveDataSourceConfigurationRestSupport { - - private static final long serialVersionUID = 1L; - - /** - * Le jeton d'authentification. - */ - protected String authenticationToken; - - public String getAuthenticationToken() { - return authenticationToken; - } - - public void setAuthenticationToken(String authenticationToken) { - this.authenticationToken = authenticationToken; - } - - @Override - public boolean isAuthenticated() { - return true; - } - -} diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java index f093639..4df18a0 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java @@ -20,4 +20,5 @@ public interface ObserveDataSourceConfigurationRestConstants { String REQUEST_USER_DATABASE_NAME = "userDatabaseName"; String REQUEST_ADMIN_API_KEY = "adminApiKey"; + } diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestSupport.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestSupport.java deleted file mode 100644 index d6ae525..0000000 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestSupport.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ird.observe.services.configuration; - -import java.net.URL; - -/** - * Created on 19/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public abstract class ObserveDataSourceConfigurationRestSupport implements ObserveDataSourceConfiguration { - - private static final long serialVersionUID = 1L; - - /** - * Le libellé de la data source. - */ - protected String label; - - /** - * L'url du serveur à utiliser. - */ - protected URL serverUrl; - - public abstract boolean isAuthenticated(); - - @Override - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public URL getServerUrl() { - return serverUrl; - } - - public void setServerUrl(URL serverUrl) { - this.serverUrl = serverUrl; - } - -} diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java index 9948a4f..e510f00 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java @@ -1,21 +1,28 @@ package fr.ird.observe.services.configuration; +import java.net.URL; + /** * Created on 04/09/15. * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveDataSourceConnectionRest extends ObserveDataSourceConnectionSupport<ObserveDataSourceConfigurationRestAuthenticated> { +public class ObserveDataSourceConnectionRest extends ObserveDataSourceConnectionSupport { + + protected final URL serverUrl; - public ObserveDataSourceConnectionRest(ObserveDataSourceConfigurationRestAuthenticated dataSourceConfiguration, + public ObserveDataSourceConnectionRest(URL serverUrl, + String authenticationToken, boolean readReferential, boolean writeReferential, boolean readData, boolean writeData) { - super(dataSourceConfiguration, readReferential, writeReferential, readData, writeData); + super(authenticationToken, readReferential, writeReferential, readData, writeData); + this.serverUrl = serverUrl; } - public String getAuthenticationToken() { - return getDataSourceConfiguration().getAuthenticationToken(); + public URL getServerUrl() { + return serverUrl; } + } diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java index 86385a3..6409838 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java @@ -5,14 +5,14 @@ package fr.ird.observe.services.configuration; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveDataSourceConnectionTopia extends ObserveDataSourceConnectionSupport<ObserveDataSourceConfigurationTopiaSupport> { +public class ObserveDataSourceConnectionTopia extends ObserveDataSourceConnectionSupport { - public ObserveDataSourceConnectionTopia(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, + public ObserveDataSourceConnectionTopia(String authenticationToken, boolean readReferential, boolean writeReferential, boolean readData, boolean writeData) { - super(dataSourceConfiguration, readReferential, writeReferential, readData, writeData); + super(authenticationToken, readReferential, writeReferential, readData, writeData); } } diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index bff5f14..d0f262c 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -8,10 +8,10 @@ import com.google.gson.Gson; import com.thoughtworks.paranamer.CachingParanamer; import com.thoughtworks.paranamer.Paranamer; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestAuthenticated; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestConstants; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConnectionRest; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import fr.ird.observe.services.http.RequestBuilder; import fr.ird.observe.services.service.DataSourceService; @@ -46,7 +46,16 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); - return dataSourceConfiguration instanceof ObserveDataSourceConfigurationRestSupport; + return dataSourceConfiguration instanceof ObserveDataSourceConfigurationRest; + + } + + @Override + public <S extends ObserveService> boolean accept(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + Preconditions.checkNotNull(dataSourceConnection, "dataSourceConfiguration can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + return dataSourceConnection instanceof ObserveDataSourceConnectionRest; } @@ -58,9 +67,20 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl Preconditions.checkNotNull(observeServiceInitializer.getApplicationLocale(), "applicationLocale can't be null."); Preconditions.checkNotNull(observeServiceInitializer.getReferentialLocale(), "referentialLocale can't be null."); Preconditions.checkNotNull(observeServiceInitializer.getTemporaryDirectoryRoot(), "temporaryDirectoryRoot can't be null."); - ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializer.getDataSourceConfiguration(); - Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); - Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationRestSupport, "dataSourceConfiguration must be of type ObserveDataSourceConfigurationRestSupport"); + + if (observeServiceInitializer.withDataSourceConnection()) { + + ObserveDataSourceConnection dataSourceConnection = observeServiceInitializer.getDataSourceConnection(); + Preconditions.checkArgument(dataSourceConnection instanceof ObserveDataSourceConnectionRest, "dataSourceConfiguration must be of type " + ObserveDataSourceConnectionRest.class.getName()); + + } else { + + // Pas encore connecte on utilise la configuration de la source de données + ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializer.getDataSourceConfiguration(); + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConnection and dataSourceConfiguration can't be null."); + Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationRest, "dataSourceConfiguration must be of type " + ObserveDataSourceConfigurationRest.class.getName()); + + } S service = newRemoteProxyServiceInstance(serviceType, observeServiceInitializer); return service; @@ -82,7 +102,9 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl protected static class RemoteInvocationHandler<E extends ObserveService> implements InvocationHandler { - protected final ObserveDataSourceConfigurationRestSupport dataSourceConfiguration; + protected final ObserveDataSourceConfigurationRest dataSourceConfiguration; + + protected final ObserveDataSourceConnectionRest dataSourceConnection; protected final Supplier<Gson> gsonSupplier; @@ -99,18 +121,25 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl public RemoteInvocationHandler(Paranamer paranamer, Class<E> serviceClass, ObserveServiceInitializer observeServiceInitializer, Supplier<Gson> gsonSupplier) { this.paranamer = paranamer; this.serviceClass = serviceClass; - - this.dataSourceConfiguration = (ObserveDataSourceConfigurationRestSupport) observeServiceInitializer.getDataSourceConfiguration(); - String locateService = serviceClass.getCanonicalName().replace(ROOT_SERVICES_PACKAGE.getName(), ""); locateService = locateService.replace(".", "/"); + if (observeServiceInitializer.withDataSourceConnection()) { + + this.dataSourceConnection = (ObserveDataSourceConnectionRest) observeServiceInitializer.getDataSourceConnection(); + this.dataSourceConfiguration = null; + this.serviceUrl = dataSourceConnection.getServerUrl() + locateService; + + } else { - this.serviceUrl = dataSourceConfiguration.getServerUrl() + locateService; + this.dataSourceConnection = null; + this.dataSourceConfiguration = (ObserveDataSourceConfigurationRest) observeServiceInitializer.getDataSourceConfiguration(); + this.serviceUrl = dataSourceConfiguration.getServerUrl() + locateService; + + } this.gsonSupplier = gsonSupplier; this.applicationLocale = observeServiceInitializer.getApplicationLocale().toString(); - this.referentialLocale = observeServiceInitializer.getReferentialLocale().getLocale().toString(); - + this.referentialLocale = observeServiceInitializer.getReferentialLocale().toString(); } @@ -135,7 +164,7 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl String url = String.format("%s/%s", serviceUrl, methodName); if (log.isDebugEnabled()) { - log.debug("Invoke remote service on endpoint: " + url); + log.debug(String.format("Invoke remote service on endpoint: %s", url)); } RequestBuilder requestBuilder = new RequestBuilder(url, gsonSupplier); @@ -193,20 +222,19 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl protected void addHeaders(RequestBuilder requestBuilder) { - if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationRestNotAuthenticated) { + if (dataSourceConfiguration != null) { + + requestBuilder.addHeader(REQUEST_USER_LOGIN, dataSourceConfiguration.getLogin()); + requestBuilder.addHeader(REQUEST_USER_PASSWORD, new String(dataSourceConfiguration.getPassword())); + if (dataSourceConfiguration.withDatabaseName()) { - ObserveDataSourceConfigurationRestNotAuthenticated sourceConfiguration = (ObserveDataSourceConfigurationRestNotAuthenticated) dataSourceConfiguration; - requestBuilder.addHeader(REQUEST_USER_LOGIN, sourceConfiguration.getLogin()); - requestBuilder.addHeader(REQUEST_USER_PASSWORD, new String(sourceConfiguration.getPassword())); - if (sourceConfiguration.withDatabaseName()) { + requestBuilder.addHeader(REQUEST_USER_DATABASE_NAME, dataSourceConfiguration.getOptionalDatabaseName().get()); - requestBuilder.addHeader(REQUEST_USER_DATABASE_NAME, sourceConfiguration.getOptionalDatabaseName().get()); } - } else if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationRestAuthenticated) { + } else { - ObserveDataSourceConfigurationRestAuthenticated sourceConfiguration = (ObserveDataSourceConfigurationRestAuthenticated) dataSourceConfiguration; - requestBuilder.addHeader(REQUEST_AUTHENTICATION_TOKEN, sourceConfiguration.getAuthenticationToken()); + requestBuilder.addHeader(REQUEST_AUTHENTICATION_TOKEN, dataSourceConnection.getAuthenticationToken()); } if (!Strings.isNullOrEmpty(applicationLocale)) { diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java index 82165c4..b3b2f24 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java @@ -2,8 +2,7 @@ package fr.ird.observe.services; import com.google.common.base.Optional; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; @@ -122,14 +121,17 @@ public class TestClassResource implements TestRule { this.testDirectory = testDirectory; } - public ObserveDataSourceConfigurationRestSupport createDataSourceConfigurationRest(Class<?> testClass, String login, char... password) { + public ObserveDataSourceConfigurationRest createDataSourceConfigurationRest(Class<?> testClass, + String databaseName, + String login, + char... password) { - ObserveDataSourceConfigurationRestNotAuthenticated configurationRest = new ObserveDataSourceConfigurationRestNotAuthenticated(); + ObserveDataSourceConfigurationRest configurationRest = new ObserveDataSourceConfigurationRest(); configurationRest.setLabel(testClass.getSimpleName() + "#" + serverUrl); configurationRest.setServerUrl(serverUrl); configurationRest.setLogin(login); configurationRest.setPassword(password); - configurationRest.setOptionalDatabaseName(Optional.<String>absent()); + configurationRest.setOptionalDatabaseName(Optional.fromNullable(databaseName)); return configurationRest; diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java index 9e2627e..0f62ca4 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java @@ -1,6 +1,6 @@ package fr.ird.observe.services; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -28,7 +28,7 @@ public class TestMethodResource implements TestRule { protected final char[] password; - protected ObserveDataSourceConfigurationRestSupport dataSourceConfiguration; + protected ObserveDataSourceConfigurationRest dataSourceConfiguration; public TestMethodResource(TestClassResource testClassResource) { this(testClassResource, "admin", 'a'); @@ -56,7 +56,7 @@ public class TestMethodResource implements TestRule { }; } - public ObserveDataSourceConfigurationRestSupport getDataSourceConfiguration() { + public ObserveDataSourceConfigurationRest getDataSourceConfiguration() { return dataSourceConfiguration; } diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java index e9a1b83..1dbab67 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java @@ -2,7 +2,7 @@ package fr.ird.observe.services.service; import fr.ird.observe.services.TestClassResource; import fr.ird.observe.services.TestMethodResource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; @@ -32,11 +32,12 @@ public class DataSourceServiceRestTest { @Before public void setUp() throws Exception { - ObserveDataSourceConfigurationRestSupport dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); + ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); service = testClassResource.newService(dataSourceConfiguration, DataSourceService.class); - //TODO Tester si le serveur est accessible si non + //TODO Tester si le serveur est accessible sinon on ignore le test boolean serverExist = false; + Assume.assumeTrue("Serveur " + dataSourceConfiguration.getServerUrl() + " no found", serverExist); } @@ -44,28 +45,31 @@ public class DataSourceServiceRestTest { @Test(expected = DatabaseNotFoundException.class) public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - service.open(); + ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); + service.open(dataSourceConfiguration); } @Test public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); - service.create(dataSourceCreateConfiguration); + service.create(dataSourceConfiguration, dataSourceCreateConfiguration); - service.open(); + service.open(dataSourceConfiguration); } @Test public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); - service.create(dataSourceCreateConfiguration); + service.create(dataSourceConfiguration, dataSourceCreateConfiguration); } diff --git a/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveDataSourceConfigurationMainFactory.java b/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveDataSourceConfigurationMainFactory.java index d4ad6a7..5331b72 100644 --- a/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveDataSourceConfigurationMainFactory.java +++ b/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveDataSourceConfigurationMainFactory.java @@ -1,7 +1,7 @@ package fr.ird.observe.services; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestAuthenticated; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; +import com.google.common.base.Optional; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; @@ -16,12 +16,12 @@ import java.net.URL; public class ObserveDataSourceConfigurationMainFactory { public ObserveDataSourceConfigurationTopiaPG createObserveDataSourceConfigurationTopiaPG(String label, - String jdbcUrl, - String username, - char[] password, - boolean useSsl, - boolean showMigrationProgression, - boolean showMigrationSql) { + String jdbcUrl, + String username, + char[] password, + boolean useSsl, + boolean showMigrationProgression, + boolean showMigrationSql) { ObserveDataSourceConfigurationTopiaPG result = new ObserveDataSourceConfigurationTopiaPG(); result.setLabel(label); @@ -37,12 +37,12 @@ public class ObserveDataSourceConfigurationMainFactory { } public ObserveDataSourceConfigurationTopiaH2 createObserveDataSourceConfigurationTopiaH2(String label, - File directory, - String databaseName, - String username, - char[] password, - boolean showMigrationProgression, - boolean showMigrationSql) { + File directory, + String databaseName, + String username, + char[] password, + boolean showMigrationProgression, + boolean showMigrationSql) { ObserveDataSourceConfigurationTopiaH2 result = new ObserveDataSourceConfigurationTopiaH2(); result.setLabel(label); @@ -57,32 +57,22 @@ public class ObserveDataSourceConfigurationMainFactory { } - public ObserveDataSourceConfigurationRestNotAuthenticated createObserveDataSourceConfigurationRestNotAuthenticated(String label, - URL serverUrl, - String login, - char... password) { + public ObserveDataSourceConfigurationRest createObserveDataSourceConfigurationRest(String label, + URL serverUrl, + String login, + char[] password, + String databaseName) { - ObserveDataSourceConfigurationRestNotAuthenticated result = new ObserveDataSourceConfigurationRestNotAuthenticated(); + ObserveDataSourceConfigurationRest result = new ObserveDataSourceConfigurationRest(); result.setLabel(label); result.setServerUrl(serverUrl); result.setLogin(login); result.setPassword(password); + result.setOptionalDatabaseName(Optional.fromNullable(databaseName)); return result; } - public ObserveDataSourceConfigurationRestAuthenticated createObserveDataSourceConfigurationRestAuthenticated(String label, - URL serverUrl, - String authenticationToken) { - - ObserveDataSourceConfigurationRestAuthenticated result = new ObserveDataSourceConfigurationRestAuthenticated(); - result.setLabel(label); - result.setServerUrl(serverUrl); - result.setAuthenticationToken(authenticationToken); - - return result; - - } } diff --git a/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java b/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java index 0445dd8..7f5cd95 100644 --- a/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java +++ b/observe-services-runner/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java @@ -3,6 +3,7 @@ package fr.ird.observe.services; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,6 +46,14 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { } @Override + public <S extends ObserveService> boolean accept(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + ObserveServiceFactory factory = getFactory(dataSourceConnection, serviceType); + return factory != null; + + } + + @Override public <S extends ObserveService> S newService(ObserveServiceInitializer observeServiceInitializer, Class<S> serviceType) { Preconditions.checkNotNull(observeServiceInitializer, "observeServiceInitializerContext can't be null."); @@ -108,4 +117,20 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { return result; } + + protected <S extends ObserveService> ObserveServiceFactory getFactory(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + ObserveServiceFactory result = null; + for (ObserveServiceFactory serviceFactory : delegateFactories) { + if (serviceFactory.accept(dataSourceConnection, serviceType)) { + result = serviceFactory; + break; + } + } + + Preconditions.checkState(result != null, String.format("No factory found for dataSourceConnection: %s and serviceType: %s", dataSourceConnection, serviceType.getName())); + return result; + + } + } \ No newline at end of file diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java index 7db2ef8..4154600 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java @@ -4,6 +4,8 @@ import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; import fr.ird.observe.services.dto.constants.ReferentialLocale; import java.io.File; @@ -57,6 +59,18 @@ public class ObserveServiceContextTopia { return observeServiceInitializer.getTemporaryDirectoryRoot(); } + public boolean withDataSourceConnection() { + return observeServiceInitializer.withDataSourceConnection(); + } + + public ObserveDataSourceConnectionTopia getDataSourceConnection() { + return (ObserveDataSourceConnectionTopia) observeServiceInitializer.getDataSourceConnection(); + } + + public ObserveDataSourceConfigurationTopiaSupport getDataSourceConfiguration() { + return (ObserveDataSourceConfigurationTopiaSupport) observeServiceInitializer.getDataSourceConfiguration(); + } + public Date now() { return new Date(); } @@ -65,14 +79,18 @@ public class ObserveServiceContextTopia { return serviceFactory.newService(observeServiceInitializer, serviceType); } - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - ObserveServiceInitializer newObserveServiceInitializer = ObserveServiceInitializer.create(this.observeServiceInitializer); - newObserveServiceInitializer.setDataSourceConfiguration(dataSourceConfiguration); + public <S extends ObserveService> S newService(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + ObserveServiceInitializer newObserveServiceInitializer = ObserveServiceInitializer.create(observeServiceInitializer); + newObserveServiceInitializer.setDataSourceConnection(dataSourceConnection); + newObserveServiceInitializer.setDataSourceConfiguration(null); return mainServiceFactory.newService(newObserveServiceInitializer, serviceType); } - public ObserveDataSourceConfigurationTopiaSupport getDataSourceConfiguration() { - return (ObserveDataSourceConfigurationTopiaSupport) observeServiceInitializer.getDataSourceConfiguration(); + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + ObserveServiceInitializer newObserveServiceInitializer = ObserveServiceInitializer.create(observeServiceInitializer); + newObserveServiceInitializer.setDataSourceConnection(null); + newObserveServiceInitializer.setDataSourceConfiguration(dataSourceConfiguration); + return mainServiceFactory.newService(newObserveServiceInitializer, serviceType); } public ObserveTopiaPersistenceContext getTopiaPersistenceContext() { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java index 5b471ad..ed05742 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java @@ -8,6 +8,8 @@ import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; import fr.ird.observe.services.spi.NoDataAccess; import fr.ird.observe.services.spi.Write; import org.apache.commons.logging.Log; @@ -40,13 +42,33 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { } @Override + public <S extends ObserveService> boolean accept(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + Preconditions.checkNotNull(dataSourceConnection, "dataSourceConfiguration can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + return dataSourceConnection instanceof ObserveDataSourceConnectionTopia; + + } + + @Override public <S extends ObserveService> S newService(ObserveServiceInitializer observeServiceInitializer, Class<S> serviceType) { Preconditions.checkNotNull(observeServiceInitializer, "observeServiceInitializerContext can't be null."); - ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializer.getDataSourceConfiguration(); - Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport, "dataSourceConfiguration must be of type " + ObserveDataSourceConfigurationTopiaSupport.class.getName()); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + if (observeServiceInitializer.withDataSourceConnection()) { + + ObserveDataSourceConnection dataSourceConnection = observeServiceInitializer.getDataSourceConnection(); + Preconditions.checkArgument(dataSourceConnection instanceof ObserveDataSourceConnectionTopia, "dataSourceConnection must be of type " + ObserveDataSourceConnectionTopia.class.getName()); + + } else { + + ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializer.getDataSourceConfiguration(); + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport, "dataSourceConfiguration must be of type " + ObserveDataSourceConfigurationTopiaSupport.class.getName()); + + } + Class<S> serviceTypeImpl = getServiceClassType(serviceTypeCache, serviceType); Preconditions.checkNotNull(serviceTypeImpl, "serviceTypeImpl not found for : " + serviceType.getName()); @@ -103,14 +125,13 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { this.serviceContext = serviceContext; this.target = target; - this.methodNamesToByPass = ImmutableSet.of( - "equals", - "hashCode", - "finalize", - "toString", - "clone", - "getClass", - "close"); + this.methodNamesToByPass = ImmutableSet.of("equals", + "hashCode", + "finalize", + "toString", + "clone", + "getClass", + "close"); } @@ -119,8 +140,7 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { Object result; - if (methodNamesToByPass.contains(method.getName()) - || method.isAnnotationPresent(NoDataAccess.class)) { + if (methodNamesToByPass.contains(method.getName()) || method.isAnnotationPresent(NoDataAccess.class)) { result = invokeMethod(method, args); @@ -128,7 +148,21 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { if (serviceContext.getTopiaApplicationContext() == null) { - ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(serviceContext.getDataSourceConfiguration()); + ObserveTopiaApplicationContext topiaApplicationContext; + ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration; + + if (serviceContext.withDataSourceConnection()) { + + String authenticationToken = serviceContext.getDataSourceConnection().getAuthenticationToken(); + topiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(authenticationToken); + + } else { + + dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); + topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(dataSourceConfiguration); + + } + serviceContext.setTopiaApplicationContext(topiaApplicationContext); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 7d2e310..5014aa5 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -110,7 +110,7 @@ public class ObserveServiceTopia implements ObserveService { } public static ImmutableSet<Class<? extends ReferentialDto>> getReferentialDtoTypes() { - ImmutableSet.Builder<Class<? extends ReferentialDto>> builder = new ImmutableSet.Builder<>(); + ImmutableSet.Builder<Class<? extends ReferentialDto>> builder = new ImmutableSet.Builder<>(); for (Map.Entry<Class<?>, Class<?>> entry : getDtoTypes()) { Class<?> dtoType = entry.getKey(); if (ReferentialDto.class.isAssignableFrom(dtoType)) { @@ -121,7 +121,7 @@ public class ObserveServiceTopia implements ObserveService { } public static ImmutableSet<Class<? extends IdDto>> getDataDtoTypes() { - ImmutableSet.Builder<Class<? extends IdDto>> builder = new ImmutableSet.Builder<>(); + ImmutableSet.Builder<Class<? extends IdDto>> builder = new ImmutableSet.Builder<>(); for (Map.Entry<Class<?>, Class<?>> entry : getDtoTypes()) { Class<?> dtoType = entry.getKey(); if (!ReferentialDto.class.isAssignableFrom(dtoType)) { @@ -324,7 +324,7 @@ public class ObserveServiceTopia implements ObserveService { try { DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setImportDatabase(importContent); - dataSourceService.create(dataSourceCreateConfiguration); + dataSourceService.create(temporaryDataSourceConfiguration, dataSourceCreateConfiguration); } catch (IncompatibleDataSourceCreateConfigurationException | DataSourceCreateWithNoReferentialImportException e) { //FIXME Avoir une exception plus concrete throw new RuntimeException("Could not create temporary database: " + prefix, e); @@ -348,7 +348,7 @@ public class ObserveServiceTopia implements ObserveService { try { DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); - dataSourceService.create(dataSourceCreateConfiguration); + dataSourceService.create(temporaryDataSourceConfiguration, dataSourceCreateConfiguration); } catch (IncompatibleDataSourceCreateConfigurationException | DataSourceCreateWithNoReferentialImportException e) { //FIXME Avoir une exception plus concrete throw new RuntimeException("Could not create temporary database: " + prefix, e); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java index 7d9783a..7119ed1 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java @@ -45,7 +45,7 @@ public class ObserveTopiaApplicationContextFactory { public static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport configuration, boolean initSchema) { Optional<ObserveTopiaApplicationContext> topiaApplicationContextIfPresent = getTopiaApplicationContextIfPresent(configuration); - Preconditions.checkState(!topiaApplicationContextIfPresent.isPresent(),"There is already a TopiaApplicationContext for configuration: "+configuration); + Preconditions.checkState(!topiaApplicationContextIfPresent.isPresent(), "There is already a TopiaApplicationContext for configuration: " + configuration); ObserveTopiaApplicationContext topiaApplicationContext = null; @@ -54,7 +54,7 @@ public class ObserveTopiaApplicationContextFactory { } else if (configuration instanceof ObserveDataSourceConfigurationTopiaPG) { topiaApplicationContext = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaPG) configuration, initSchema); } - Preconditions.checkState(topiaApplicationContext != null, "Did not find how to create ObserveTopiaApplicationContext from: " + configuration); + Preconditions.checkNotNull(topiaApplicationContext, "Did not find how to create ObserveTopiaApplicationContext from: " + configuration); return topiaApplicationContext; } @@ -66,6 +66,20 @@ public class ObserveTopiaApplicationContextFactory { } + public static ObserveTopiaApplicationContext getTopiaApplicationContext(String authenticationToken) { + + ObserveTopiaApplicationContext result = null; + for (ObserveTopiaApplicationContext topiaApplicationContext : TOPIA_APPLICATION_CONTEXT_CACHE.values()) { + if (authenticationToken.equals(topiaApplicationContext.getAuthenticationToken())) { + result = topiaApplicationContext; + break; + } + } + Preconditions.checkNotNull(result, "Did not find how to create ObserveTopiaApplicationContext from: " + authenticationToken); + return result; + + } + public static void close() { for (TopiaApplicationContext topiaApplicationContext : new LinkedHashSet<>(TOPIA_APPLICATION_CONTEXT_CACHE.values())) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index ff22891..ee25055 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -28,26 +28,14 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS /** Logger. */ private static final Log log = LogFactory.getLog(DataSourceServiceTopia.class); - //FIXME Supprimer cette méthode, on va plutot la placer au niveau de la factory @Override - public boolean exists() { - -// ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); -// return dataSourceConfiguration.datasourceExists(); - return true; - - } - - @Override - public ObserveDataSourceConnectionTopia create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + public ObserveDataSourceConnectionTopia create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { dataSourceCreateConfiguration.validateConfiguration(); boolean initSchema = !dataSourceCreateConfiguration.isImportDatabase(); - ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - - ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.createTopiaApplicationContext(dataSourceConfiguration, initSchema); + ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration, initSchema); if (log.isInfoEnabled()) { log.info("Create topia application context: " + topiaApplicationContext); @@ -98,7 +86,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS // création d'une base temporaire pour y importer le référentiel ObserveDataSourceConfigurationTopiaH2 temporaryDataSourceConfiguration = createTemporaryDatabaseFromDump("ImportReferential", referentialDump); ObserveTopiaApplicationContext temporaryTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(temporaryDataSourceConfiguration); -// executeGzipSqlStatements(temporaryTopiaApplicationContext, "ImportReferential_" + importDataSourceConfiguration.getLabel(), referentialDump); // Réplication du référentiel replicateReferential(temporaryTopiaApplicationContext, topiaApplicationContext); @@ -120,7 +107,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS // création d'une base temporaire pour y importer le référentiel et les données ObserveDataSourceConfigurationTopiaH2 temporaryDataSourceConfiguration = createTemporaryDatabaseFromDump("ImportData", dataDump); ObserveTopiaApplicationContext temporaryTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(temporaryDataSourceConfiguration); -// executeGzipSqlStatements(temporaryTopiaApplicationContext, "ImportData_" + importDataSourceConfiguration.getLabel(), dataDump); if (!referantialImported) { @@ -144,27 +130,25 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } - //FIXME A remplir apèrs avoir lue les droits sur le schema - return createDataSourceConnection(dataSourceConfiguration); + return createDataSourceConnection((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration, topiaApplicationContext.getAuthenticationToken()); } @Override - public ObserveDataSourceConnectionTopia open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { - - ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); + public ObserveDataSourceConnectionTopia open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { - if (!exists()) { + //FIXME + if (false) { throw new DatabaseNotFoundException(dataSourceConfiguration); } - if (!canConnect()) { + //FIXME + if (false) { throw new DatabaseConnexionNotAuthorizedException(dataSourceConfiguration); } - ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(dataSourceConfiguration); - return createDataSourceConnection(dataSourceConfiguration); - + ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration); + return createDataSourceConnection( (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration, topiaApplicationContext.getAuthenticationToken()); } @@ -180,16 +164,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } - //FIXME Supprimer cette méthode, on va plutot la placer au niveau de la factory - @Override - public boolean canConnect() { - -// ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); -// return dataSourceConfiguration.datasourceExists(); - return true; - - } - @Override public void destroy() { @@ -209,17 +183,32 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } - protected ObserveDataSourceConnectionTopia createDataSourceConnection(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { - //FIXME A remplir apèrs avoir lue les droits sur le schema - boolean readReferential = true; - //FIXME A remplir apèrs avoir lue les droits sur le schema - boolean writeReferential = true; - //FIXME A remplir apèrs avoir lue les droits sur le schema - boolean readData = true; - //FIXME A remplir apèrs avoir lue les droits sur le schema - boolean writeData = true; + protected ObserveDataSourceConnectionTopia createDataSourceConnection(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, String authenticationToken) { + + boolean readReferential; + boolean writeReferential; + boolean readData; + boolean writeData; + + if (dataSourceConfiguration.isH2Database()) { + + // Sur une base H2, on a le droit de tout lire, mais uniquement d'écrire les données + readReferential = true; + writeReferential = false; + readData = true; + writeData = true; + } else { + + // Sur une base PG, on regarde en base ce que l'utilisateur peut lire/écrire + //FIXME A remplir apèrs avoir lue les droits sur le schema + readReferential = true; + writeReferential = true; + readData = true; + writeData = true; + + } ObserveDataSourceConnectionTopia dataSourceConnection = new ObserveDataSourceConnectionTopia( - dataSourceConfiguration, + authenticationToken, readReferential, writeReferential, readData, diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java index 0ac727d..3f83804 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java @@ -73,7 +73,7 @@ public class DataSourceResource implements TestRule { DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); createConfiguration.setImportDatabase(databaseToImportContent); - dataSourceService.create(createConfiguration); + dataSourceService.create(dataSourceConfiguration, createConfiguration); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java index 6f38391..7d0aae4 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java @@ -54,17 +54,21 @@ public class DataSourceServiceTopiaTest { @Ignore @Test(expected = DatabaseNotFoundException.class) public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - service.open(); + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); + service.open(dataSourceConfiguration); + } @Test public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); - service.create(dataSourceCreateConfiguration); + service.create(dataSourceConfiguration, dataSourceCreateConfiguration); - service.open(); + service.open(dataSourceConfiguration); applicationContextResource.assertSchemaCreated(dataSourceResource.getTopiaApplicationContext()); } @@ -72,10 +76,11 @@ public class DataSourceServiceTopiaTest { @Test public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); - service.create(dataSourceCreateConfiguration); + service.create(dataSourceConfiguration, dataSourceCreateConfiguration); applicationContextResource.assertSchemaCreated(dataSourceResource.getTopiaApplicationContext()); } @@ -87,10 +92,11 @@ public class DataSourceServiceTopiaTest { byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(scriptPath); + ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setImportDatabase(dumpContent); - service.create(dataSourceCreateConfiguration); + service.create(dataSourceConfiguration, dataSourceCreateConfiguration); applicationContextResource.assertSchemaCreated(dataSourceResource.getTopiaApplicationContext()); } @@ -111,7 +117,7 @@ public class DataSourceServiceTopiaTest { DataSourceService dataSourceService = applicationContextResource.newService(createdDatabaseDataSourceConfiguration, DataSourceService.class); - dataSourceService.create(dataSourceCreateConfiguration); + dataSourceService.create(createdDatabaseDataSourceConfiguration, dataSourceCreateConfiguration); ObserveTopiaApplicationContext createdDatabaseTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(createdDatabaseDataSourceConfiguration); applicationContextResource.assertSchemaCreated(createdDatabaseTopiaApplicationContext); @@ -135,7 +141,7 @@ public class DataSourceServiceTopiaTest { DataSourceService dataSourceService = applicationContextResource.newService(createdDatabaseDataSourceConfiguration, DataSourceService.class); - dataSourceService.create(dataSourceCreateConfiguration); + dataSourceService.create(createdDatabaseDataSourceConfiguration, dataSourceCreateConfiguration); ObserveTopiaApplicationContext createdDatabaseTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(createdDatabaseDataSourceConfiguration); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.