branch feature/7463 updated (652eaa9 -> c884bd5)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7463 in repository observe. See http://git.codelutin.com/observe.git from 652eaa9 controleur pour les actions pour le serveur web (refs #7463) new c884bd5 Changement de l'API de DataSourceService pour quelle renvoie le résultat de la connexion à la source de données The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit c884bd58986b25f220d70ba9a8393ece65477d72 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 4 09:20:49 2015 +0200 Changement de l'API de DataSourceService pour quelle renvoie le résultat de la connexion à la source de données Summary of changes: .../ObserveWebApplicationConfiguration.java | 7 ++++ .../ObserveWebApplicationConfigurationOption.java | 2 + .../controller/v1/DataSourceServiceController.java | 43 ++++++++++++++++++---- .../ObserveWebSecurityApplicationContext.java | 21 ++++++++++- .../services/service/DataSourceService.java | 5 ++- .../ObserveDataSourceConnectionRest.java | 14 +++---- .../ObserveDataSourceConnectionTopia.java | 4 +- .../ObserveDataSourceConfigurationMainFactory.java | 9 ++--- .../services/service/DataSourceServiceTopia.java | 28 +++++++++++++- 9 files changed, 103 insertions(+), 30 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
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 c884bd58986b25f220d70ba9a8393ece65477d72 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 4 09:20:49 2015 +0200 Changement de l'API de DataSourceService pour quelle renvoie le résultat de la connexion à la source de données --- .../ObserveWebApplicationConfiguration.java | 7 ++++ .../ObserveWebApplicationConfigurationOption.java | 2 + .../controller/v1/DataSourceServiceController.java | 43 ++++++++++++++++++---- .../ObserveWebSecurityApplicationContext.java | 21 ++++++++++- .../services/service/DataSourceService.java | 5 ++- .../ObserveDataSourceConnectionRest.java | 14 +++---- .../ObserveDataSourceConnectionTopia.java | 4 +- .../ObserveDataSourceConfigurationMainFactory.java | 9 ++--- .../services/service/DataSourceServiceTopia.java | 28 +++++++++++++- 9 files changed, 103 insertions(+), 30 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java index 794f34d..a7c9633 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java @@ -15,6 +15,7 @@ import org.nuiton.config.ArgumentsParserException; import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.net.URL; import java.nio.file.Files; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; @@ -83,6 +84,12 @@ public class ObserveWebApplicationConfiguration { public String getAdminApiKey() { return applicationConfig.getOption(ObserveWebApplicationConfigurationOption.ADMIN_API_KEY.getKey()); } + + public URL getApiUrl() { + return applicationConfig.getOptionAsURL(ObserveWebApplicationConfigurationOption.API_URL.getKey()); + } + + public void init(String... args) { if (log.isInfoEnabled()) { diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java index 3783ac2..a904603 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java @@ -7,6 +7,7 @@ import org.nuiton.config.ConfigOptionDef; import org.nuiton.util.version.Version; import java.io.File; +import java.net.URL; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -26,6 +27,7 @@ public enum ObserveWebApplicationConfigurationOption implements ConfigOptionDef BUILD_DATE("observeweb.build.date", n("observeweb.build.date.description"), "", String.class), BUILD_NUMBER("observeweb.build.number", n("observeweb.build.number.description"), "", String.class), ADMIN_API_KEY("observeweb.adminApiKey", n("observeweb.adminApiKey.description"), "changeme", String.class), + API_URL("observeweb.apiUrl", n("observeweb.apiUrl.description"), "http://localhost:8080/observeweb/api/v1", URL.class), DEV_MODE("observeweb.devMode", n("observeweb.devMode.description"), "true", boolean.class), BASE_DIRECTORY("observeweb.baseDirectory", n("observeweb.baseDirectory.description"), "/var/local/observeweb", File.class), 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 7de27ab..745c66e 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,7 +3,11 @@ 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; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; @@ -45,20 +49,24 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override - public void create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + public ObserveDataSourceConnection create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - service.create(dataSourceCreateConfiguration); + ObserveDataSourceConnection observeDataSourceConnection = service.create(dataSourceCreateConfiguration); - registerDataSourceConfiguration(); + String authenticationToken = registerDataSourceConfiguration(); + ObserveDataSourceConnection dataSourceConnection = createDataSourceConnection(observeDataSourceConnection, authenticationToken); + return dataSourceConnection; } @Override - public void open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { + public ObserveDataSourceConnection open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { - service.open(); + ObserveDataSourceConnection observeDataSourceConnection = service.open(); - registerDataSourceConfiguration(); + String authenticationToken = registerDataSourceConfiguration(); + ObserveDataSourceConnection dataSourceConnection = createDataSourceConnection(observeDataSourceConnection, authenticationToken); + return dataSourceConnection; } @@ -83,7 +91,7 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport service.destroy(); } - protected void registerDataSourceConfiguration() { + protected String registerDataSourceConfiguration() { ObserveWebRequestContext requestContext = getRequestContext(); @@ -98,7 +106,26 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport throw new RuntimeException("DataSource already registred", e); } - getContext().getResponse().addHeader("authenticationToken", authenticationToken); + return authenticationToken; + + } + + protected ObserveDataSourceConnection createDataSourceConnection(ObserveDataSourceConnection observeDataSourceConnection, String authenticationToken) { + + ObserveWebSecurityApplicationContext securityApplicationContext = getSecurityApplicationContext(); + + ObserveDataSourceConfigurationRestAuthenticated dataSourceConfiguration = + securityApplicationContext.createDataSourceConnection(getApplicationConfiguration().getApiUrl(), + authenticationToken); + + ObserveDataSourceConnectionRest dataSourceConnection = new ObserveDataSourceConnectionRest( + dataSourceConfiguration, + observeDataSourceConnection.canReadReferential(), + observeDataSourceConnection.canWriteReferential(), + observeDataSourceConnection.canReadData(), + 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 260a437..a659779 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,10 +11,12 @@ 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; /** @@ -35,6 +37,11 @@ public class ObserveWebSecurityApplicationContext implements Closeable { protected final ObserveWebSecurityAuthenticationTokenCache authenticateCache; /** + * L'usine de configuration de sources de données. + */ + protected final ObserveDataSourceConfigurationMainFactory dataSourceConfigurationFactory; + + /** * Le cache des configurations disponibles pour les couple (utilisateur#base) connus du système. * * @see #getUserKey(String, String) @@ -54,6 +61,17 @@ public class ObserveWebSecurityApplicationContext implements Closeable { public ObserveWebSecurityApplicationContext() { this.authenticateCache = new ObserveWebSecurityAuthenticationTokenCache(); + 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) { @@ -67,7 +85,6 @@ public class ObserveWebSecurityApplicationContext implements Closeable { ImmutableMap.Builder<String, ObserveDataSourceConfiguration> dataSourceConfigurationsCacheBuilder = new ImmutableMap.Builder<>(); - ObserveDataSourceConfigurationMainFactory configurationFactory = new ObserveDataSourceConfigurationMainFactory(); for (ObserveWebUser<?> observeWebUser : users.getUsers()) { for (ObserveWebUserPermission observeWebUserPermission : observeWebUser.getPermissions()) { @@ -89,7 +106,7 @@ public class ObserveWebSecurityApplicationContext implements Closeable { String userKey = getUserKey(observeWebUser.getLogin(), databaseName); // Create DataSourceConfiguration - ObserveDataSourceConfiguration configuration = configurationFactory.createObserveDataSourceConfigurationTopiaPG( + ObserveDataSourceConfiguration configuration = dataSourceConfigurationFactory.createObserveDataSourceConfigurationTopiaPG( userKey, jdbcUrl, login, 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 319d81e..a0e9a5e 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.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; @@ -20,10 +21,10 @@ public interface DataSourceService extends ObserveService { boolean canConnect(); @NoDataAccess - void create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException; + ObserveDataSourceConnection create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException; @NoDataAccess - void open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; + ObserveDataSourceConnection open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; void close(); 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 bd02e75..9948a4f 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 @@ -7,19 +7,15 @@ package fr.ird.observe.services.configuration; */ public class ObserveDataSourceConnectionRest extends ObserveDataSourceConnectionSupport<ObserveDataSourceConfigurationRestAuthenticated> { - /** - * Le jeton d'authentification. - */ - protected final String authenticationToken; - public ObserveDataSourceConnectionRest(ObserveDataSourceConfigurationRestAuthenticated dataSourceConfiguration, - String authenticationToken, - boolean writeData, boolean readReferential, boolean writeReferential, - boolean readData) { + boolean readData, + boolean writeData) { super(dataSourceConfiguration, readReferential, writeReferential, readData, writeData); - this.authenticationToken = authenticationToken; } + public String getAuthenticationToken() { + return getDataSourceConfiguration().getAuthenticationToken(); + } } 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 b607dee..86385a3 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 @@ -8,10 +8,10 @@ package fr.ird.observe.services.configuration; public class ObserveDataSourceConnectionTopia extends ObserveDataSourceConnectionSupport<ObserveDataSourceConfigurationTopiaSupport> { public ObserveDataSourceConnectionTopia(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, - boolean writeData, boolean readReferential, boolean writeReferential, - boolean readData) { + boolean readData, + boolean writeData) { super(dataSourceConfiguration, readReferential, writeReferential, readData, writeData); } 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 d7e7453..d4ad6a7 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,6 +1,5 @@ package fr.ird.observe.services; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestAuthenticated; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; @@ -16,7 +15,7 @@ import java.net.URL; */ public class ObserveDataSourceConfigurationMainFactory { - public ObserveDataSourceConfiguration createObserveDataSourceConfigurationTopiaPG(String label, + public ObserveDataSourceConfigurationTopiaPG createObserveDataSourceConfigurationTopiaPG(String label, String jdbcUrl, String username, char[] password, @@ -37,7 +36,7 @@ public class ObserveDataSourceConfigurationMainFactory { } - public ObserveDataSourceConfiguration createObserveDataSourceConfigurationTopiaH2(String label, + public ObserveDataSourceConfigurationTopiaH2 createObserveDataSourceConfigurationTopiaH2(String label, File directory, String databaseName, String username, @@ -58,7 +57,7 @@ public class ObserveDataSourceConfigurationMainFactory { } - public ObserveDataSourceConfiguration createObserveDataSourceConfigurationRestNotAuthenticated(String label, + public ObserveDataSourceConfigurationRestNotAuthenticated createObserveDataSourceConfigurationRestNotAuthenticated(String label, URL serverUrl, String login, char... password) { @@ -73,7 +72,7 @@ public class ObserveDataSourceConfigurationMainFactory { } - public ObserveDataSourceConfiguration createObserveDataSourceConfigurationRestAuthenticated(String label, + public ObserveDataSourceConfigurationRestAuthenticated createObserveDataSourceConfigurationRestAuthenticated(String label, URL serverUrl, String authenticationToken) { 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 077a688..ff22891 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 @@ -8,6 +8,7 @@ import fr.ird.observe.services.ObserveTopiaApplicationContextFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; +import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; @@ -38,7 +39,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } @Override - public void create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + public ObserveDataSourceConnectionTopia create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { dataSourceCreateConfiguration.validateConfiguration(); @@ -143,10 +144,13 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } + //FIXME A remplir apèrs avoir lue les droits sur le schema + return createDataSourceConnection(dataSourceConfiguration); + } @Override - public void open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { + public ObserveDataSourceConnectionTopia open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); @@ -159,6 +163,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(dataSourceConfiguration); + return createDataSourceConnection(dataSourceConfiguration); + } @@ -203,4 +209,22 @@ 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; + ObserveDataSourceConnectionTopia dataSourceConnection = new ObserveDataSourceConnectionTopia( + dataSourceConfiguration, + readReferential, + writeReferential, + readData, + writeData); + return dataSourceConnection; + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm