Author: sletellier Date: 2010-11-23 15:26:27 +0100 (Tue, 23 Nov 2010) New Revision: 504 Url: http://nuiton.org/repositories/revision/wikitty/504 Log: - Use PicoContainer in XMPP test - Debug PicoContainer for create instance of transporteur Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java 2010-11-23 11:32:41 UTC (rev 503) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceFactory.java 2010-11-23 14:26:27 UTC (rev 504) @@ -77,8 +77,8 @@ static public WikittyService buildWikittyService( ApplicationConfig config, String prefix) { + WikittyService result = null; - List<Class> layers = getComponents(config, prefix, WikittyService.class); MutablePicoContainer pico = new TransientPicoContainer(); @@ -100,15 +100,33 @@ static public WikittyServiceNotifier.RemoteNotifierTransporter buildTransporter( ApplicationConfig config, WikittyServiceNotifier notifier) { + + if (notifier == null) { + throw new IllegalArgumentException("Notifier must be non null"); + } + Class<WikittyServiceNotifier.RemoteNotifierTransporter> transporterClass = - (Class<WikittyServiceNotifier.RemoteNotifierTransporter>)config.getOptionAsClass( + (Class<WikittyServiceNotifier.RemoteNotifierTransporter>)config.getOptionAsClass( WikittyConfig.WikittyOption.WIKITTY_EVENT_TRANSPORTER.getKey()); + if (transporterClass == null) { + String transporteurClassName = config.getOption( + WikittyConfig.WikittyOption.WIKITTY_EVENT_TRANSPORTER.getKey()); + + throw new WikittyException("Transporteur class '" + transporteurClassName + "' not found"); + } + + if (log.isDebugEnabled()) { + log.debug("Creating transporteur : " + transporterClass.getName()); + } + MutablePicoContainer pico = new TransientPicoContainer(); pico.addComponent(config); pico.addComponent(notifier); - WikittyServiceNotifier.RemoteNotifierTransporter result = - pico.getComponent(transporterClass); + pico.addComponent(WikittyServiceNotifier.RemoteNotifierTransporter.class, transporterClass); + WikittyServiceNotifier.RemoteNotifierTransporter result = + pico.getComponent(WikittyServiceNotifier.RemoteNotifierTransporter.class); + return result; } @@ -122,9 +140,10 @@ * @param clazz * @return */ - static protected MutablePicoContainer getChildContainer( + static protected MutablePicoContainer getChildContainer( ApplicationConfig config, MutablePicoContainer parent, String prefix, Class clazz) { + List<Class> comps = getComponents(config, prefix, clazz); MutablePicoContainer result = makeChildContainer(parent, comps); return result; @@ -143,9 +162,10 @@ * @param clazz * @return la liste de classe trouvee ou null si la cle n'existe pas */ - static protected List<Class> getComponents(ApplicationConfig config, String prefix, Class clazz) { + static protected List<Class> getComponents(ApplicationConfig config, + String prefix, Class clazz) { + List<Class> result = null; - String key = prefix + clazz.getSimpleName() + ".components"; String componentsString = config.getOption(key); @@ -165,6 +185,7 @@ */ static protected MutablePicoContainer makeChildContainer( MutablePicoContainer parent, List<Class> comps) { + MutablePicoContainer result = parent.makeChildContainer(); if (comps != null) { for (Class clazz : comps) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-23 11:32:41 UTC (rev 503) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-23 14:26:27 UTC (rev 504) @@ -595,8 +595,11 @@ if (config != null) { this.ws = ws; transporter = WikittyServiceFactory.buildTransporter(config, ws); - // add this as listener when transporter is created without error - ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference + + if (transporter != null) { + // add this as listener when transporter is created without error + ws.addWikittyServiceListener(this, WikittyService.ServiceListenerType.ALL); // weak reference + } } if (log.isInfoEnabled()) { if (transporter == null) { Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-11-23 11:32:41 UTC (rev 503) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2010-11-23 14:26:27 UTC (rev 504) @@ -35,8 +35,10 @@ import org.jivesoftware.smackx.muc.MultiUserChat; import org.junit.Test; import org.nuiton.wikitty.WikittyConfig; +import org.nuiton.wikitty.WikittyServiceFactory; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.services.WikittyEvent; +import org.nuiton.wikitty.services.WikittyServiceNotifier; import org.nuiton.wikitty.services.XMPPNotifierTransporter; /** @@ -57,16 +59,17 @@ String server = "im.codelutin.com"; String room = "test@conference.im.codelutin.com"; WikittyConfig config = new WikittyConfig(); + config.setOption(WikittyConfig.WikittyOption.WIKITTY_EVENT_TRANSPORTER.getKey(), XMPPNotifierTransporter.class.getName()); config.setOption(WikittyConfig.WikittyOption.WIKITTY_EVENT_TRANSPORTER_XMPP_SERVER.getKey(), server); config.setOption(WikittyConfig.WikittyOption.WIKITTY_EVENT_TRANSPORTER_XMPP_ROOM.getKey(), room); // Envoi d'un message avec le transporter normal - - XMPPNotifierTransporter xmpp = new XMPPNotifierTransporter(config, null); + WikittyServiceNotifier wsn = new WikittyServiceNotifier(config, null); + WikittyServiceNotifier.RemoteNotifierTransporter transporteur = WikittyServiceFactory.buildTransporter(config, wsn); WikittyEvent event = new WikittyEvent("test"); event.addRemoveDate("theId", new Date()); - xmpp.sendMessage(event); + transporteur.sendMessage(event); // essaie de recuperation du message