branch feature/7463 updated (f7d8d84 -> e6cc331)
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 f7d8d84 Ajout de la méthode DataSourceService.canConnect new a24fea5 Ajout traductions new 417aef2 Amélioration des tests sur le service DataSourceService pour bien attendre que la base est fermé new 9e590f1 Ajout d'un service spécifique à l'API Rest pour tester si le serveur ping bien + une exception si une requète ne peut être jouée new 5b122a2 Renommage méthode de vérification de configuration de source de données new b7310f2 On teste si on peut lancer les tests sur le serveur web new e6cc331 Ajout de nouvelles méthodes d'administration pour voir (et supprimer) les jetons d'authenfication The 6 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 e6cc331e43d31421961a18173270cab789bf1b1c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:02:53 2015 +0200 Ajout de nouvelles méthodes d'administration pour voir (et supprimer) les jetons d'authenfication commit b7310f2b2cdd2b5bdd78e7633075c682823d373e Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:02:10 2015 +0200 On teste si on peut lancer les tests sur le serveur web commit 5b122a27a5727d1475e91616b43abeefe632b621 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:01:44 2015 +0200 Renommage méthode de vérification de configuration de source de données commit 9e590f1e45481559c9bbb32cd902ff91d97dd6d0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:01:03 2015 +0200 Ajout d'un service spécifique à l'API Rest pour tester si le serveur ping bien + une exception si une requète ne peut être jouée commit 417aef2f1cd8d2cc2c52012df89a83692c4f304b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 22:21:33 2015 +0200 Amélioration des tests sur le service DataSourceService pour bien attendre que la base est fermé commit a24fea5576246ea40048cfdc4036a39e8f997631 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 22:18:29 2015 +0200 Ajout traductions Summary of changes: .../web/controller/v1/ConfigurationController.java | 39 +++++++++++++++++ .../controller/v1/DataSourceServiceController.java | 4 +- .../web/controller/v1/PingServiceController.java | 17 ++++++++ .../ObserveWebSecurityApplicationContext.java | 4 ++ ...ObserveWebSecurityAuthenticationTokenCache.java | 4 ++ .../services/service/DataSourceService.java | 2 +- .../ird/observe/services/service/PingService.java | 16 +++++++ .../ObserveDataSourceConfigurationTopiaH2.java | 15 ++++--- .../ObserveServiceRestNotAvailableException.java | 26 +++++++++++ .../services/http/ObserveResponseBuilder.java | 23 +++++++--- .../ird/observe/services/TestMethodResource.java | 27 ++++++++++++ .../service/DataSourceServiceRestTest.java | 15 ------- .../service/seine/TripSeineServiceTest.java | 2 - .../services/service/DataSourceServiceTopia.java | 18 +++----- .../i18n/observe-services-topia_en_GB.properties | 4 ++ .../i18n/observe-services-topia_es_ES.properties | 4 ++ .../i18n/observe-services-topia_fr_FR.properties | 4 ++ .../service/DataSourceServiceTopiaTest.java | 51 ++++++++++++++-------- 18 files changed, 215 insertions(+), 60 deletions(-) create mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java create mode 100644 observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java -- 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 a24fea5576246ea40048cfdc4036a39e8f997631 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 22:18:29 2015 +0200 Ajout traductions --- .../src/main/resources/i18n/observe-services-topia_en_GB.properties | 4 ++++ .../src/main/resources/i18n/observe-services-topia_es_ES.properties | 4 ++++ .../src/main/resources/i18n/observe-services-topia_fr_FR.properties | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/observe-services-topia/src/main/resources/i18n/observe-services-topia_en_GB.properties b/observe-services-topia/src/main/resources/i18n/observe-services-topia_en_GB.properties index 9fff152..36ad692 100644 --- a/observe-services-topia/src/main/resources/i18n/observe-services-topia_en_GB.properties +++ b/observe-services-topia/src/main/resources/i18n/observe-services-topia_en_GB.properties @@ -1,2 +1,6 @@ observe.service.actions.consolidate.lengthWeightParameterNotFound=No length-weight relation found for tuple (species %s - ocean %s - sex %s - date %s) observe.service.actions.consolidate.noSex=no sex +observe.services.topia.error.h2.database.badAuthentication=Bad autnetication. +observe.services.topia.error.h2.database.locked=The H2 database is locked, may-be another user or application use it. +observe.services.topia.error.h2.database.notFound=The H2 database was not found. +observe.services.topia.error.pg.database.badAuthentication=Bad autnetication. diff --git a/observe-services-topia/src/main/resources/i18n/observe-services-topia_es_ES.properties b/observe-services-topia/src/main/resources/i18n/observe-services-topia_es_ES.properties index 4021160..ab245f9 100644 --- a/observe-services-topia/src/main/resources/i18n/observe-services-topia_es_ES.properties +++ b/observe-services-topia/src/main/resources/i18n/observe-services-topia_es_ES.properties @@ -1,2 +1,6 @@ observe.service.actions.consolidate.lengthWeightParameterNotFound= observe.service.actions.consolidate.noSex=no sexo +observe.services.topia.error.h2.database.badAuthentication= +observe.services.topia.error.h2.database.locked= +observe.services.topia.error.h2.database.notFound= +observe.services.topia.error.pg.database.badAuthentication= diff --git a/observe-services-topia/src/main/resources/i18n/observe-services-topia_fr_FR.properties b/observe-services-topia/src/main/resources/i18n/observe-services-topia_fr_FR.properties index 200cef6..f7d57b7 100644 --- a/observe-services-topia/src/main/resources/i18n/observe-services-topia_fr_FR.properties +++ b/observe-services-topia/src/main/resources/i18n/observe-services-topia_fr_FR.properties @@ -1,2 +1,6 @@ observe.service.actions.consolidate.lengthWeightParameterNotFound=Aucune relation taille-poids trouvé pour le tuple (espèce %s - océan %s - sexe %s - date %s) observe.service.actions.consolidate.noSex=pas de sexe +observe.services.topia.error.h2.database.badAuthentication=Authentification erronée. +observe.services.topia.error.h2.database.locked=La base H2 est déjà utilisé par un autre utilisateur. +observe.services.topia.error.h2.database.notFound=La base H2 n'a pas été trouvée. +observe.services.topia.error.pg.database.badAuthentication=Authentification erronée. -- 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 417aef2f1cd8d2cc2c52012df89a83692c4f304b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 22:21:33 2015 +0200 Amélioration des tests sur le service DataSourceService pour bien attendre que la base est fermé --- .../ObserveDataSourceConfigurationTopiaH2.java | 15 ++++++--- .../services/service/DataSourceServiceTopia.java | 14 +++----- .../service/DataSourceServiceTopiaTest.java | 39 +++++++++++++++------- 3 files changed, 41 insertions(+), 27 deletions(-) diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java index fa22cd5..881f201 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java @@ -34,10 +34,13 @@ public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConf return false; } -// @Override -// public boolean datasourceExists() { -// return new File(directory, dbName + ".h2.db").exists(); -// } + public File getDatabaseFile() { + return new File(directory, dbName + ".h2.db"); + } + + public File getLockFile() { + return new File(directory, dbName + ".lock.db"); + } public String getDbName() { return dbName; @@ -61,19 +64,21 @@ public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConf if (!(o instanceof ObserveDataSourceConfigurationTopiaH2)) return false; ObserveDataSourceConfigurationTopiaH2 that = (ObserveDataSourceConfigurationTopiaH2) o; return Objects.equals(directory, that.directory) && + Objects.equals(dbName, that.dbName) && Objects.equals(username, that.username) && Objects.equals(password, that.password); } @Override public int hashCode() { - return Objects.hash(directory, username, password); + return Objects.hash(directory, dbName, username, password); } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("directory", directory) + .add("dbName", dbName) .add("username", username) .add("password", "***") .toString(); 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 0b3f44a..753c21d 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 @@ -22,8 +22,6 @@ import org.nuiton.topia.persistence.jdbc.JdbcHelper; import java.io.File; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; import static org.nuiton.i18n.I18n.l; @@ -48,11 +46,9 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfigurationTopiaH2 h2DataSourceConfiguration = (ObserveDataSourceConfigurationTopiaH2) dataSourceConfigurationTopiaSupport; // On vérifie que le fichier de la base existe - Path databasePath = h2DataSourceConfiguration.getDirectory() - .toPath() - .resolve(h2DataSourceConfiguration.getDbName() + ".h2.db"); + File databaseFile = h2DataSourceConfiguration.getDatabaseFile(); - if (!Files.exists(databasePath)) { + if (!databaseFile.exists()) { String message = l(getApplicationLocale(), "observe.services.topia.error.h2.database.notFound"); throw new DatabaseNotFoundException(message, dataSourceConfiguration); @@ -60,10 +56,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } // On vérifier que la base n'est pas déjà en cours d'utilisation - Path databaseLockPath = h2DataSourceConfiguration.getDirectory() - .toPath() - .resolve(h2DataSourceConfiguration.getDbName() + ".lock.db"); - if (Files.exists(databaseLockPath)) { + File databaseLockFile = h2DataSourceConfiguration.getLockFile(); + if (databaseLockFile.exists()) { String message = l(getApplicationLocale(), "observe.services.topia.error.h2.database.locked"); throw new DatabaseConnexionNotAuthorizedException(message, dataSourceConfiguration); 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 ddefd91..9604405 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 @@ -11,13 +11,15 @@ import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.referential.GearDto; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; +import java.io.File; import java.io.IOException; /** @@ -27,6 +29,9 @@ import java.io.IOException; */ public class DataSourceServiceTopiaTest { + /** Logger. */ + private static final Log log = LogFactory.getLog(DataSourceServiceTopiaTest.class); + @ClassRule public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); @@ -52,8 +57,6 @@ public class DataSourceServiceTopiaTest { } - //FIXME A revoir avec la cinématique d'ouverture de base, pour le moment on ignore - @Ignore @Test(expected = DatabaseNotFoundException.class) public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { @@ -86,10 +89,7 @@ public class DataSourceServiceTopiaTest { Assert.assertTrue(true); } - service.close(); - - //FIXME Il faut attendre jusqu'à ce que le lock soit supprimé - Thread.sleep(1000); + closeDatabase(dataSourceConfiguration); service.canConnect(dataSourceConfiguration); @@ -118,28 +118,43 @@ public class DataSourceServiceTopiaTest { Assert.assertTrue(true); } - service.close(); - - //FIXME Il faut attendre jusqu'à ce que le lock soit supprimé - Thread.sleep(1000); + closeDatabase(dataSourceConfiguration); service.canConnect(dataSourceConfiguration); } @Test - public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, InterruptedException { ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); service.create(dataSourceConfiguration, dataSourceCreateConfiguration); + // Une fois la base crée, on est déjà connecté dessus, la base est lockée + // On la ferme + closeDatabase(dataSourceConfiguration); + + service.open(dataSourceConfiguration); applicationContextResource.assertSchemaCreated(dataSourceResource.getTopiaApplicationContext()); } + protected void closeDatabase(ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration) throws InterruptedException { + + service.close(); + + File lockFile = dataSourceConfiguration.getLockFile(); + while (lockFile.exists()) { + if (log.isInfoEnabled()) { + log.info("Database lock " + lockFile + " still exist... Wait "); + } + Thread.sleep(100); + } + } + @Test public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { -- 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 9e590f1e45481559c9bbb32cd902ff91d97dd6d0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:01:03 2015 +0200 Ajout d'un service spécifique à l'API Rest pour tester si le serveur ping bien + une exception si une requète ne peut être jouée --- .../web/controller/v1/PingServiceController.java | 17 ++++++++++++++ .../ird/observe/services/service/PingService.java | 16 +++++++++++++ .../ObserveServiceRestNotAvailableException.java | 26 ++++++++++++++++++++++ .../services/http/ObserveResponseBuilder.java | 23 ++++++++++++++----- 4 files changed, 77 insertions(+), 5 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java new file mode 100644 index 0000000..5999db9 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -0,0 +1,17 @@ +package fr.ird.observe.application.web.controller.v1; + +import fr.ird.observe.application.web.controller.ObserveWebMotionController; +import org.debux.webmotion.server.render.Render; + +/** + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class PingServiceController extends ObserveWebMotionController { + + public Render ping() { + return renderContent("ping", "text/plain"); + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java new file mode 100644 index 0000000..c6f294a --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java @@ -0,0 +1,16 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.spi.NoDataAccess; + +/** + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface PingService extends ObserveService { + + @NoDataAccess + String ping(); + +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java new file mode 100644 index 0000000..72db5e2 --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services; + +import java.net.URL; + +/** + * Exception à retourner quand le service n'est pas accessible. + * + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveServiceRestNotAvailableException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + private final URL serverUrl; + + public ObserveServiceRestNotAvailableException(URL serverUrl) { + this.serverUrl = serverUrl; + } + + public URL getServerUrl() { + return serverUrl; + } + +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java index 821120a..a132f24 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java @@ -4,6 +4,7 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.gson.Gson; +import fr.ird.observe.services.ObserveServiceRestNotAvailableException; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import org.apache.commons.io.Charsets; import org.apache.commons.io.IOUtils; @@ -42,6 +43,7 @@ import java.io.InputStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; +import java.net.ConnectException; import java.nio.charset.Charset; import java.util.List; import java.util.Map; @@ -177,7 +179,7 @@ public class ObserveResponseBuilder { addHeaders(getMethod, request.getHeaders()); - HttpResponse response = client.execute(getMethod); + HttpResponse response = executeRequest(getMethod); if (log.isDebugEnabled()) { log.debug("GET '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -224,7 +226,7 @@ public class ObserveResponseBuilder { postMethod.setEntity(entity); } - HttpResponse response = client.execute(postMethod); + HttpResponse response = executeRequest(postMethod); if (log.isDebugEnabled()) { log.debug("POST '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -245,7 +247,7 @@ public class ObserveResponseBuilder { addParameters(putMethod, contentType, request.getParameters()); addRequestBody(putMethod, contentType, request.getRequestBody()); - HttpResponse response = client.execute(putMethod); + HttpResponse response = executeRequest(putMethod); if (log.isDebugEnabled()) { log.debug("PUT '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -255,7 +257,6 @@ public class ObserveResponseBuilder { } - protected Pair<HttpDelete, HttpResponse> delete0(ObserveRequest request) throws IOException { String baseUrl = request.getBaseUrl(); @@ -264,7 +265,7 @@ public class ObserveResponseBuilder { addHeaders(deleteMethod, request.getHeaders()); - HttpResponse response = client.execute(deleteMethod); + HttpResponse response = executeRequest(deleteMethod); if (log.isDebugEnabled()) { log.debug("DELETE '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -274,6 +275,18 @@ public class ObserveResponseBuilder { } + protected HttpResponse executeRequest(HttpRequestBase request) throws IOException, ObserveServiceRestNotAvailableException { + + try { + HttpResponse response = client.execute(request); + return response; + } catch (ConnectException e) { + // Le service n'est pas accessible + throw new ObserveServiceRestNotAvailableException(request.getURI().toURL()); + } + + } + protected String buildUrlWithParameters(String baseUrl, List<NameValuePair> parameters) { String result = baseUrl; if (!parameters.isEmpty()) { -- 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 5b122a27a5727d1475e91616b43abeefe632b621 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:01:44 2015 +0200 Renommage méthode de vérification de configuration de source de données --- .../fr/ird/observe/services/service/DataSourceService.java | 2 +- .../ird/observe/services/service/DataSourceServiceTopia.java | 4 ++-- .../observe/services/service/DataSourceServiceTopiaTest.java | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) 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 376bed0..fd60a96 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 @@ -16,7 +16,7 @@ import fr.ird.observe.services.spi.NoDataAccess; public interface DataSourceService extends ObserveService { @NoDataAccess - void canConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; + void checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException; @NoDataAccess ObserveDataSourceConnection create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException; 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 753c21d..bea9c73 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 @@ -36,7 +36,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS private static final Log log = LogFactory.getLog(DataSourceServiceTopia.class); @Override - public void canConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { + public void checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { Preconditions.checkState(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport); ObserveDataSourceConfigurationTopiaSupport dataSourceConfigurationTopiaSupport = (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration; @@ -220,7 +220,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS @Override public ObserveDataSourceConnectionTopia open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { - canConnect(dataSourceConfiguration); + checkCanConnect(dataSourceConfiguration); ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration); return createDataSourceConnection((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration, topiaApplicationContext.getAuthenticationToken()); 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 9604405..82e60d2 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 @@ -71,7 +71,7 @@ public class DataSourceServiceTopiaTest { ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); try { - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); Assert.fail(); } catch (DatabaseNotFoundException e) { Assert.assertTrue(true); @@ -83,7 +83,7 @@ public class DataSourceServiceTopiaTest { // Base déjà en cours d'utilisation try { - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); Assert.fail(); } catch (DatabaseConnexionNotAuthorizedException e) { Assert.assertTrue(true); @@ -91,13 +91,13 @@ public class DataSourceServiceTopiaTest { closeDatabase(dataSourceConfiguration); - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); char[] password = dataSourceConfiguration.getPassword(); try { dataSourceConfiguration.setPassword('b'); - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); Assert.fail(); } catch (DatabaseConnexionNotAuthorizedException e) { Assert.assertTrue(true); @@ -112,7 +112,7 @@ public class DataSourceServiceTopiaTest { // Base déjà en cours d'utilisation try { - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); Assert.fail(); } catch (DatabaseConnexionNotAuthorizedException e) { Assert.assertTrue(true); @@ -120,7 +120,7 @@ public class DataSourceServiceTopiaTest { closeDatabase(dataSourceConfiguration); - service.canConnect(dataSourceConfiguration); + service.checkCanConnect(dataSourceConfiguration); } -- 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 b7310f2b2cdd2b5bdd78e7633075c682823d373e Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:02:10 2015 +0200 On teste si on peut lancer les tests sur le serveur web --- .../ird/observe/services/TestMethodResource.java | 27 ++++++++++++++++++++++ .../service/DataSourceServiceRestTest.java | 15 ------------ .../service/seine/TripSeineServiceTest.java | 2 -- 3 files changed, 27 insertions(+), 17 deletions(-) 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 0f62ca4..97f1c27 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,9 +1,11 @@ package fr.ird.observe.services; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.service.PingService; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.Assume; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -80,6 +82,8 @@ public class TestMethodResource implements TestRule { dataSourceConfiguration = testClassResource.createDataSourceConfigurationRest(testClass, "admin", 'a'); + checkServerIsAvailable(testClass, methodName); + } protected void after(Description description) { @@ -94,4 +98,27 @@ public class TestMethodResource implements TestRule { testClassResource.setTemporaryDirectoryRoot(null); } + + public void checkServerIsAvailable(Class<?> testClass, String methodName) { + + boolean serverExist = true; + + PingService service = testClassResource.newService(dataSourceConfiguration, PingService.class); + + try { + String ping = service.ping(); + if (!"ping".equals(ping)) { + serverExist = false; + } + } catch (Exception e) { + serverExist = false; + } + + if (!serverExist) { + if (log.isWarnEnabled()) { + log.warn("Skip test [" + testClass.getName() + "#" + methodName + "], server " + dataSourceConfiguration.getServerUrl() + " is not available."); + } + } + Assume.assumeTrue("Server " + dataSourceConfiguration.getServerUrl() + " not found", serverExist); + } } 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 79b0e86..68a89c7 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 @@ -8,8 +8,6 @@ import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; @@ -29,19 +27,6 @@ public class DataSourceServiceRestTest { @Rule public final TestMethodResource testMethodResource = new TestMethodResource(testClassResource); - @Before - public void setUp() throws Exception { - - ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); - - - //TODO Tester si le serveur est accessible sinon on ignore le test - boolean serverExist = true; - - Assume.assumeTrue("Serveur " + dataSourceConfiguration.getServerUrl() + " no found", serverExist); - - } - @Test(expected = DatabaseNotFoundException.class) public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java index 88c0ccd..ba44b1a 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java @@ -18,7 +18,6 @@ import fr.ird.observe.services.dto.seine.TripSeineStubDto; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.nuiton.util.DateUtil; @@ -29,7 +28,6 @@ import java.util.List; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -@Ignore public class TripSeineServiceTest { public static final String TRIP_SEINE_ID_1 = "fr.ird.observe.entities.seine.TripSeine#1359167789871#0.6765335978809843"; -- 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 e6cc331e43d31421961a18173270cab789bf1b1c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:02:53 2015 +0200 Ajout de nouvelles méthodes d'administration pour voir (et supprimer) les jetons d'authenfication --- .../web/controller/v1/ConfigurationController.java | 39 ++++++++++++++++++++++ .../controller/v1/DataSourceServiceController.java | 4 +-- .../ObserveWebSecurityApplicationContext.java | 4 +++ ...ObserveWebSecurityAuthenticationTokenCache.java | 4 +++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ConfigurationController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ConfigurationController.java index 7803048..ca4815e 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ConfigurationController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ConfigurationController.java @@ -1,10 +1,13 @@ package fr.ird.observe.application.web.controller.v1; +import com.google.common.collect.ImmutableMap; import fr.ird.observe.application.web.configuration.db.ObserveWebDatabases; import fr.ird.observe.application.web.configuration.db.ObserveWebDatabasesHelper; import fr.ird.observe.application.web.configuration.user.ObserveWebUsers; import fr.ird.observe.application.web.configuration.user.ObserveWebUsersHelper; import fr.ird.observe.application.web.controller.ObserveWebMotionController; +import fr.ird.observe.application.web.security.ObserveWebSecurityApplicationContext; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import org.apache.commons.io.IOUtils; import org.debux.webmotion.server.WebMotionContextable; import org.debux.webmotion.server.render.Render; @@ -12,6 +15,7 @@ import org.debux.webmotion.server.render.Render; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; +import java.util.Map; /** * Created on 8/30/15. @@ -84,5 +88,40 @@ public class ConfigurationController extends ObserveWebMotionController { } + public Render showAuthenticationTokens() { + + ObserveWebSecurityApplicationContext securityApplicationContext = getSecurityApplicationContext(); + + StringBuilder builder = new StringBuilder(); + ImmutableMap<String, ObserveDataSourceConfiguration> cache = securityApplicationContext.getAuthenticationTokensCache(); + + builder.append("Number of authentication tokens: ").append(cache.size()); + for (Map.Entry<String, ObserveDataSourceConfiguration> entry : cache.entrySet()) { + builder.append("\n").append(entry.getKey()).append(" - ").append(entry.getValue()); + } + return renderContent(builder.toString(), "text/plain"); + + } + + public Render resetAuthenticationTokens() { + + ObserveWebSecurityApplicationContext securityApplicationContext = getSecurityApplicationContext(); + + StringBuilder builder = new StringBuilder(); + ImmutableMap<String, ObserveDataSourceConfiguration> authenticationTokensCache = securityApplicationContext.getAuthenticationTokensCache(); + + builder.append("Number of authentication tokens to reset: ").append(authenticationTokensCache.size()); + for (Map.Entry<String, ObserveDataSourceConfiguration> entry : authenticationTokensCache.entrySet()) { + builder.append("\n").append(entry.getKey()).append(" - ").append(entry.getValue()); + } + + for (String authenticationToken : authenticationTokensCache.keySet()) { + securityApplicationContext.invalidateAuthenticationToken(authenticationToken); + } + + return renderContent(builder.toString(), "text/plain"); + + } + } 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 b8eb0c5..047c840 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 @@ -28,8 +28,8 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override - public void canConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - service.canConnect(dataSourceConfiguration); + public void checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + service.checkCanConnect(dataSourceConfiguration); } @Override 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 5210310..f07d941 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 @@ -203,6 +203,10 @@ public class ObserveWebSecurityApplicationContext implements Closeable { authenticateCache.removeAuthenticationToken(authenticationToken); } + public ImmutableMap<String, ObserveDataSourceConfiguration> getAuthenticationTokensCache() { + return ImmutableMap.copyOf(authenticateCache.getAuthenticationTokenCache().asMap()); + } + @Override public void close() { authenticateCache.close(); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java index c2edd9f..23c237e 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java @@ -74,6 +74,10 @@ public class ObserveWebSecurityAuthenticationTokenCache implements Closeable { authenticationTokenCache.invalidateAll(); } + public Cache<String, ObserveDataSourceConfiguration> getAuthenticationTokenCache() { + return authenticationTokenCache; + } + @Override public void close() { removeAllAuthenticationTokens(); -- 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