branch feature/7494 updated (e5c6cd2 -> 177d73f)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7494 in repository observe. See http://git.codelutin.com/observe.git from e5c6cd2 Amélioration du contexte de requete avec l'introduction d'un context de sécurité au niveau de la requete new 506e017 Fix javadoc author new 177d73f Suppression du ObserveServiceContext et remplacement par un object qui permet d'initialiser le service The 2 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 177d73f35d34e3f3aad8be4f0c685830b4f71ff3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Sep 1 00:12:33 2015 +0200 Suppression du ObserveServiceContext et remplacement par un object qui permet d'initialiser le service commit 506e017250e5df7727a38a4990823a0d6f25920a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 31 07:26:34 2015 +0200 Fix javadoc author Summary of changes: .../web/ObserveWebApplicationContext.java | 6 +- .../application/web/ObserveWebMotionFilter.java | 22 ++++++- .../web/ObserveWebMotionJsonHelper.java | 2 +- .../v1/ObserveServiceControllerSupport.java | 6 -- .../web/request/ObserveWebRequestContext.java | 55 +++++++++-------- .../fr/ird/observe/services/ObserveService.java | 2 - .../services/ObserveServiceApplicationContext.java | 31 ---------- .../observe/services/ObserveServiceContext.java | 38 ------------ .../observe/services/ObserveServiceFactory.java | 2 +- .../services/ObserveServiceFactorySupport.java | 11 ---- .../services/ObserveServiceInitializerContext.java | 69 ++++++++++++++++++++++ .../ObserveDataSourceConfigurationRest.java | 2 +- .../services/ObserveServiceFactoryRest.java | 6 +- .../ObserveDataSourceConfigurationMainFactory.java | 1 - .../services/ObserveServiceMainFactory.java | 6 +- .../services/ObserveServiceContextTopia.java | 62 ++++++++++--------- .../services/ObserveServiceFactoryTopia.java | 21 +++++-- .../ird/observe/services/ObserveServiceTopia.java | 8 +-- .../services/ApplicationContextResource.java | 15 ++--- .../services/ObserveServiceContextTopiaTaiste.java | 1 + 20 files changed, 196 insertions(+), 170 deletions(-) delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializerContext.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/7494 in repository observe. See http://git.codelutin.com/observe.git commit 506e017250e5df7727a38a4990823a0d6f25920a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 31 07:26:34 2015 +0200 Fix javadoc author --- .../web/ObserveWebMotionJsonHelper.java | 2 +- .../web/request/ObserveWebRequestContext.java | 24 +--------------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionJsonHelper.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionJsonHelper.java index 0e22499..ca01d38 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionJsonHelper.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionJsonHelper.java @@ -40,7 +40,7 @@ import java.util.Date; /** * Created on 5/24/14. * - * @author Tony Chemit <chemit@codelutin.com> + * @author Tony Chemit - chemit@codelutin.com * @since 2.0 */ public class ObserveWebMotionJsonHelper { diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java index 7fe7457..1875c18 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java @@ -1,26 +1,5 @@ package fr.ird.observe.application.web.request; -/* - * #%L - * Pollen :: Rest Api - * %% - * Copyright (C) 2009 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ - import com.google.common.base.Optional; import com.google.common.base.Preconditions; import fr.ird.observe.application.web.ObserveWebApplicationContext; @@ -31,8 +10,7 @@ import org.debux.webmotion.server.call.HttpContext; /** * Created on 4/25/14. * - * @author Tony Chemit <chemit@codelutin.com> - * @since 2.0 + * @author Tony Chemit - chemit@codelutin.com */ public class ObserveWebRequestContext { -- 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/7494 in repository observe. See http://git.codelutin.com/observe.git commit 177d73f35d34e3f3aad8be4f0c685830b4f71ff3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Sep 1 00:12:33 2015 +0200 Suppression du ObserveServiceContext et remplacement par un object qui permet d'initialiser le service --- .../web/ObserveWebApplicationContext.java | 6 +- .../application/web/ObserveWebMotionFilter.java | 22 ++++++- .../v1/ObserveServiceControllerSupport.java | 6 -- .../web/request/ObserveWebRequestContext.java | 31 +++++++++- .../fr/ird/observe/services/ObserveService.java | 2 - .../services/ObserveServiceApplicationContext.java | 31 ---------- .../observe/services/ObserveServiceContext.java | 38 ------------ .../observe/services/ObserveServiceFactory.java | 2 +- .../services/ObserveServiceFactorySupport.java | 11 ---- .../services/ObserveServiceInitializerContext.java | 69 ++++++++++++++++++++++ .../ObserveDataSourceConfigurationRest.java | 2 +- .../services/ObserveServiceFactoryRest.java | 6 +- .../ObserveDataSourceConfigurationMainFactory.java | 1 - .../services/ObserveServiceMainFactory.java | 6 +- .../services/ObserveServiceContextTopia.java | 62 ++++++++++--------- .../services/ObserveServiceFactoryTopia.java | 21 +++++-- .../ird/observe/services/ObserveServiceTopia.java | 8 +-- .../services/ApplicationContextResource.java | 15 ++--- .../services/ObserveServiceContextTopiaTaiste.java | 1 + 19 files changed, 194 insertions(+), 146 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java index 48d38c8..569520d 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java @@ -16,8 +16,8 @@ import fr.ird.observe.application.web.security.ObserveWebSecurityApplicationCont import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceApplicationContext; import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.ObserveServiceInitializerContext; import fr.ird.observe.services.ObserveServiceMainFactory; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import org.debux.webmotion.server.call.HttpContext; @@ -120,9 +120,9 @@ public class ObserveWebApplicationContext implements Closeable { return users; } - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceInitializerContext observeServiceInitializerContext, Class<S> serviceType) { ObserveServiceFactory mainServiceFactory = serviceApplicationContext.getMainServiceFactory(); - return mainServiceFactory.newService(serviceApplicationContext, dataSourceConfiguration, serviceType); + return mainServiceFactory.newService(serviceApplicationContext, observeServiceInitializerContext, serviceType); } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java index fd319a3..8678455 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java @@ -10,11 +10,14 @@ import fr.ird.observe.application.web.security.ObserveWebSecurityApplicationCont import fr.ird.observe.application.web.security.UnknownObserveWebUserException; import fr.ird.observe.application.web.security.UnknownObserveWebUserForDatabaseException; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import org.apache.commons.lang3.StringUtils; import org.debux.webmotion.server.WebMotionFilter; import org.debux.webmotion.server.call.HttpContext; +import org.nuiton.converter.ConverterUtil; import javax.servlet.http.HttpServletRequest; +import java.util.Locale; /** * @author Tony Chemit - chemit@codelutin.com @@ -29,7 +32,7 @@ public class ObserveWebMotionFilter extends WebMotionFilter { ObserveWebRequestSecurityContext securityContext = createSecurityContext(applicationContext, request); - ObserveWebRequestContext requestContext = new ObserveWebRequestContext(applicationContext, securityContext); + ObserveWebRequestContext requestContext = createObserveWebRequestContext(applicationContext, securityContext, request); ObserveWebRequestContext.setRequestContext(context, requestContext); @@ -37,6 +40,23 @@ public class ObserveWebMotionFilter extends WebMotionFilter { } + protected ObserveWebRequestContext createObserveWebRequestContext(ObserveWebApplicationContext applicationContext, ObserveWebRequestSecurityContext securityContext, HttpServletRequest request) { + + Locale applicationLocale = null; + String applicationLocaleStr = getRequestParameterValueOrNull(request, "applicationLocale"); + if (applicationLocaleStr != null) { + applicationLocale = ConverterUtil.convert(Locale.class, applicationLocaleStr); + } + + ReferentialLocale referentialLocale = null; + String referentialLocaleStr = getRequestParameterValueOrNull(request, "referentialLocale"); + if (referentialLocaleStr != null) { + Locale referentialLoca = ConverterUtil.convert(Locale.class, referentialLocaleStr); + referentialLocale = ReferentialLocale.valueOf(referentialLoca); + } + return new ObserveWebRequestContext(applicationContext, securityContext, applicationLocale, referentialLocale); + } + protected ObserveWebRequestSecurityContext createSecurityContext(ObserveWebApplicationContext applicationContext, HttpServletRequest request) throws InvalidAuthenticationTokenException, UnknownObserveWebUserForDatabaseException, BadObserveWebUserPasswordException, DataSourceConfigurationAlreadyRegistredException, UnknownObserveWebUserException { ObserveWebRequestSecurityContext securityContext = null; diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ObserveServiceControllerSupport.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ObserveServiceControllerSupport.java index 68d3fdf..786c8a2 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ObserveServiceControllerSupport.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ObserveServiceControllerSupport.java @@ -2,7 +2,6 @@ package fr.ird.observe.application.web.controller.v1; import fr.ird.observe.application.web.controller.ObserveWebMotionController; import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceContext; import org.debux.webmotion.server.WebMotionContextable; /** @@ -26,9 +25,4 @@ public abstract class ObserveServiceControllerSupport<S extends ObserveService> service = newService(serviceType); } - @Override - public void setServiceContext(ObserveServiceContext serviceContext) { - // Non utilisé ici - } - } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java index 1875c18..f72a5dd 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/request/ObserveWebRequestContext.java @@ -4,9 +4,13 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import fr.ird.observe.application.web.ObserveWebApplicationContext; import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceInitializerContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import org.debux.webmotion.server.call.HttpContext; +import java.util.Locale; + /** * Created on 4/25/14. * @@ -30,23 +34,44 @@ public class ObserveWebRequestContext { protected final ObserveWebApplicationContext applicationContext; + protected final Locale applicationLocale; + + protected final ReferentialLocale referentialLocale; + protected final Optional<ObserveWebRequestSecurityContext> optionalSecurityContext; public ObserveWebRequestContext(ObserveWebApplicationContext applicationContext, - ObserveWebRequestSecurityContext optionalSecurityContext) { + ObserveWebRequestSecurityContext optionalSecurityContext, + Locale applicationLocale, + ReferentialLocale referentialLocale) { this.applicationContext = applicationContext; + this.applicationLocale = applicationLocale; + this.referentialLocale = referentialLocale; this.optionalSecurityContext = Optional.fromNullable(optionalSecurityContext); } + public Locale getApplicationLocale() { + return applicationLocale; + } + + public ReferentialLocale getReferentialLocale() { + return referentialLocale; + } + public ObserveWebApplicationContext getApplicationContext() { return applicationContext; } public <S extends ObserveService> S newService(Class<S> serviceType) { + checkSecurityContextIsPresent(); + ObserveServiceInitializerContext observeServiceInitializerContext = new ObserveServiceInitializerContext(); + observeServiceInitializerContext.setApplicationLocale(applicationLocale); + observeServiceInitializerContext.setReferentialLocale(referentialLocale); + observeServiceInitializerContext.setDataSourceConfiguration(getSecurityContext().getDataSourceConfiguration()); + - checkIsAuthenticated(); - S service = applicationContext.newService(getSecurityContext().getDataSourceConfiguration(), serviceType); + S service = applicationContext.newService(observeServiceInitializerContext, serviceType); return service; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java index e8a8316..13ab64c 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java @@ -7,6 +7,4 @@ package fr.ird.observe.services; */ public interface ObserveService { - void setServiceContext(ObserveServiceContext serviceContext); - } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java index 791dbc4..ea1b1bf 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java @@ -1,7 +1,5 @@ package fr.ird.observe.services; -import fr.ird.observe.services.dto.constants.ReferentialLocale; - import java.io.Closeable; import java.io.File; import java.io.IOException; @@ -10,7 +8,6 @@ import java.nio.file.Path; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.PosixFilePermissions; -import java.util.Locale; import java.util.Set; /** @@ -21,18 +18,6 @@ import java.util.Set; public class ObserveServiceApplicationContext implements Closeable { /** - * FIXME peut-être pas le bon endroit, car la locale est en scope request. - * - * La locale de l'application. - */ - protected Locale applicationLocale; - - /** - * La locale du référentiel. - */ - protected ReferentialLocale referentialLocale; - - /** * L'usine de services principale (celle au dessus de toutes les usines d'implantation). */ protected ObserveServiceFactory mainServiceFactory; @@ -42,22 +27,6 @@ public class ObserveServiceApplicationContext implements Closeable { */ protected Path temporaryDirectoryRoot; - public Locale getApplicationLocale() { - return applicationLocale; - } - - public void setApplicationLocale(Locale applicationLocale) { - this.applicationLocale = applicationLocale; - } - - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; - } - public ObserveServiceFactory getMainServiceFactory() { return mainServiceFactory; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java deleted file mode 100644 index f811dd6..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java +++ /dev/null @@ -1,38 +0,0 @@ -package fr.ird.observe.services; - -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.dto.constants.ReferentialLocale; - -import java.io.File; -import java.io.IOException; -import java.util.Date; -import java.util.Locale; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public interface ObserveServiceContext { - - ReferentialLocale getReferentialLocale(); - - Locale getApplicationLocale(); - - Date now(); - - /** - * Pour créer un service à partir de la data source courante. - */ - <S extends ObserveService> S newService(Class<S> serviceType); - - /** - * Pour créer un service à partir de la data source donnée. - */ - <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); - - /** - * Pour créer un répertoire temporaire dont le nom commence par le préfixe donné. - */ - File createTemporaryDirectory(String prefix) throws IOException; -} 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 b5ab0e5..b149135 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 @@ -13,7 +13,7 @@ public interface ObserveServiceFactory extends Closeable { <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); - <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); + <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext, Class<S> serviceType); @Override void close(); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactorySupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactorySupport.java index 846ac79..8e5577a 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactorySupport.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactorySupport.java @@ -21,16 +21,6 @@ public abstract class ObserveServiceFactorySupport implements ObserveServiceFact } } - protected <S extends ObserveService> S newServiceInstance(Class<S> serviceTypeImpl, ObserveServiceContext serviceContext) { - try { - S service = serviceTypeImpl.newInstance(); - service.setServiceContext(serviceContext); - return service; - } catch (InstantiationException | IllegalAccessException e) { - throw new IllegalStateException("Could not create service", e); - } - } - protected static LoadingCache<Class<?>, Class<?>> newServiceImplementationTypesCache(final String suffix) { return CacheBuilder.newBuilder().build(new CacheLoader<Class<?>, Class<?>>() { @@ -46,7 +36,6 @@ public abstract class ObserveServiceFactorySupport implements ObserveServiceFact throw new IllegalStateException("Could not get class: " + fqn, e); } - } }); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializerContext.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializerContext.java new file mode 100644 index 0000000..fbb0389 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceInitializerContext.java @@ -0,0 +1,69 @@ +package fr.ird.observe.services; + +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.dto.constants.ReferentialLocale; + +import java.nio.file.Path; +import java.util.Locale; + +/** + * Objet contentant les infotmations utiles pour créer un nouveau service. + * + * Created on 31/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveServiceInitializerContext { + + /** + * La locale à utiliser pour faire des traductions. + */ + protected Locale applicationLocale; + + /** + * La locale à utiliser pour la source de données. + */ + protected ReferentialLocale referentialLocale; + + /** + * La configuration de la source de données. + */ + protected ObserveDataSourceConfiguration dataSourceConfiguration; + + /** + * Le répertoire où créer les répertoires temporaires. + */ + protected Path temporaryDirectoryRoot; + + public Locale getApplicationLocale() { + return applicationLocale; + } + + public void setApplicationLocale(Locale applicationLocale) { + this.applicationLocale = applicationLocale; + } + + public ReferentialLocale getReferentialLocale() { + return referentialLocale; + } + + public void setReferentialLocale(ReferentialLocale referentialLocale) { + this.referentialLocale = referentialLocale; + } + + public ObserveDataSourceConfiguration getDataSourceConfiguration() { + return dataSourceConfiguration; + } + + public void setDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfiguration) { + this.dataSourceConfiguration = dataSourceConfiguration; + } + + public Path getTemporaryDirectoryRoot() { + return temporaryDirectoryRoot; + } + + public void setTemporaryDirectoryRoot(Path temporaryDirectoryRoot) { + this.temporaryDirectoryRoot = temporaryDirectoryRoot; + } +} diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java index 1f637fc..c9625bd 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java @@ -22,7 +22,7 @@ public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConf protected URL serverUrl; /** - * Le token d'authentification. + * Le jeton d'authentification. */ protected String authenticationToken; 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 292c0c9..931cf0e 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 @@ -44,9 +44,11 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport { } @Override - public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext, Class<S> serviceType) { Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); + Preconditions.checkNotNull(observeServiceInitializerContext, "observeServiceInitializerContext can't be null."); + ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializerContext.getDataSourceConfiguration(); Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationRest, "dataSourceConfiguration must be of type ObserveRestClientDataSourceConfiguration"); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); @@ -90,7 +92,7 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport { this.serviceClass = serviceClass; this.authenticationToken = authenticationToken; this.gsonSupplier = gsonSupplier; - serviceUrl = serverUrl + "/" + serviceClass.getSimpleName(); + this.serviceUrl = serverUrl + "/" + serviceClass.getSimpleName(); } @Override 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 c5fd02f..6e2b6a8 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 @@ -18,7 +18,6 @@ public class ObserveDataSourceConfigurationMainFactory { result.setPassword(password); result.setUseSsl(useSsl); 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 cf860e6..c62d659 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 @@ -35,9 +35,11 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { } @Override - public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext, Class<S> serviceType) { Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); + Preconditions.checkNotNull(observeServiceInitializerContext, "observeServiceInitializerContext can't be null."); + ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializerContext.getDataSourceConfiguration(); Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); @@ -48,7 +50,7 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { log.debug("Using factory: " + factory); } - S service = factory.newService(applicationContext, dataSourceConfiguration, serviceType); + S service = factory.newService(applicationContext, observeServiceInitializerContext, serviceType); if (log.isInfoEnabled()) { log.info("New service created: " + service); 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 cee443b..7310042 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 @@ -7,6 +7,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.dto.constants.ReferentialLocale; import java.io.File; +import java.nio.file.Path; import java.util.Date; import java.util.Locale; @@ -15,54 +16,52 @@ import java.util.Locale; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveServiceContextTopia implements ObserveServiceContext { +public class ObserveServiceContextTopia { - protected ObserveServiceApplicationContext applicationContext; + protected ObserveServiceInitializerContext observeServiceInitializerContext; protected ObserveServiceFactory serviceFactory; - protected ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration; - protected ObserveTopiaPersistenceContext topiaPersistenceContext; protected ObserveTopiaApplicationContext topiaApplicationContext; + protected ObserveServiceApplicationContext applicationContext; + public ObserveTopiaApplicationContext getTopiaApplicationContext() { return topiaApplicationContext; } - @Override + public Locale getApplicationLocale() { + return observeServiceInitializerContext.getApplicationLocale(); + } + public ReferentialLocale getReferentialLocale() { - return applicationContext.getReferentialLocale(); + return observeServiceInitializerContext.getReferentialLocale(); } - @Override - public Locale getApplicationLocale() { - return applicationContext.getApplicationLocale(); + public Path getTemporaryDirectoryRoot() { + return observeServiceInitializerContext.getTemporaryDirectoryRoot(); } - @Override public Date now() { return new Date(); } - @Override public <S extends ObserveService> S newService(Class<S> serviceType) { - return serviceFactory.newService(applicationContext, dataSourceConfiguration, serviceType); + return serviceFactory.newService(applicationContext, observeServiceInitializerContext, serviceType); } - @Override public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - return applicationContext.getMainServiceFactory().newService(applicationContext, dataSourceConfiguration, serviceType); - } - - @Override - public File createTemporaryDirectory(String prefix) { - return applicationContext.createTemporaryDirectory(prefix); + ObserveServiceInitializerContext observeServiceInitializerContext = new ObserveServiceInitializerContext(); + observeServiceInitializerContext.setApplicationLocale(this.observeServiceInitializerContext.getApplicationLocale()); + observeServiceInitializerContext.setReferentialLocale(this.observeServiceInitializerContext.getReferentialLocale()); + observeServiceInitializerContext.setDataSourceConfiguration(dataSourceConfiguration); + return applicationContext.getMainServiceFactory().newService(applicationContext, observeServiceInitializerContext, serviceType); } public ObserveDataSourceConfigurationTopiaSupport getDataSourceConfiguration() { - return dataSourceConfiguration; + return (ObserveDataSourceConfigurationTopiaSupport) observeServiceInitializerContext.getDataSourceConfiguration(); } public ObserveTopiaPersistenceContext getTopiaPersistenceContext() { @@ -77,14 +76,6 @@ public class ObserveServiceContextTopia implements ObserveServiceContext { this.topiaApplicationContext = topiaApplicationContext; } - public void setApplicationContext(ObserveServiceApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } - - public void setDataSourceConfiguration(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { - this.dataSourceConfiguration = dataSourceConfiguration; - } - public void setServiceFactory(ObserveServiceFactory serviceFactory) { this.serviceFactory = serviceFactory; } @@ -94,4 +85,19 @@ public class ObserveServiceContextTopia implements ObserveServiceContext { topiaPersistenceContext = null; } + public void setApplicationContext(ObserveServiceApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + public ObserveServiceApplicationContext getApplicationContext() { + return applicationContext; + } + + public File createTemporaryDirectory(String prefix) { + return applicationContext.createTemporaryDirectory(prefix); + } + + public void setObserveServiceInitializerContext(ObserveServiceInitializerContext observeServiceInitializerContext) { + this.observeServiceInitializerContext = observeServiceInitializerContext; + } } 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 c25033f..b9345bc 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 @@ -40,17 +40,18 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { } @Override - public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext, Class<S> serviceType) { Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); - Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkNotNull(observeServiceInitializerContext, "observeServiceInitializerContext can't be null."); + ObserveDataSourceConfiguration dataSourceConfiguration = observeServiceInitializerContext.getDataSourceConfiguration(); Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport, "dataSourceConfiguration must be of type " + ObserveDataSourceConfigurationTopiaSupport.class.getName()); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); Class<S> serviceTypeImpl = getServiceClassType(serviceTypeCache, serviceType); Preconditions.checkNotNull(serviceTypeImpl, "serviceTypeImpl not found for : " + serviceType.getName()); - ObserveServiceContextTopia serviceContext = createServiceContext(applicationContext, (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration); + ObserveServiceContextTopia serviceContext = createServiceContext(applicationContext, observeServiceInitializerContext); S service = newServiceInstance(serviceTypeImpl, serviceContext); service = newServiceTransactionalProxy(serviceType, service, serviceContext); @@ -58,18 +59,28 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { } - protected ObserveServiceContextTopia createServiceContext(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { + protected ObserveServiceContextTopia createServiceContext(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext) { ObserveServiceContextTopia serviceContext = new ObserveServiceContextTopia(); serviceContext.setApplicationContext(applicationContext); - serviceContext.setDataSourceConfiguration(dataSourceConfiguration); + serviceContext.setObserveServiceInitializerContext(observeServiceInitializerContext); serviceContext.setServiceFactory(this); return serviceContext; } + protected <S extends ObserveService> S newServiceInstance(Class<S> serviceTypeImpl, ObserveServiceContextTopia serviceContext) { + try { + S service = serviceTypeImpl.newInstance(); + ((ObserveServiceTopia) service).setServiceContext(serviceContext); + return service; + } catch (InstantiationException | IllegalAccessException e) { + throw new IllegalStateException("Could not create service", e); + } + } + protected <S extends ObserveService> S newServiceTransactionalProxy(Class<S> serviceType, S service, ObserveServiceContextTopia serviceContext) { ObserveServiceInvocationHandler invocationHandler = new ObserveServiceInvocationHandler(serviceContext, service); 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 dfc644c..38f04e6 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 @@ -79,11 +79,10 @@ public class ObserveServiceTopia implements ObserveService { init(); } - @Override - public void setServiceContext(ObserveServiceContext serviceContext) { + public void setServiceContext(ObserveServiceContextTopia serviceContext) { Preconditions.checkNotNull(serviceContext, "serviceContext can't be null."); Preconditions.checkArgument(serviceContext instanceof ObserveServiceContextTopia, "serviceContext must be of type " + ObserveServiceContextTopia.class.getName()); - this.serviceContext = (ObserveServiceContextTopia) serviceContext; + this.serviceContext = serviceContext; } public static <D extends IdDto, E extends TopiaEntity> Class<E> getEntityType(Class<D> dtoType) { @@ -193,7 +192,7 @@ public class ObserveServiceTopia implements ObserveService { Class<D> dtoType, Class<E> entityType, E entity, - Class<? extends IdDto> ... includeReferenceDtoTypes) { + Class<? extends IdDto>... includeReferenceDtoTypes) { try (EntityToDtoBuilder<E, D> dtoBuilder = EntityToDtoBuilder.create(entityType, dtoType)) { @@ -301,6 +300,7 @@ public class ObserveServiceTopia implements ObserveService { return temporaryDataSourceConfiguration; } + protected ObserveDataSourceConfigurationTopiaH2 createTemporaryDatabase(String prefix) { ObserveDataSourceConfigurationTopiaH2 temporaryDataSourceConfiguration = new ObserveDataSourceConfigurationTopiaH2(); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java index 9ed1d71..f854184 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java @@ -4,7 +4,6 @@ import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; 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.dto.constants.ReferentialLocale; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; @@ -43,11 +42,10 @@ public class ApplicationContextResource implements TestRule { this.serviceFactory = new ObserveServiceFactoryTopia() { @Override - protected ObserveServiceContextTopia createServiceContext(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { + protected ObserveServiceContextTopia createServiceContext(ObserveServiceApplicationContext applicationContext, ObserveServiceInitializerContext observeServiceInitializerContext) { ObserveServiceContextTopiaTaiste serviceContext = new ObserveServiceContextTopiaTaiste(); serviceContext.setApplicationContext(applicationContext); - - serviceContext.setDataSourceConfiguration(dataSourceConfiguration); + serviceContext.setObserveServiceInitializerContext(observeServiceInitializerContext); serviceContext.setServiceFactory(this); return serviceContext; @@ -60,7 +58,12 @@ public class ApplicationContextResource implements TestRule { } public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - return serviceFactory.newService(serviceApplicationContext, dataSourceConfiguration, serviceType); + ObserveServiceInitializerContext observeServiceInitializerContext = new ObserveServiceInitializerContext(); + observeServiceInitializerContext.setDataSourceConfiguration(dataSourceConfiguration); + observeServiceInitializerContext.setApplicationLocale(Locale.FRANCE); + observeServiceInitializerContext.setReferentialLocale(ReferentialLocale.FR); + observeServiceInitializerContext.setTemporaryDirectoryRoot(serviceApplicationContext.temporaryDirectoryRoot); + return serviceFactory.newService(serviceApplicationContext, observeServiceInitializerContext, serviceType); } public void closeServiceFactory() { @@ -98,8 +101,6 @@ public class ApplicationContextResource implements TestRule { ObserveServiceTopia.init(); - serviceApplicationContext.setApplicationLocale(Locale.FRANCE); - serviceApplicationContext.setReferentialLocale(ReferentialLocale.FR); serviceApplicationContext.setMainServiceFactory(serviceFactory); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java index 7d49eb5..14b4032 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceContextTopiaTaiste.java @@ -15,4 +15,5 @@ public class ObserveServiceContextTopiaTaiste extends ObserveServiceContextTopia public Date now() { return DATE; } + } -- 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