This is an automated email from the git hooks/post-receive script. New commit to branch feature/7458 in repository observe. See http://git.codelutin.com/observe.git commit 57c39cc277aba366fc6dd24cae60f3a41a01903a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Aug 20 09:25:53 2015 +0200 debut de services rest + restructuration des paquetages --- observe-services-api/pom.xml | 18 +++ .../observe/services/ObserveServiceContext.java | 4 +- .../observe/services/ObserveServiceFactory.java | 4 +- .../services/ObserveDataSourceConfiguration.java | 10 ++ .../services/ObserveServiceApplicationContext.java | 8 +- .../observe/services/ObserveServiceContext.java | 4 + .../observe/services/ObserveServiceFactory.java | 4 +- .../services/ObserveServiceFactorySupport.java | 4 +- .../services/ObserveServiceMainFactory.java | 30 ++--- .../services/FakeObserveServiceContext.java | 22 ---- .../services/FakeObserveServiceFactory.java | 19 --- .../services/ObserveServiceMainFactoryTest.java | 23 ---- .../fr.ird.observe.services.ObserveServiceFactory | 1 - .../LICENSE.txt | 0 .../README.txt | 0 .../pom.xml | 43 +------ .../ObserveRestClientDataSourceConfiguration.java | 39 +++++++ .../rest/client/ObserveRestClientService.java | 17 +++ .../client/ObserveRestClientServiceContext.java | 38 ++++++ .../client/ObserveRestClientServiceFactory.java | 46 ++++++++ .../service/ReferentialServiceRestClient.java | 14 +-- .../fr.ird.observe.services.ObserveServiceFactory | 1 + .../client/service/ReferentialServiceRestTest.java | 45 +++++++ .../src/test/resources/log4j.properties | 0 .../LICENSE.txt | 0 .../README.txt | 0 .../pom.xml | 59 +++++----- .../wm/ObserveRestWebMotionApplicationContext.java | 81 +++++++++++++ .../ObserveRestWebMotionApplicationListener.java | 42 +++++++ .../rest/wm/ObserveRestWebMotionController.java | 11 ++ .../rest/wm/ObserveRestWebMotionFilter.java | 55 +++++++++ .../rest/wm/ObserveRestWebMotionJsonHelper.java | 130 +++++++++++++++++++++ .../rest/wm/ObserveRestWebMotionRender.java | 52 +++++++++ .../rest/wm/service/ReferentialServiceRest.java | 66 +++++++++++ .../src/main/resources/mapping | 12 ++ .../src/main/webapp/WEB-INF/web.xml | 25 ++++ .../services/ObserveServiceFactoryRest.java | 33 ------ .../ird/observe/services/ObserveServiceRest.java | 17 --- .../rest/wm/ObserveRestApplicationContext.java | 42 +++++++ .../rest/wm/ObserveRestApplicationListener.java | 42 +++++++ .../rest/wm/ObserveRestWebMotionFilter.java | 62 ++++++++++ .../fr.ird.observe.services.ObserveServiceFactory | 1 - observe-services-rest/src/main/resources/mapping | 28 +++++ .../src/main/webapp/WEB-INF/web.xml | 36 ++++++ .../referential/ReferentialServiceRestTest.java | 37 ------ .../observe/services/AbstractObserveService.java | 5 +- .../services/ObserveServiceContextTopia.java | 45 ------- .../services/{dto => topia}/ObserveDtoBinders.java | 3 +- .../{dto => topia}/ObserveDtosInitializer.java | 4 +- .../services/{ => topia}/ObserveServiceTopia.java | 11 +- .../topia/ObserveTopiaDataSourceConfiguration.java | 22 ++++ .../services/topia/ObserveTopiaServiceContext.java | 54 +++++++++ .../ObserveTopiaServiceFactory.java} | 41 ++++--- .../{ => topia}/builder/DtoToEntityBuilder.java | 6 +- .../{ => topia}/builder/EntityToDtoBuilder.java | 6 +- .../builder/EntityToReferenceDtoBuilder.java | 4 +- .../EntityToReferentialReferenceDtoBuilder.java | 4 +- .../service/ReferentialServiceTopia.java | 9 +- .../ActivitySeineObservedSystemServiceTopia.java | 8 +- .../service/seine/ActivitySeineServiceTopia.java | 5 +- .../service/seine/FloatingObjectServiceTopia.java | 7 +- .../fr.ird.observe.services.ObserveServiceFactory | 2 +- .../{ => topia}/ApplicationContextResource.java | 17 ++- .../service/{ => topia}/DataSourceResource.java | 2 +- .../service}/ReferentialServiceTopiaTest.java | 24 ++-- .../builder/DtoToEntityBuilderTest.java | 4 +- .../builder/EntityToDtoBuilderTest.java | 4 +- pom.xml | 53 +++++++-- 68 files changed, 1193 insertions(+), 372 deletions(-) diff --git a/observe-services-api/pom.xml b/observe-services-api/pom.xml index 0a79ce5..590f6e8 100644 --- a/observe-services-api/pom.xml +++ b/observe-services-api/pom.xml @@ -59,5 +59,23 @@ </dependencies> + <build> + + <plugins> + <plugin> + <groupId>com.thoughtworks.paranamer</groupId> + <artifactId>paranamer-maven-plugin</artifactId> + <executions> + <execution> + <id>extract-paranamer</id> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + + </build> </project> \ No newline at end of file diff --git a/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceContext.java b/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceContext.java index 320d53e..dbf5fcf 100644 --- a/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceContext.java +++ b/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceContext.java @@ -40,9 +40,9 @@ public class ObserveServiceContext { /** * Application context. */ - protected ObserveApplicationContext applicationContext; + protected ObserveServiceApplicationContext applicationContext; - public ObserveServiceContext(ObserveApplicationContext applicationContext, DataSource dataSource) { + public ObserveServiceContext(ObserveServiceApplicationContext applicationContext, DataSource dataSource) { this.applicationContext = applicationContext; this.config = applicationContext.getConfig(); this.dataSource = dataSource; diff --git a/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceFactory.java index 25dcb33..551985d 100644 --- a/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceFactory.java +++ b/observe-services-api/src/main/fromRefactor/fr/ird/observe/services/ObserveServiceFactory.java @@ -21,11 +21,11 @@ public class ObserveServiceFactory { /** Logger. */ private static final Log log = LogFactory.getLog(ObserveServiceFactory.class); - protected final ObserveApplicationContext applicationContext; + protected final ObserveServiceApplicationContext applicationContext; protected static Set<ObserveServiceFactoryProvider> providers; - public ObserveServiceFactory(ObserveApplicationContext applicationContext) { + public ObserveServiceFactory(ObserveServiceApplicationContext applicationContext) { this.applicationContext = applicationContext; if (log.isInfoEnabled()) { log.info("Init new ServiceFactory for applicationContext: " + applicationContext); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveDataSourceConfiguration.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveDataSourceConfiguration.java new file mode 100644 index 0000000..ae1da54 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveDataSourceConfiguration.java @@ -0,0 +1,10 @@ +package fr.ird.observe.services; + +/** + * Created on 19/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface ObserveDataSourceConfiguration { + +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceContextRest.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java similarity index 78% rename from observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceContextRest.java rename to observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java index d9efbdf..542f8e3 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceContextRest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceApplicationContext.java @@ -3,15 +3,17 @@ package fr.ird.observe.services; import fr.ird.observe.services.dto.constants.ReferentialLocale; /** - * Created on 16/08/15. + * Created on 19/08/15. * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveServiceContextRest implements ObserveServiceContext { +public class ObserveServiceApplicationContext { + /** + * La locale du référentiel. + */ protected ReferentialLocale referentialLocale; - @Override public ReferentialLocale getReferentialLocale() { return referentialLocale; } 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 index 9b1a3e2..d854949 100644 --- 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 @@ -2,6 +2,8 @@ package fr.ird.observe.services; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import java.util.Date; + /** * Created on 16/08/15. * @@ -11,4 +13,6 @@ public interface ObserveServiceContext { ReferentialLocale getReferentialLocale(); + Date now(); + } 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 92549e8..1f86f6d 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 @@ -7,8 +7,8 @@ package fr.ird.observe.services; */ public interface ObserveServiceFactory { - <S extends ObserveService> boolean accept(ObserveServiceContext serviceContext, Class<S> serviceType); + <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); - <S extends ObserveService> S newService(ObserveServiceContext serviceContext, Class<S> serviceType); + <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType); } 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 dbae6c6..a449e99 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 @@ -31,14 +31,14 @@ public abstract class ObserveServiceFactorySupport implements ObserveServiceFact } } - public static LoadingCache<Class<?>, Class<?>> newAddSuffixClassCache(final String suffix) { + public static LoadingCache<Class<?>, Class<?>> newAddSuffixClassCache(final String prefix, final String suffix) { return CacheBuilder.newBuilder().build(new CacheLoader<Class<?>, Class<?>>() { @Override public Class<?> load(Class<?> key) throws Exception { - String fqn = key.getName() + suffix; + String fqn = prefix + key.getSimpleName() + suffix; try { Class<?> classImpl = Class.forName(fqn); return classImpl; diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java index 1dd0b7b..116f6ad 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceMainFactory.java @@ -26,29 +26,33 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { } @Override - public <S extends ObserveService> boolean accept(ObserveServiceContext serviceContext, Class<S> serviceType) { + public <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - ObserveServiceFactory factory = getFactory(serviceContext, serviceType); - return factory.accept(serviceContext, serviceType); + ObserveServiceFactory factory = getFactory(dataSourceConfiguration, serviceType); + return factory != null; } @Override - public <S extends ObserveService> S newService(ObserveServiceContext serviceContext, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - Preconditions.checkNotNull(serviceContext, "serviceContext can't be null."); + Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); Preconditions.checkNotNull(serviceType, "serviceType can't be null."); - ObserveServiceFactory factory = getFactory(serviceContext, serviceType); + ObserveServiceFactory factory = getFactory(dataSourceConfiguration, serviceType); + Preconditions.checkNotNull(factory, "factory can't be null."); if (log.isDebugEnabled()) { log.debug("Using factory: " + factory); } - S service = factory.newService(serviceContext, serviceType); + S service = factory.newService(applicationContext, dataSourceConfiguration, serviceType); + if (log.isInfoEnabled()) { - log.info("New service created: " + service + " for serviceContext: " + serviceContext); + log.info("New service created: " + service); } + return service; } @@ -69,17 +73,17 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { delegateFactories = builder.build(); } - protected <S extends ObserveService> ObserveServiceFactory getFactory(ObserveServiceContext serviceContext, Class<S> serviceType) { + protected <S extends ObserveService> ObserveServiceFactory getFactory(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { ObserveServiceFactory result = null; - for (ObserveServiceFactory provider : delegateFactories) { - if (provider.accept(serviceContext, serviceType)) { - result = provider; + for (ObserveServiceFactory serviceFactory : delegateFactories) { + if (serviceFactory.accept(dataSourceConfiguration, serviceType)) { + result = serviceFactory; break; } } - Preconditions.checkState(result != null, String.format("No factory found for serviceContext: %s and serviceType: %s", serviceContext, serviceType.getName())); + Preconditions.checkState(result != null, String.format("No factory found for dataSourceConfiguration: %s and serviceType: %s", dataSourceConfiguration, serviceType.getName())); return result; } diff --git a/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceContext.java b/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceContext.java deleted file mode 100644 index 5ab54bb..0000000 --- a/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceContext.java +++ /dev/null @@ -1,22 +0,0 @@ -package fr.ird.observe.services; - -import fr.ird.observe.services.dto.constants.ReferentialLocale; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class FakeObserveServiceContext implements ObserveServiceContext { - - private ReferentialLocale referentialLocale; - - @Override - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; - } -} diff --git a/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceFactory.java b/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceFactory.java deleted file mode 100644 index e6d8cc6..0000000 --- a/observe-services-api/src/test/java/fr/ird/observe/services/FakeObserveServiceFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ird.observe.services; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class FakeObserveServiceFactory implements ObserveServiceFactory { - - @Override - public <S extends ObserveService> boolean accept(ObserveServiceContext serviceContext, Class<S> serviceType) { - return serviceContext != null && serviceType != null; - } - - @Override - public <S extends ObserveService> S newService(ObserveServiceContext serviceContext, Class<S> serviceType) { - return null; - } -} diff --git a/observe-services-api/src/test/java/fr/ird/observe/services/ObserveServiceMainFactoryTest.java b/observe-services-api/src/test/java/fr/ird/observe/services/ObserveServiceMainFactoryTest.java deleted file mode 100644 index 92ee0e8..0000000 --- a/observe-services-api/src/test/java/fr/ird/observe/services/ObserveServiceMainFactoryTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ird.observe.services; - -import fr.ird.observe.services.service.ReferentialService; -import org.junit.Test; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveServiceMainFactoryTest { - - protected ReferentialService service; - - @Test - public void testGetReferentialService() { - - FakeObserveServiceContext context = new FakeObserveServiceContext(); - service = ObserveServiceMainFactory.get().newService(context, ReferentialService.class); - - } - -} \ No newline at end of file diff --git a/observe-services-api/src/test/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory b/observe-services-api/src/test/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory deleted file mode 100644 index 7db991e..0000000 --- a/observe-services-api/src/test/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory +++ /dev/null @@ -1 +0,0 @@ -fr.ird.observe.services.FakeObserveServiceFactory \ No newline at end of file diff --git a/observe-services-rest/LICENSE.txt b/observe-services-rest-client/LICENSE.txt similarity index 100% copy from observe-services-rest/LICENSE.txt copy to observe-services-rest-client/LICENSE.txt diff --git a/observe-services-rest/README.txt b/observe-services-rest-client/README.txt similarity index 100% copy from observe-services-rest/README.txt copy to observe-services-rest-client/README.txt diff --git a/observe-services-rest/pom.xml b/observe-services-rest-client/pom.xml similarity index 61% copy from observe-services-rest/pom.xml copy to observe-services-rest-client/pom.xml index 7e4cce5..ae97bff 100644 --- a/observe-services-rest/pom.xml +++ b/observe-services-rest-client/pom.xml @@ -10,10 +10,10 @@ <version>4.0.2-SNAPSHOT</version> </parent> - <artifactId>observe-services-rest</artifactId> + <artifactId>observe-services-rest-client</artifactId> - <name>ObServe :: Services (impl REST)</name> - <description>ObServe services (Implementation REST)</description> + <name>ObServe :: Services (client REST)</name> + <description>ObServe services (client REST)</description> <dependencies> @@ -28,17 +28,6 @@ <artifactId>observe-services-api</artifactId> <version>${project.version}</version> </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>observe-entities</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>observe-business</artifactId> - <version>${project.version}</version> - </dependency> - <!-- commons dependencies --> @@ -55,10 +44,6 @@ <artifactId>commons-collections4</artifactId> </dependency> <dependency> - <groupId>commons-jxpath</groupId> - <artifactId>commons-jxpath</artifactId> - </dependency> - <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> @@ -72,28 +57,6 @@ <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> - <dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-decorator</artifactId> - </dependency> - <dependency> - <groupId>org.nuiton.i18n</groupId> - <artifactId>nuiton-i18n</artifactId> - </dependency> - - <!-- persistence --> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-core</artifactId> - </dependency> - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - </dependency> - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-service-replication</artifactId> - </dependency> <!-- Logging --> <dependency> diff --git a/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientDataSourceConfiguration.java b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientDataSourceConfiguration.java new file mode 100644 index 0000000..45a2074 --- /dev/null +++ b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientDataSourceConfiguration.java @@ -0,0 +1,39 @@ +package fr.ird.observe.services.rest.client; + +import fr.ird.observe.services.ObserveDataSourceConfiguration; + +import java.net.URL; + +/** + * Created on 19/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestClientDataSourceConfiguration implements ObserveDataSourceConfiguration { + + /** + * L'url du serveur à utiliser. + */ + protected URL serverUrl; + + /** + * Le token d'authentification. + */ + protected String authenticationToken; + + public URL getServerUrl() { + return serverUrl; + } + + public void setServerUrl(URL serverUrl) { + this.serverUrl = serverUrl; + } + + public String getAuthenticationToken() { + return authenticationToken; + } + + public void setAuthenticationToken(String authenticationToken) { + this.authenticationToken = authenticationToken; + } +} diff --git a/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientService.java b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientService.java new file mode 100644 index 0000000..ba49921 --- /dev/null +++ b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientService.java @@ -0,0 +1,17 @@ +package fr.ird.observe.services.rest.client; + +import fr.ird.observe.services.ObserveService; + +/** + * Created on 16/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestClientService implements ObserveService { + + protected ObserveRestClientServiceContext serviceContext; + + public void setServiceContext(ObserveRestClientServiceContext serviceContext) { + this.serviceContext = serviceContext; + } +} diff --git a/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceContext.java b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceContext.java new file mode 100644 index 0000000..2083a1a --- /dev/null +++ b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceContext.java @@ -0,0 +1,38 @@ +package fr.ird.observe.services.rest.client; + +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.ObserveServiceContext; +import fr.ird.observe.services.dto.constants.ReferentialLocale; + +import java.util.Date; + +/** + * Created on 16/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestClientServiceContext implements ObserveServiceContext { + + protected ObserveServiceApplicationContext applicationContext; + + protected ObserveRestClientDataSourceConfiguration dataSourceConfiguration; + + @Override + public ReferentialLocale getReferentialLocale() { + return applicationContext.getReferentialLocale(); + } + + @Override + public Date now() { + return new Date(); + } + + public void setDataSourceConfiguration(ObserveRestClientDataSourceConfiguration dataSourceConfiguration) { + this.dataSourceConfiguration = dataSourceConfiguration; + } + + public void setApplicationContext(ObserveServiceApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + +} diff --git a/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceFactory.java b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceFactory.java new file mode 100644 index 0000000..054661c --- /dev/null +++ b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/ObserveRestClientServiceFactory.java @@ -0,0 +1,46 @@ +package fr.ird.observe.services.rest.client; + +import com.google.common.base.Preconditions; +import com.google.common.cache.LoadingCache; +import fr.ird.observe.services.ObserveDataSourceConfiguration; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.ObserveServiceFactorySupport; + +/** + * Created on 16/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestClientServiceFactory extends ObserveServiceFactorySupport { + + protected final LoadingCache<Class<?>, Class<?>> serviceTypeCache = newAddSuffixClassCache("fr.ird.observe.services.rest.client.service.", "RestClient"); + + @Override + public <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + return dataSourceConfiguration instanceof ObserveRestClientDataSourceConfiguration; + } + + @Override + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + + Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveRestClientDataSourceConfiguration, "dataSourceConfiguration must be of type ObserveRestClientDataSourceConfiguration"); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + + Class<S> serviceTypeImpl = getServiceClassType(serviceTypeCache, serviceType); + Preconditions.checkNotNull(serviceTypeImpl, "serviceTypeImpl not found for : " + serviceType.getName()); + + ObserveRestClientServiceContext serviceContext = new ObserveRestClientServiceContext(); + serviceContext.setApplicationContext(applicationContext); + serviceContext.setDataSourceConfiguration((ObserveRestClientDataSourceConfiguration) dataSourceConfiguration); + + S service = newServiceInstance(serviceTypeImpl, serviceContext); + return service; + + } + +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/service/ReferentialServiceRest.java b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestClient.java similarity index 77% rename from observe-services-rest/src/main/java/fr/ird/observe/services/service/ReferentialServiceRest.java rename to observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestClient.java index fa73b4a..431c831 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/service/ReferentialServiceRest.java +++ b/observe-services-rest-client/src/main/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestClient.java @@ -1,10 +1,10 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services.rest.client.service; -import fr.ird.observe.services.ObserveServiceContext; -import fr.ird.observe.services.ObserveServiceRest; +import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.rest.client.ObserveRestClientService; +import fr.ird.observe.services.service.ReferentialService; import java.util.Collection; @@ -13,7 +13,7 @@ import java.util.Collection; * * @author Tony Chemit - chemit@codelutin.com */ -public class ReferentialServiceRest extends ObserveServiceRest implements ReferentialService { +public class ReferentialServiceRestClient extends ObserveRestClientService implements ReferentialService { @Override public <R extends ReferentialDto> ReferenceSetDto<R> getReferentialReferenceSet(Class<R> type) { @@ -51,8 +51,4 @@ public class ReferentialServiceRest extends ObserveServiceRest implements Refere } - @Override - public void setServiceContext(ObserveServiceContext serviceContext) { - - } } diff --git a/observe-services-rest-client/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory b/observe-services-rest-client/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory new file mode 100644 index 0000000..9753b48 --- /dev/null +++ b/observe-services-rest-client/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory @@ -0,0 +1 @@ +fr.ird.observe.services.rest.client.ObserveRestClientServiceFactory \ No newline at end of file diff --git a/observe-services-rest-client/src/test/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestTest.java b/observe-services-rest-client/src/test/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestTest.java new file mode 100644 index 0000000..dd93de8 --- /dev/null +++ b/observe-services-rest-client/src/test/java/fr/ird/observe/services/rest/client/service/ReferentialServiceRestTest.java @@ -0,0 +1,45 @@ +package fr.ird.observe.services.rest.client.service; + +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.SexDto; +import fr.ird.observe.services.rest.client.ObserveRestClientDataSourceConfiguration; +import fr.ird.observe.services.service.ReferentialService; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Created on 16/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReferentialServiceRestTest { + + protected ReferentialService service; + + @Before + public void setUp() throws Exception { + + ObserveRestClientDataSourceConfiguration dataSourceConfiguration = new ObserveRestClientDataSourceConfiguration(); + dataSourceConfiguration.setServerUrl(null); + dataSourceConfiguration.setAuthenticationToken(null); + + ObserveServiceApplicationContext serviceApplicationContext = new ObserveServiceApplicationContext(); + serviceApplicationContext.setReferentialLocale(ReferentialLocale.FR); + + service = ObserveServiceMainFactory.get().newService(serviceApplicationContext, dataSourceConfiguration, ReferentialService.class); + + } + + @Test + public void testGetReferentialLabelSet() throws Exception { + + ReferenceSetDto referentialLabelSet = service.getReferentialReferenceSet(SexDto.class); + Assert.assertNotNull(referentialLabelSet); + + } + +} \ No newline at end of file diff --git a/observe-services-rest/src/test/resources/log4j.properties b/observe-services-rest-client/src/test/resources/log4j.properties similarity index 100% rename from observe-services-rest/src/test/resources/log4j.properties rename to observe-services-rest-client/src/test/resources/log4j.properties diff --git a/observe-services-rest/LICENSE.txt b/observe-services-rest-wm/LICENSE.txt similarity index 100% rename from observe-services-rest/LICENSE.txt rename to observe-services-rest-wm/LICENSE.txt diff --git a/observe-services-rest/README.txt b/observe-services-rest-wm/README.txt similarity index 100% rename from observe-services-rest/README.txt rename to observe-services-rest-wm/README.txt diff --git a/observe-services-rest/pom.xml b/observe-services-rest-wm/pom.xml similarity index 67% rename from observe-services-rest/pom.xml rename to observe-services-rest-wm/pom.xml index 7e4cce5..bf01c47 100644 --- a/observe-services-rest/pom.xml +++ b/observe-services-rest-wm/pom.xml @@ -10,10 +10,10 @@ <version>4.0.2-SNAPSHOT</version> </parent> - <artifactId>observe-services-rest</artifactId> + <artifactId>observe-services-rest-wn</artifactId> - <name>ObServe :: Services (impl REST)</name> - <description>ObServe services (Implementation REST)</description> + <name>ObServe :: Services (impl WebMotion)</name> + <description>ObServe services (impl WebMotion)</description> <dependencies> @@ -30,16 +30,10 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> - <artifactId>observe-entities</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>observe-business</artifactId> + <artifactId>observe-services-topia</artifactId> <version>${project.version}</version> </dependency> - <!-- commons dependencies --> <dependency> @@ -55,10 +49,6 @@ <artifactId>commons-collections4</artifactId> </dependency> <dependency> - <groupId>commons-jxpath</groupId> - <artifactId>commons-jxpath</artifactId> - </dependency> - <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> @@ -72,29 +62,44 @@ <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> + + <!-- WebMotion --> <dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-decorator</artifactId> + <groupId>org.debux.webmotion</groupId> + <artifactId>webmotion</artifactId> </dependency> <dependency> - <groupId>org.nuiton.i18n</groupId> - <artifactId>nuiton-i18n</artifactId> + <groupId>org.debux.webmotion</groupId> + <artifactId>webmotion-unittest</artifactId> + <exclusions> + <exclusion> + <groupId>org.apache.tomcat.embed</groupId> + <artifactId>tomcat-embed-logging-juli</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.tomcat.embed</groupId> + <artifactId>tomcat-embed-jasper</artifactId> + </exclusion> + <exclusion> + <groupId>org.eclipse.jdt.core.compiler</groupId> + <artifactId>ecj</artifactId> + </exclusion> + </exclusions> </dependency> - <!-- persistence --> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-core</artifactId> - </dependency> <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> </dependency> + + <!-- Paranamer --> <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-service-replication</artifactId> + <groupId>com.thoughtworks.paranamer</groupId> + <artifactId>paranamer</artifactId> </dependency> + + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationContext.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationContext.java new file mode 100644 index 0000000..6c15c17 --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationContext.java @@ -0,0 +1,81 @@ +package fr.ird.observe.services.rest.wm; + +import com.google.common.base.Preconditions; +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.topia.ObserveTopiaServiceFactory; +import org.debux.webmotion.server.call.HttpContext; + +import javax.servlet.ServletContext; + +/** + * @author Tony Chemit : chemit@codelutin.com + */ +public class ObserveRestWebMotionApplicationContext { + + public static final String APPLICATION_CONTEXT_PARAMETER = ObserveRestWebMotionApplicationContext.class.getName(); + + public static final String MISSING_APPLICATION_CONTEXT = + ObserveRestWebMotionApplicationContext.class.getSimpleName() + " not found. You probably forgot to" + + " register " + ObserveRestWebMotionApplicationListener.class.getName() + " in your web.xml"; + + protected ObserveTopiaServiceFactory serviceFactory; + + protected ObserveServiceApplicationContext serviceApplicationContext; + + protected static ObserveRestWebMotionApplicationContext getApplicationContext(HttpContext context) { + + ServletContext servletContext = context.getServletContext(); + ObserveRestWebMotionApplicationContext result = + (ObserveRestWebMotionApplicationContext) servletContext + .getAttribute(ObserveRestWebMotionApplicationContext.APPLICATION_CONTEXT_PARAMETER); + + Preconditions.checkState(result != null, ObserveRestWebMotionApplicationContext.MISSING_APPLICATION_CONTEXT); + + return result; + + } + +// protected ObserveServiceConfig serviceConfig; +// +// protected ObserveTopiaApplicationContext rootContext; + + public void init() { + + serviceFactory = new ObserveTopiaServiceFactory(); + serviceApplicationContext = new ObserveServiceApplicationContext(); + +// ObserveServiceConfig config = new ObserveServiceConfig(null); +// serviceConfig = config; +// Properties rootProperties = serviceConfig.getFlatOptions(); +// rootProperties.setProperty(TopiaConfigurationConstants.CONFIG_PERSISTENCE_CLASSES, ObserveEntityEnum.getImplementationClassesAsString()); +// +// rootContext = TopiaApplicationContextCache.getContext(rootProperties, ObserveConfigurationHelper.getCreateTopiaContextFunction(config)); + } + +// public ObserveServiceConfig getServiceConfig() { +// return serviceConfig; +// } + +// public ObserveTopiaPersistenceContext newTransaction() { +// ObserveTopiaPersistenceContext persistenceContext = rootContext.newPersistenceContext(); +// return persistenceContext; +// } + + public void close() { +// if (rootContext != null) { +// rootContext.closeContext(); +// } + } + + public boolean isDevMode() { + return true; + } + + public ObserveTopiaServiceFactory getServiceFactory() { + return serviceFactory; + } + + public ObserveServiceApplicationContext getServiceApplicationContext() { + return serviceApplicationContext; + } +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationListener.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationListener.java new file mode 100644 index 0000000..132c765 --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionApplicationListener.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.rest.wm; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +/** + * @author Tony Chemit : chemit@codelutin.com + */ +public class ObserveRestWebMotionApplicationListener implements ServletContextListener { + + private static final Log log = LogFactory.getLog(ObserveRestWebMotionApplicationListener.class); + + protected ObserveRestWebMotionApplicationContext context; + + @Override + public void contextInitialized(ServletContextEvent sce) { + + if (log.isInfoEnabled()) { + log.info("Initializing " + ObserveRestWebMotionApplicationListener.class.getName()); + } + + context = new ObserveRestWebMotionApplicationContext(); + context.init(); + + sce.getServletContext().setAttribute(ObserveRestWebMotionApplicationContext.APPLICATION_CONTEXT_PARAMETER, context); + + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + + if (log.isInfoEnabled()) { + log.info("Destroying " + ObserveRestWebMotionApplicationListener.class.getName()); + } + + context.close(); + } + +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionController.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionController.java new file mode 100644 index 0000000..19c85d8 --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionController.java @@ -0,0 +1,11 @@ +package fr.ird.observe.services.rest.wm; + +import fr.ird.observe.services.ObserveService; +import org.debux.webmotion.server.WebMotionController; + +/** + * @author Tony Chemit : chemit@codelutin.com + */ +public abstract class ObserveRestWebMotionController extends WebMotionController implements ObserveService { + +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java new file mode 100644 index 0000000..e5ed46c --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java @@ -0,0 +1,55 @@ +package fr.ird.observe.services.rest.wm; + +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.topia.ObserveTopiaServiceFactory; +import org.debux.webmotion.server.WebMotionFilter; +import org.debux.webmotion.server.call.HttpContext; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestWebMotionFilter extends WebMotionFilter { + +// protected ObserveTopiaPersistenceContext getTopiaContext(HttpContext context) { +// HttpServletRequest servletRequest = context.getRequest(); +// ObserveTopiaPersistenceContext result = (ObserveTopiaPersistenceContext) +// servletRequest +// .getAttribute(TopiaTransactionFilter.TOPIA_TRANSACTION_REQUEST_ATTRIBUTE); +// +// Preconditions.checkState(result != null, "TopiaContext not available"); +// +// return result; +// } + + public void inject(HttpContext context) { + +// final ObserveTopiaPersistenceContext persistenceContext = getTopiaContext(context); + + ObserveRestWebMotionApplicationContext applicationContext = + ObserveRestWebMotionApplicationContext.getApplicationContext(context); + + HttpServletRequest request = context.getRequest(); + + String authenticationToken = request.getHeader("authenticationToken"); + + //TODO Recuperation de la configuration de la base à partir du token + + //TODO En déduire la ser + +// DefaultServiceContext serviceContext = new DefaultServiceContext(applicationContext.getServiceConfig(), new Supplier<ObserveTopiaPersistenceContext>() { +// @Override +// public ObserveTopiaPersistenceContext get() { +// return persistenceContext; +// } +// }, authenticationToken); +// +// ServiceFactory serviceFactory = serviceContext.getServiceFactory(); +// request.setAttribute("serviceFactory", serviceFactory); + + doProcess(); + } + + +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionJsonHelper.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionJsonHelper.java new file mode 100644 index 0000000..e0858ae --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionJsonHelper.java @@ -0,0 +1,130 @@ +package fr.ird.observe.services.rest.wm; + +/* + * #%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.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; +import java.util.Date; + +/** + * Created on 5/24/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 2.0 + */ +public class ObserveRestWebMotionJsonHelper { + + private final Gson gson; + + public ObserveRestWebMotionJsonHelper(boolean prettyPrint) { + + GsonBuilder gsonBuilder = new GsonBuilder(); + + gsonBuilder.setExclusionStrategies(new ExclusionStrategy() { + + @Override + public boolean shouldSkipField(FieldAttributes f) { + return false; + } + + @Override + public boolean shouldSkipClass(Class<?> clazz) { + return clazz == Class.class; + } + }); + + gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { + + @Override + public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { + + JsonElement result; + + if (src == null) { + + result = JsonNull.INSTANCE; + + } else { + + result = new JsonPrimitive(src.getTime()); + + } + + return result; + + } + + }); + + gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { + + @Override + public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + return new Date(json.getAsLong()); + } + + }); + + if (prettyPrint) { + + gsonBuilder.setPrettyPrinting(); + + } + + this.gson = gsonBuilder.create(); + + } + + public String toJson(Object model) { + + String json = gson.toJson(model); + return json; + + } + + public <O> O fromJson(String json, Class<O> type) { + + O o = gson.fromJson(json, type); + return o; + + } + + public <O> O fromJson(String json, Type type) { + + O o = gson.fromJson(json, type); + return o; + + } + +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionRender.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionRender.java new file mode 100644 index 0000000..0338207 --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionRender.java @@ -0,0 +1,52 @@ +package fr.ird.observe.services.rest.wm; + +import org.debux.webmotion.server.call.Call; +import org.debux.webmotion.server.call.HttpContext; +import org.debux.webmotion.server.mapping.Mapping; +import org.debux.webmotion.server.render.Render; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * To render any entities. + * + * @author Tony chemit - chemit@codelutin.com + */ +public class ObserveRestWebMotionRender<T> extends Render { + + protected T model; + + public ObserveRestWebMotionRender(T model) { + this.model = model; + } + + @Override + public void create(Mapping mapping, Call call) throws IOException, ServletException { + + HttpContext context = call.getContext(); + HttpServletResponse response = context.getResponse(); + response.setContentType("application/json"); + + ObserveRestWebMotionApplicationContext applicationContext = + ObserveRestWebMotionApplicationContext.getApplicationContext(context); + +// if (model instanceof InvalidFormException || model instanceof FavoriteListImportException) { +// +// response.setStatus(HttpServletResponse.SC_BAD_REQUEST); +// +// } + + boolean devMode = applicationContext.isDevMode(); + + ObserveRestWebMotionJsonHelper gson = new ObserveRestWebMotionJsonHelper(devMode); + String json = gson.toJson(model); + + PrintWriter out = context.getOut(); + out.print(json); + + } + +} diff --git a/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/service/ReferentialServiceRest.java b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/service/ReferentialServiceRest.java new file mode 100644 index 0000000..aabf0cb --- /dev/null +++ b/observe-services-rest-wm/src/main/java/fr/ird/observe/services/rest/wm/service/ReferentialServiceRest.java @@ -0,0 +1,66 @@ +package fr.ird.observe.services.rest.wm.service; + +import fr.ird.observe.services.ObserveServiceContext; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.rest.wm.ObserveRestWebMotionController; +import fr.ird.observe.services.service.DataNotFoundException; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.spi.Write; + +import java.util.Collection; + +/** + * Created on 19/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReferentialServiceRest extends ObserveRestWebMotionController implements ReferentialService { + + //TODO A injecter + protected ReferentialService referentialService; + + @Override + public <R extends ReferentialDto> ReferenceSetDto<R> getReferentialReferenceSet(Class<R> type) { + return referentialService.getReferentialReferenceSet(type); + } + + @Override + public <R extends ReferentialDto> FormDto<R> loadToRead(Class<R> type, String id) throws DataNotFoundException { + return referentialService.loadToRead(type, id); + } + + @Override + public <R extends ReferentialDto> FormDto<R> loadToEdit(Class<R> type, String id) throws DataNotFoundException { + return referentialService.loadToEdit(type, id); + } + + @Override + public <R extends ReferentialDto> FormDto<R> preCreate(Class<R> type) { + return referentialService.preCreate(type); + } + + @Override + @Write + public <R extends ReferentialDto> String save(FormDto<R> form) { + return referentialService.save(form); + } + + @Override + @Write + public <R extends ReferentialDto> void delete(Class<R> type, String id) throws DataNotFoundException { + referentialService.delete(type, id); + } + + @Override + @Write + public <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids) throws DataNotFoundException { + referentialService.delete(type, ids); + } + + @Override + public void setServiceContext(ObserveServiceContext serviceContext) { + // Non utilisé ici + } +} diff --git a/observe-services-rest-wm/src/main/resources/mapping b/observe-services-rest-wm/src/main/resources/mapping new file mode 100644 index 0000000..ae059ed --- /dev/null +++ b/observe-services-rest-wm/src/main/resources/mapping @@ -0,0 +1,12 @@ +[config] +package.base=fr.ird.observe.services.rest.wm.service +default.render=fr.ird.observe.services.rest.wm.ObserveRestWebMotionRender +server.controller.scope=request +server.listener.class=fr.ird.observe.services.rest.wm.ObserveRestServerListener + +[filters] +* /* fr.ird.observe.services.rest.wm.ObserveRestWebMotionFilter.inject + +[actions] +GET,POST /referential/{method} action:ReferentialServiceRest.{method} + diff --git a/observe-services-rest-wm/src/main/webapp/WEB-INF/web.xml b/observe-services-rest-wm/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..35a2e2f --- /dev/null +++ b/observe-services-rest-wm/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,25 @@ +<web-app version="3.0" + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" > + + <display-name>Observe REST API by WebMotion</display-name> + + <!--filter> + <filter-name>topiaTransaction</filter-name> + <filter-class> + fr.ird.observe.services.rest.ObserveRestTransactionFilter + </filter-class> + </filter--> + + <!--filter-mapping> + <filter-name>topiaTransaction</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping--> + + <listener> + <listener-class>fr.ird.observe.services.rest.wm.ObserveRestWebMotionApplicationListener</listener-class> + </listener> + +</web-app> 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 deleted file mode 100644 index 59853f0..0000000 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ /dev/null @@ -1,33 +0,0 @@ -package fr.ird.observe.services; - -import com.google.common.base.Preconditions; -import com.google.common.cache.LoadingCache; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport { - - protected final LoadingCache<Class<?>, Class<?>> serviceTypeCache = newAddSuffixClassCache("Rest"); - - @Override - public <S extends ObserveService> boolean accept(ObserveServiceContext serviceContext, Class<S> serviceType) { - return serviceContext != null && serviceContext instanceof ObserveServiceContextRest && serviceType != null; - } - - @Override - public <S extends ObserveService> S newService(ObserveServiceContext serviceContext, Class<S> serviceType) { - - Preconditions.checkNotNull(serviceContext, "serviceContext can't be null."); - Preconditions.checkArgument(serviceContext instanceof ObserveServiceContextRest, "serviceContext must be of type " + ObserveServiceContextRest.class.getName()); - Preconditions.checkNotNull(serviceType, "serviceType can't be null."); - - Class<S> serviceTypeImpl = getServiceClassType(serviceTypeCache, serviceType); - S service = newServiceInstance(serviceTypeImpl, serviceContext); - return service; - - } - -} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRest.java deleted file mode 100644 index 431acf8..0000000 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRest.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveServiceRest implements ObserveService { - - protected ObserveServiceContext serviceContext; - - @Override - public void setServiceContext(ObserveServiceContext serviceContext) { - - this.serviceContext = serviceContext; - } -} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationContext.java b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationContext.java new file mode 100644 index 0000000..b950a16 --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationContext.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.rest.wm; + +/** + * @author Tony Chemit : chemit@codelutin.com + */ +public class ObserveRestApplicationContext { + + public static final String APPLICATION_CONTEXT_PARAMETER = ObserveRestApplicationContext.class.getName(); + + public static final String MISSING_APPLICATION_CONTEXT = + ObserveRestApplicationContext.class.getSimpleName() + " not found. You probably forgot to" + + " register " + ObserveRestApplicationListener.class.getName() + " in your web.xml"; + +// protected ObserveServiceConfig serviceConfig; +// +// protected ObserveTopiaApplicationContext rootContext; + + public void init() { + +// ObserveServiceConfig config = new ObserveServiceConfig(null); +// serviceConfig = config; +// Properties rootProperties = serviceConfig.getFlatOptions(); +// rootProperties.setProperty(TopiaConfigurationConstants.CONFIG_PERSISTENCE_CLASSES, ObserveEntityEnum.getImplementationClassesAsString()); +// +// rootContext = TopiaApplicationContextCache.getContext(rootProperties, ObserveConfigurationHelper.getCreateTopiaContextFunction(config)); + } + +// public ObserveServiceConfig getServiceConfig() { +// return serviceConfig; +// } + +// public ObserveTopiaPersistenceContext newTransaction() { +// ObserveTopiaPersistenceContext persistenceContext = rootContext.newPersistenceContext(); +// return persistenceContext; +// } + + public void close() { +// if (rootContext != null) { +// rootContext.closeContext(); +// } + } +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationListener.java b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationListener.java new file mode 100644 index 0000000..9f0d70b --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestApplicationListener.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.rest.wm; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +/** + * @author Arnaud Thimel : thimel@codelutin.com + */ +public class ObserveRestApplicationListener implements ServletContextListener { + + private static final Log log = LogFactory.getLog(ObserveRestApplicationListener.class); + + protected ObserveRestApplicationContext context; + + @Override + public void contextInitialized(ServletContextEvent sce) { + + if (log.isInfoEnabled()) { + log.info("Initializing " + ObserveRestApplicationListener.class.getName()); + } + + context = new ObserveRestApplicationContext(); + context.init(); + + sce.getServletContext().setAttribute(ObserveRestApplicationContext.APPLICATION_CONTEXT_PARAMETER, context); + + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + + if (log.isInfoEnabled()) { + log.info("Destroying " + ObserveRestApplicationListener.class.getName()); + } + + context.close(); + } + +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java new file mode 100644 index 0000000..2f9c67a --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/rest/wm/ObserveRestWebMotionFilter.java @@ -0,0 +1,62 @@ +package fr.ird.observe.services.rest.wm; + +import com.google.common.base.Preconditions; +import org.debux.webmotion.server.WebMotionFilter; +import org.debux.webmotion.server.call.HttpContext; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; + +/** + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveRestWebMotionFilter extends WebMotionFilter { + +// protected ObserveTopiaPersistenceContext getTopiaContext(HttpContext context) { +// HttpServletRequest servletRequest = context.getRequest(); +// ObserveTopiaPersistenceContext result = (ObserveTopiaPersistenceContext) +// servletRequest +// .getAttribute(TopiaTransactionFilter.TOPIA_TRANSACTION_REQUEST_ATTRIBUTE); +// +// Preconditions.checkState(result != null, "TopiaContext not available"); +// +// return result; +// } + + protected ObserveRestApplicationContext getObserveApplicationContext(HttpContext context) { + + ServletContext servletContext = context.getServletContext(); + ObserveRestApplicationContext result = + (ObserveRestApplicationContext) servletContext + .getAttribute(ObserveRestApplicationContext.APPLICATION_CONTEXT_PARAMETER); + + Preconditions.checkState(result != null, ObserveRestApplicationContext.MISSING_APPLICATION_CONTEXT); + + return result; + + } + + public void inject(HttpContext context) { + +// final ObserveTopiaPersistenceContext persistenceContext = getTopiaContext(context); +// +// final ObserveRestApplicationContext applicationContext = getObserveApplicationContext(context); + + HttpServletRequest request = context.getRequest(); + String authenticationToken = request.getHeader("authenticationToken"); + +// DefaultServiceContext serviceContext = new DefaultServiceContext(applicationContext.getServiceConfig(), new Supplier<ObserveTopiaPersistenceContext>() { +// @Override +// public ObserveTopiaPersistenceContext get() { +// return persistenceContext; +// } +// }, authenticationToken); +// +// ServiceFactory serviceFactory = serviceContext.getServiceFactory(); +// request.setAttribute("serviceFactory", serviceFactory); + + doProcess(); + } + + +} diff --git a/observe-services-rest/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory b/observe-services-rest/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory deleted file mode 100644 index 2f268d7..0000000 --- a/observe-services-rest/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory +++ /dev/null @@ -1 +0,0 @@ -fr.ird.observe.services.ObserveServiceFactoryRest \ No newline at end of file diff --git a/observe-services-rest/src/main/resources/mapping b/observe-services-rest/src/main/resources/mapping new file mode 100644 index 0000000..7be48ba --- /dev/null +++ b/observe-services-rest/src/main/resources/mapping @@ -0,0 +1,28 @@ +[config] +package.base=fr.inra.agrosyst.services.rest.wm +default.render=fr.inra.agrosyst.services.rest.wm.AgrosystJsonRender +server.controller.scope=request +server.listener.class=fr.inra.agrosyst.services.rest.wm.AgrosystServerListener + +[filters] +* /* AgrosystRestWebMotionFilter.inject + +[actions] +GET,POST /context/NavigationContextService/{method} action:NavigationContextServiceRest.{method} +GET,POST /domain/DomainService/{method} action:DomainServiceRest.{method} +GET,POST /generic/GenericEntityService/{method} action:GenericEntityServiceRest.{method} +GET,POST /growingplan/GrowingPlanService/{method} action:GrowingPlanServiceRest.{method} +GET,POST /growingsystem/GrowingSystemService/{method} action:GrowingSystemServiceRest.{method} +GET,POST /managementmode/ManagementModeService/{method} action:ManagementModeServiceRest.{method} +GET,POST /network/NetworkService/{method} action:NetworkServiceRest.{method} +GET,POST /plot/PlotService/{method} action:PlotServiceRest.{method} +GET,POST /practiced/PracticedCropCycleService/{method} action:PracticedCropCycleServiceRest.{method} +GET,POST /practiced/PracticedSystemService/{method} action:PracticedSystemServiceRest.{method} +GET,POST /effective/EffectiveCropCycleService/{method} action:EffectiveCropCycleServiceRest.{method} +GET,POST /referential/ImportService/{method} action:ImportServiceRest.{method} +GET,POST /referential/ExportService/{method} action:ExportServiceRest.{method} +GET,POST /referential/ReferentialService/{method} action:ReferentialServiceRest.{method} +GET,POST /security/AuthenticationService/{method} action:AuthenticationServiceRest.{method} +GET,POST /security/AuthorizationService/{method} action:AuthorizationServiceRest.{method} +GET,POST /security/BusinessAuthorizationService/{method} action:BusinessAuthorizationServiceRest.{method} +GET,POST /users/UserService/{method} action:UserServiceRest.{method} diff --git a/observe-services-rest/src/main/webapp/WEB-INF/web.xml b/observe-services-rest/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..d0c6b38 --- /dev/null +++ b/observe-services-rest/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,36 @@ +<!-- + #%L + Agrosyst :: Services :: REST by WebMotion + $Id: web.xml 2774 2014-01-17 17:42:48Z athimel $ + $HeadURL: https://svn.codelutin.com/agrosyst/trunk/agrosyst-services-rest-webmotion/sr... $ + %% + Copyright (C) 2013 - 2014 INRA + %% + INRA - Tous droits réservés + #L% + --> +<web-app version="3.0" + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" > + + <display-name>Agrosyst REST API by WebMotion</display-name> + + <filter> + <filter-name>topiaTransaction</filter-name> + <filter-class> + fr.inra.agrosyst.services.rest.wm.AgrosystRestTransactionFilter + </filter-class> + </filter> + + <filter-mapping> + <filter-name>topiaTransaction</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <listener> + <listener-class>fr.inra.agrosyst.services.rest.wm.AgrosystRestApplicationListener</listener-class> + </listener> + +</web-app> diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/referential/ReferentialServiceRestTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/referential/ReferentialServiceRestTest.java deleted file mode 100644 index 8dbaade..0000000 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/service/referential/ReferentialServiceRestTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.ird.observe.services.service.referential; - -import fr.ird.observe.services.ObserveServiceContextRest; -import fr.ird.observe.services.ObserveServiceMainFactory; -import fr.ird.observe.services.dto.ReferenceSetDto; -import fr.ird.observe.services.dto.referential.SexDto; -import fr.ird.observe.services.service.ReferentialService; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ReferentialServiceRestTest { - - protected ReferentialService service; - - @Before - public void setUp() throws Exception { - - ObserveServiceContextRest context = new ObserveServiceContextRest(); - service = ObserveServiceMainFactory.get().newService(context, ReferentialService.class); - - } - - @Test - public void testGetReferentialLabelSet() throws Exception { - - ReferenceSetDto referentialLabelSet = service.getReferentialReferenceSet(SexDto.class); - Assert.assertNotNull(referentialLabelSet); - - } - -} \ No newline at end of file diff --git a/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/AbstractObserveService.java b/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/AbstractObserveService.java index 8b088e4..202b74a 100644 --- a/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/AbstractObserveService.java +++ b/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/AbstractObserveService.java @@ -11,6 +11,7 @@ import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.EntityMap; import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.services.topia.ObserveTopiaServiceFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -476,7 +477,7 @@ public abstract class AbstractObserveService implements ObserveService { protected <S extends ObserveService> S newService(Class<S> serviceType) { - S service = ObserveServiceFactoryTopia.newSimpleService(serviceType, serviceContext); + S service = ObserveTopiaServiceFactory.newSimpleService(serviceType, serviceContext); return service; } @@ -484,7 +485,7 @@ public abstract class AbstractObserveService implements ObserveService { protected <S extends ObserveService> S newService(DataSource dataSource, Class<S> serviceType) { ObserveServiceContext serviceContext1 = new ObserveServiceContext(serviceContext.applicationContext, dataSource); - S service = new ObserveServiceFactoryTopia().newService(serviceType, serviceContext1); + S service = new ObserveTopiaServiceFactory().newService(serviceType, serviceContext1); return 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 deleted file mode 100644 index 587b9ae..0000000 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java +++ /dev/null @@ -1,45 +0,0 @@ -package fr.ird.observe.services; - -import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import org.nuiton.topia.TopiaContext; - -/** - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveServiceContextTopia implements ObserveServiceContext { - - protected DataSource dataSource; - - protected TopiaContext transaction; - - protected ReferentialLocale referentialLocale; - - public DataSource getDataSource() { - return dataSource; - } - - public void setDataSource(DataSource dataSource) { - this.dataSource = dataSource; - } - - public TopiaContext getTransaction() { - return transaction; - } - - public void setTransaction(TopiaContext transaction) { - this.transaction = transaction; - } - - @Override - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; - } - -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtoBinders.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtoBinders.java similarity index 94% rename from observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtoBinders.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtoBinders.java index a153321..7e2a529 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtoBinders.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtoBinders.java @@ -1,5 +1,6 @@ -package fr.ird.observe.services.dto; +package fr.ird.observe.services.topia; +import fr.ird.observe.services.dto.IdDto; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtosInitializer.java similarity index 99% rename from observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtosInitializer.java index ef44a37..0101c7e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveDtosInitializer.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.dto; +package fr.ird.observe.services.topia; import com.google.common.base.Function; import com.google.common.collect.ImmutableBiMap; @@ -63,6 +63,8 @@ import fr.ird.observe.entities.referentiel.seine.VesselActivitySeine; import fr.ird.observe.entities.referentiel.seine.WeightCategory; import fr.ird.observe.entities.referentiel.seine.Wind; import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ObserveModelInitializer; import fr.ird.observe.services.dto.referential.CountryDto; import fr.ird.observe.services.dto.referential.FpaZoneDto; import fr.ird.observe.services.dto.referential.GearCaracteristicDto; 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/topia/ObserveServiceTopia.java similarity index 92% rename from observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceTopia.java index b0836f7..e58d350 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/topia/ObserveServiceTopia.java @@ -1,11 +1,12 @@ -package fr.ird.observe.services; +package fr.ird.observe.services.topia; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceContext; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ObserveDtosInitializer; import fr.ird.observe.services.dto.ObserveModelInitializerRunner; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.ReferentialDto; @@ -24,7 +25,7 @@ import java.util.Map; */ public class ObserveServiceTopia implements ObserveService { - protected ObserveServiceContextTopia serviceContext; + protected ObserveTopiaServiceContext serviceContext; protected static ImmutableBiMap<Class<?>, Class<?>> DTO_TO_ENTITY_TYPES; @@ -45,8 +46,8 @@ public class ObserveServiceTopia implements ObserveService { @Override public void setServiceContext(ObserveServiceContext 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; + Preconditions.checkArgument(serviceContext instanceof ObserveTopiaServiceContext, "serviceContext must be of type " + ObserveTopiaServiceContext.class.getName()); + this.serviceContext = (ObserveTopiaServiceContext) serviceContext; } public static <D extends IdDto, E extends TopiaEntity> Class<E> getEntityType(Class<D> dtoType) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaDataSourceConfiguration.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaDataSourceConfiguration.java new file mode 100644 index 0000000..33fe99e --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaDataSourceConfiguration.java @@ -0,0 +1,22 @@ +package fr.ird.observe.services.topia; + +import fr.ird.observe.db.DataSource; +import fr.ird.observe.services.ObserveDataSourceConfiguration; + +/** + * Created on 19/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveTopiaDataSourceConfiguration implements ObserveDataSourceConfiguration { + + private DataSource dataSource; + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + + public DataSource getDataSource() { + return dataSource; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaServiceContext.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaServiceContext.java new file mode 100644 index 0000000..939227a --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaServiceContext.java @@ -0,0 +1,54 @@ +package fr.ird.observe.services.topia; + +import fr.ird.observe.db.DataSource; +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.ObserveServiceContext; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import org.nuiton.topia.TopiaContext; + +import java.util.Date; + +/** + * Created on 16/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveTopiaServiceContext implements ObserveServiceContext { + + protected ObserveServiceApplicationContext applicationContext; + + protected ObserveTopiaDataSourceConfiguration dataSourceConfiguration; + + protected TopiaContext transaction; + + public DataSource getDataSource() { + //TODO A supprimer -> utiliser une TopiaApplicationContext + return dataSourceConfiguration.getDataSource(); + } + + public TopiaContext getTransaction() { + return transaction; + } + + public void setTransaction(TopiaContext transaction) { + this.transaction = transaction; + } + + @Override + public ReferentialLocale getReferentialLocale() { + return applicationContext.getReferentialLocale(); + } + + @Override + public Date now() { + return new Date(); + } + + public void setApplicationContext(ObserveServiceApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + public void setDataSourceConfiguration(ObserveTopiaDataSourceConfiguration dataSourceConfiguration) { + this.dataSourceConfiguration = dataSourceConfiguration; + } +} 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/topia/ObserveTopiaServiceFactory.java similarity index 65% rename from observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/ObserveTopiaServiceFactory.java index eedb4e4..fd5ce2d 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/topia/ObserveTopiaServiceFactory.java @@ -1,9 +1,13 @@ -package fr.ird.observe.services; +package fr.ird.observe.services.topia; import com.google.common.base.Preconditions; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableSet; import fr.ird.observe.db.DataSource; +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.ObserveDataSourceConfiguration; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceFactorySupport; import fr.ird.observe.services.spi.NoDataAccess; import fr.ird.observe.services.spi.Write; import org.apache.commons.logging.Log; @@ -21,33 +25,44 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { +public class ObserveTopiaServiceFactory extends ObserveServiceFactorySupport { /** Logger. */ - private static final Log log = LogFactory.getLog(ObserveServiceFactoryTopia.class); + private static final Log log = LogFactory.getLog(ObserveTopiaServiceFactory.class); - protected final LoadingCache<Class<?>, Class<?>> serviceTypeCache = newAddSuffixClassCache("Topia"); + protected final LoadingCache<Class<?>, Class<?>> serviceTypeCache = newAddSuffixClassCache("fr.ird.observe.services.topia.service.", "Topia"); @Override - public <S extends ObserveService> boolean accept(ObserveServiceContext serviceContext, Class<S> serviceType) { - return serviceContext != null && serviceContext instanceof ObserveServiceContextTopia && serviceType != null; + public <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + return dataSourceConfiguration instanceof ObserveTopiaDataSourceConfiguration; + } @Override - public <S extends ObserveService> S newService(ObserveServiceContext serviceContext, Class<S> serviceType) { + public <S extends ObserveService> S newService(ObserveServiceApplicationContext applicationContext, ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - Preconditions.checkNotNull(serviceContext, "serviceContext can't be null."); - Preconditions.checkArgument(serviceContext instanceof ObserveServiceContextTopia, "serviceContext must be of type " + ObserveServiceContextTopia.class.getName()); + Preconditions.checkNotNull(applicationContext, "applicationContext can't be null."); + Preconditions.checkNotNull(dataSourceConfiguration, "dataSourceConfiguration can't be null."); + Preconditions.checkArgument(dataSourceConfiguration instanceof ObserveTopiaDataSourceConfiguration, "dataSourceConfiguration must be of type " + ObserveTopiaDataSourceConfiguration.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()); + + ObserveTopiaServiceContext serviceContext = new ObserveTopiaServiceContext(); + serviceContext.setApplicationContext(applicationContext); + serviceContext.setDataSourceConfiguration((ObserveTopiaDataSourceConfiguration) dataSourceConfiguration); + S service = newServiceInstance(serviceTypeImpl, serviceContext); - service = newServiceTransactionalProxy(serviceType, service, (ObserveServiceContextTopia) serviceContext); + service = newServiceTransactionalProxy(serviceType, service, serviceContext); return service; } - protected <S extends ObserveService> S newServiceTransactionalProxy(Class<S> serviceType, S service, ObserveServiceContextTopia serviceContext) { + protected <S extends ObserveService> S newServiceTransactionalProxy(Class<S> serviceType, S service, ObserveTopiaServiceContext serviceContext) { ObserveServiceInvocationHandler invocationHandler = new ObserveServiceInvocationHandler(serviceContext, service); Object proxyService = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{serviceType}, invocationHandler); @@ -57,13 +72,13 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport { protected static class ObserveServiceInvocationHandler implements InvocationHandler { - private final ObserveServiceContextTopia serviceContext; + private final ObserveTopiaServiceContext serviceContext; private final ObserveService target; private final Set<String> methodNamesToByPass; - protected ObserveServiceInvocationHandler(ObserveServiceContextTopia serviceContext, ObserveService target) { + protected ObserveServiceInvocationHandler(ObserveTopiaServiceContext serviceContext, ObserveService target) { this.serviceContext = serviceContext; this.target = target; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilder.java similarity index 97% rename from observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilder.java index f440a1a..8bcc87f 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilder.java @@ -1,12 +1,12 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import fr.ird.observe.entities.Set; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.topia.ObserveDtoBinders; import fr.ird.observe.services.dto.ReferenceDto; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.beans.Binder; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilder.java similarity index 97% rename from observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilder.java index cc86f2a..942d1f8 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilder.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; @@ -6,9 +6,9 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.Set; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.topia.ObserveDtoBinders; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferenceDtoBuilder.java similarity index 94% rename from observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferenceDtoBuilder.java index a9e9cc2..9273b7e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferenceDtoBuilder.java @@ -1,9 +1,9 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.topia.ObserveDtoBinders; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceDtos; import fr.ird.observe.services.dto.referential.ReferentialDto; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferentialReferenceDtoBuilder.java similarity index 95% rename from observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferentialReferenceDtoBuilder.java index 4b9d625..22f5003 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/builder/EntityToReferentialReferenceDtoBuilder.java @@ -1,8 +1,8 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.topia.ObserveDtoBinders; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/ReferentialServiceTopia.java similarity index 94% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/ReferentialServiceTopia.java index 402947f..b4ff6ac 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/ReferentialServiceTopia.java @@ -1,9 +1,9 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services.topia.service; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.builder.EntityToDtoBuilder; -import fr.ird.observe.services.builder.EntityToReferentialReferenceDtoBuilder; +import fr.ird.observe.services.topia.ObserveServiceTopia; +import fr.ird.observe.services.topia.builder.EntityToDtoBuilder; +import fr.ird.observe.services.topia.builder.EntityToReferentialReferenceDtoBuilder; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.FormDtos; import fr.ird.observe.services.dto.IdDto; @@ -11,6 +11,7 @@ import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.ReferenceSetDtos; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import fr.ird.observe.services.service.ReferentialService; import org.nuiton.topia.persistence.TopiaEntity; import java.util.Collection; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineObservedSystemServiceTopia.java similarity index 78% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemServiceTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineObservedSystemServiceTopia.java index 153c06a..2ba9c30 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineObservedSystemServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineObservedSystemServiceTopia.java @@ -1,8 +1,9 @@ -package fr.ird.observe.services.service.seine; +package fr.ird.observe.services.topia.service.seine; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.ActivitySeineObservedSystemDto; +import fr.ird.observe.services.service.seine.ActivitySeineObservedSystemService; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -11,9 +12,6 @@ public class ActivitySeineObservedSystemServiceTopia extends ObserveServiceTopia @Override public FormDto<ActivitySeineObservedSystemDto> loadToRead(String activitySeineId) { - - - return null; } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineServiceTopia.java similarity index 84% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineServiceTopia.java index 048309a..d4c695f 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/ActivitySeineServiceTopia.java @@ -1,9 +1,10 @@ -package fr.ird.observe.services.service.seine; +package fr.ird.observe.services.topia.service.seine; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.service.seine.ActivitySeineService; import java.util.List; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/FloatingObjectServiceTopia.java similarity index 82% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectServiceTopia.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/FloatingObjectServiceTopia.java index 8e3702e..72e20e1 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/FloatingObjectServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/topia/service/seine/FloatingObjectServiceTopia.java @@ -1,16 +1,17 @@ -package fr.ird.observe.services.service.seine; +package fr.ird.observe.services.topia.service.seine; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; +import fr.ird.observe.services.service.seine.FloatingObjectService; import java.util.List; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class FloatingObjectServiceTopia extends ObserveServiceTopia implements FloatingObjectService{ +public class FloatingObjectServiceTopia extends ObserveServiceTopia implements FloatingObjectService { @Override diff --git a/observe-services-topia/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory b/observe-services-topia/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory index ee2101e..016fcd0 100644 --- a/observe-services-topia/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory +++ b/observe-services-topia/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactory @@ -1 +1 @@ -fr.ird.observe.services.ObserveServiceFactoryTopia \ No newline at end of file +fr.ird.observe.services.topia.ObserveTopiaServiceFactory \ No newline at end of file diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/ApplicationContextResource.java similarity index 76% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/ApplicationContextResource.java index 4ebd5e1..788f597 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/ApplicationContextResource.java @@ -1,9 +1,9 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services.service.topia; import fr.ird.observe.IObserveConfig; -import fr.ird.observe.ObserveApplicationContext; -import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.ObserveServiceApplicationContext; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.test.TestHelper; import fr.ird.observe.util.Scripts; import org.apache.commons.logging.Log; @@ -25,16 +25,19 @@ public class ApplicationContextResource implements TestRule { protected final Version databaseVersion; + protected final ObserveServiceApplicationContext serviceApplicationContext; + public ApplicationContextResource(Version databaseVersion) { this.databaseVersion = databaseVersion; + this.serviceApplicationContext= new ObserveServiceApplicationContext(); } public String getScriptPath(String classifier) { return Scripts.getBackupScript(databaseVersion, classifier); } - public ObserveApplicationContext getApplicationContext() { - return ObserveServiceHelper.get(); + public ObserveServiceApplicationContext getServiceApplicationContext() { + return serviceApplicationContext; } @Override @@ -65,6 +68,8 @@ public class ApplicationContextResource implements TestRule { ObserveServiceTopia.init(); + serviceApplicationContext.setReferentialLocale(ReferentialLocale.FR); + } protected void after(Description description) { diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/DataSourceResource.java similarity index 98% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/DataSourceResource.java index e699a79..e973843 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/DataSourceResource.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services.service.topia; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DBTestHelper; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/service/ReferentialServiceTopiaTest.java similarity index 88% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/service/ReferentialServiceTopiaTest.java index d0909ec..289e0b9 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/topia/service/ReferentialServiceTopiaTest.java @@ -1,18 +1,23 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services.service.topia.service; import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.migration.H2DataSourceMigration; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.ObserveServiceContextTopia; +import fr.ird.observe.services.ObserveServiceApplicationContext; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.service.DataNotFoundException; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.topia.ApplicationContextResource; +import fr.ird.observe.services.service.topia.DataSourceResource; +import fr.ird.observe.services.topia.ObserveTopiaDataSourceConfiguration; +import fr.ird.observe.services.topia.service.ReferentialServiceTopia; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -49,12 +54,15 @@ public class ReferentialServiceTopiaTest { DataSource localDataSource = dataSourceResource.getDataSource(); - ObserveServiceContextTopia context = new ObserveServiceContextTopia(); - context.setDataSource(localDataSource); - context.setReferentialLocale(ReferentialLocale.FR); ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); - service = serviceFactory.newService(context, ReferentialService.class); + + ObserveServiceApplicationContext serviceApplicationContext = applicationContextResource.getServiceApplicationContext(); + + ObserveTopiaDataSourceConfiguration dataSourceConfiguration = new ObserveTopiaDataSourceConfiguration(); + dataSourceConfiguration.setDataSource(localDataSource); + + service = serviceFactory.newService(serviceApplicationContext, dataSourceConfiguration, ReferentialService.class); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilderTest.java similarity index 98% rename from observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilderTest.java index 72ca1a0..b12d4da 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/DtoToEntityBuilderTest.java @@ -1,10 +1,9 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.referentiel.Organism; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.constants.ReferentialLocale; @@ -14,6 +13,7 @@ import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDtos; +import fr.ird.observe.services.topia.ObserveServiceTopia; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilderTest.java similarity index 98% rename from observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilderTest.java index 1005eef..1a58e47 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/topia/builder/EntityToDtoBuilderTest.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.builder; +package fr.ird.observe.services.topia.builder; import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.constants.GearType; @@ -7,7 +7,6 @@ import fr.ird.observe.entities.referentiel.Organism; import fr.ird.observe.entities.referentiel.OrganismImpl; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.referentiel.ProgramImpl; -import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceValueNotFoundException; @@ -17,6 +16,7 @@ import fr.ird.observe.services.dto.referential.OrganismDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import fr.ird.observe.services.topia.ObserveServiceTopia; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; diff --git a/pom.xml b/pom.xml index 4d18ca8..46f56db 100644 --- a/pom.xml +++ b/pom.xml @@ -86,7 +86,8 @@ <module>observe-business</module> <module>observe-validation</module> <module>observe-services-topia</module> - <!--module>observe-services-rest</module--> + <module>observe-services-rest-wm</module> + <module>observe-services-rest-client</module> <module>observe-swing</module> </modules> <!--scm> @@ -125,6 +126,7 @@ <swingXVersion>1.6.4</swingXVersion> <geoToolsVersion>13.2</geoToolsVersion> + <webmotionVersion>2.5</webmotionVersion> <!-- license header configuration --> <license.licenseName>gpl_v3</license.licenseName> @@ -137,12 +139,7 @@ <!-- Site configuration --> <locales>fr</locales> - <javaVersion>1.7</javaVersion> - <!--<maven.compiler.source>${javaVersion}</maven.compiler.source>--> - <!--<maven.compiler.target>${javaVersion}</maven.compiler.target>--> - <signatureArtifactId>java17</signatureArtifactId> - <signatureVersion>1.0</signatureVersion> - + <paranamerVersion>2.7</paranamerVersion> </properties> <repositories> @@ -238,7 +235,6 @@ <scope>test</scope> </dependency> - <!-- Nuiton --> <dependency> <groupId>org.nuiton</groupId> @@ -537,6 +533,41 @@ <version>1.13</version> </dependency> + <!-- WebMotion --> + <dependency> + <groupId>org.debux.webmotion</groupId> + <artifactId>webmotion</artifactId> + <version>${webmotionVersion}</version> + <exclusions> + <exclusion> + <groupId>javassist</groupId> + <artifactId>javassist</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.debux.webmotion</groupId> + <artifactId>webmotion-unittest</artifactId> + <version>${webmotionVersion}</version> + <scope>test</scope> + </dependency> + + <!-- Paranamer --> + <dependency> + <groupId>com.thoughtworks.paranamer</groupId> + <artifactId>paranamer</artifactId> + <version>${paranamerVersion}</version> + </dependency> + + <!-- ne pas mettre à jour cette version est pour tomcat 7--> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.0.1</version> + <scope>provided</scope> + </dependency> + <!-- logging --> <dependency> <groupId>org.slf4j</groupId> @@ -633,6 +664,12 @@ </configuration> </plugin> + <plugin> + <groupId>com.thoughtworks.paranamer</groupId> + <artifactId>paranamer-maven-plugin</artifactId> + <version>${paranamerVersion}</version> + </plugin> + </plugins> </pluginManagement> <extensions> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.