r474 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail
Author: athimel Date: 2014-08-05 23:17:26 +0200 (Tue, 05 Aug 2014) New Revision: 474 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/474 Log: Fix ServiceContext creation Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceFactory.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-05 21:17:26 UTC (rev 474) @@ -69,15 +69,26 @@ protected FaxToMailServiceFactory serviceFactory; - public FaxToMailServiceContext(FaxToMailTopiaApplicationContext topiaApplicationContext) { + public static FaxToMailServiceContext newServiceContext(FaxToMailTopiaApplicationContext applicationContext) { + return new FaxToMailServiceContext(applicationContext, new FaxToMailProxiedServiceFactory()); + } + + public static FaxToMailServiceContext newDirectServiceContext(FaxToMailTopiaApplicationContext applicationContext) { + return new FaxToMailServiceContext(applicationContext, new FaxToMailDefaultServiceFactory()); + } + + private FaxToMailServiceContext(FaxToMailTopiaApplicationContext topiaApplicationContext, FaxToMailServiceFactory serviceFactory) { Preconditions.checkNotNull(topiaApplicationContext, "Cannot create an ServiceContext without an ApplicationContext"); + Preconditions.checkNotNull(serviceFactory, "Cannot create an ServiceContext without a ServiceFactory"); this.topiaApplicationContext = topiaApplicationContext; - this.serviceFactory = new FaxToMailProxiedServiceFactory(); + this.serviceFactory = serviceFactory; + this.serviceFactory.setServiceContext(this); } private FaxToMailServiceContext(FaxToMailServiceContext delegateServiceContext, FaxToMailServiceFactory serviceFactory) { this.delegateServiceContext = delegateServiceContext; this.serviceFactory = serviceFactory; + this.serviceFactory.setServiceContext(this); } public FaxToMailConfiguration getApplicationConfig() { @@ -115,10 +126,11 @@ return serviceFactory.newService(serviceInterfaceClass); } - public class FaxToMailDefaultServiceFactory implements FaxToMailServiceFactory { + public static class FaxToMailDefaultServiceFactory implements FaxToMailServiceFactory { protected FaxToMailServiceContext serviceContext; + @Override public void setServiceContext(FaxToMailServiceContext serviceContext) { this.serviceContext = serviceContext; } @@ -153,25 +165,32 @@ } } - public class FaxToMailProxiedServiceFactory implements FaxToMailServiceFactory { + public static class FaxToMailProxiedServiceFactory implements FaxToMailServiceFactory { protected FaxToMailDefaultServiceFactory defaultServiceFactory; protected FaxToMailServiceContext subServiceContext; + protected FaxToMailServiceContext serviceContext; + @Override + public void setServiceContext(FaxToMailServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + @Override public <E extends FaxToMailService> E newService(Class<E> serviceInterfaceClass) { if (defaultServiceFactory == null) { defaultServiceFactory = new FaxToMailDefaultServiceFactory(); - subServiceContext = new FaxToMailServiceContext(FaxToMailServiceContext.this, defaultServiceFactory); + subServiceContext = new FaxToMailServiceContext(serviceContext, defaultServiceFactory); defaultServiceFactory.setServiceContext(subServiceContext); } E realService = defaultServiceFactory.newService(serviceInterfaceClass); E service = (E) Proxy.newProxyInstance(serviceInterfaceClass.getClassLoader(), new Class[]{serviceInterfaceClass}, - new FaxToMailServiceInvocationHandler(realService, FaxToMailServiceContext.this)); + new FaxToMailServiceInvocationHandler(realService, serviceContext)); return service; Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceFactory.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceFactory.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceFactory.java 2014-08-05 21:17:26 UTC (rev 474) @@ -5,6 +5,8 @@ */ public interface FaxToMailServiceFactory { + void setServiceContext(FaxToMailServiceContext serviceContext); + public <E extends FaxToMailService> E newService(Class<E> serviceInterfaceClass); } Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-08-05 21:17:26 UTC (rev 474) @@ -136,7 +136,7 @@ FaxToMailTopiaApplicationContext applicationContext = newApplicationContext(DATABASE_REF); - FaxToMailServiceContext serviceContext = new FaxToMailServiceContext(applicationContext); + FaxToMailServiceContext serviceContext = FaxToMailServiceContext.newDirectServiceContext(applicationContext); serviceContext.setApplicationConfig(getApplicationConfig()); @@ -256,7 +256,7 @@ if (serviceContext == null) { - FaxToMailServiceContext serviceContext = new FaxToMailServiceContext(getApplicationContext()); + FaxToMailServiceContext serviceContext = FaxToMailServiceContext.newDirectServiceContext(getApplicationContext()); serviceContext.setApplicationConfig(getApplicationConfig()); Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java 2014-08-05 21:17:26 UTC (rev 474) @@ -64,11 +64,9 @@ public void testAddNewClientInTmpTable() { ClientService clientService = newService(ClientService.class); - NewClientTopiaDao newClientDao = getServiceContext().getPersistenceContext().getNewClientDao(); - ClientTopiaDao clientDao = getServiceContext().getPersistenceContext().getClientDao(); // asserts - Assert.assertNull(clientDao.forEmailAddressEquals("gerard.menvussa@lutin.com").findAnyOrNull()); + Assert.assertNull(getServiceContext().getPersistenceContext().getClientDao().forEmailAddressEquals("gerard.menvussa@lutin.com").findAnyOrNull()); // add new clients NewClient newClient = new NewClientImpl(); @@ -76,25 +74,25 @@ newClient.setBrand("FX"); newClient.setEmailAddress("gerard.menvussa@lutin.com"); newClient.setType(NewClientType.UPDATE); - newClient = newClientDao.create(newClient); + newClient = getServiceContext().getPersistenceContext().getNewClientDao().create(newClient); // precedure de mise à jour clientService.updateNewClients(); // asserts - Assert.assertNotNull(clientDao.forEmailAddressEquals("gerard.menvussa@lutin.com").findAnyOrNull()); + Assert.assertNotNull(getServiceContext().getPersistenceContext().getClientDao().forEmailAddressEquals("gerard.menvussa@lutin.com").findAnyOrNull()); // add new clients NewClient deleteClient = new NewClientImpl(); deleteClient.setCode("99154"); deleteClient.setBrand("FX"); deleteClient.setType(NewClientType.DELETION); - deleteClient = newClientDao.create(deleteClient); + deleteClient = getServiceContext().getPersistenceContext().getNewClientDao().create(deleteClient); // precedure de mise à jour clientService.updateNewClients(); // asserts - Assert.assertNull(clientDao.forCodeEquals("99154").findAnyOrNull()); + Assert.assertNull(getServiceContext().getPersistenceContext().getClientDao().forCodeEquals("99154").findAnyOrNull()); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-05 21:17:26 UTC (rev 474) @@ -472,7 +472,7 @@ //------------------------------------------------------------------------// public FaxToMailServiceContext newServiceContext() { - FaxToMailServiceContext serviceContext = new FaxToMailServiceContext(topiaApplicationContext); + FaxToMailServiceContext serviceContext = FaxToMailServiceContext.newServiceContext(topiaApplicationContext); serviceContext.setApplicationConfig(config); return serviceContext; } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-08-05 14:46:26 UTC (rev 473) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-08-05 21:17:26 UTC (rev 474) @@ -71,8 +71,9 @@ public FaxToMailServiceContext newServiceContext(FaxToMailTopiaPersistenceContext persistenceContext) { + // FIXME AThimel 05/08/14 Check if newDirectServiceContext or newServiceContext must be used FaxToMailServiceContext newServiceContext = - new FaxToMailServiceContext(topiaApplicationContext); + FaxToMailServiceContext.newDirectServiceContext(topiaApplicationContext); FaxToMailConfiguration applicationConfig = getApplicationConfig();
participants (1)
-
athimel@users.forge.codelutin.com