You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by dr...@apache.org on 2010/05/28 22:11:34 UTC

svn commit: r949276 - in /tapestry/tapestry5/trunk/tapestry-ioc/src: main/java/org/apache/tapestry5/ioc/RegistryBuilder.java site/apt/run.apt test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java

Author: drobiazko
Date: Fri May 28 20:11:34 2010
New Revision: 949276

URL: http://svn.apache.org/viewvc?rev=949276&view=rev
Log:
TAP5-1135: Provide a convinient method to build and start the registry

Modified:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/run.apt
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java?rev=949276&r1=949275&r2=949276&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java Fri May 28 20:11:34 2010
@@ -181,4 +181,49 @@ public final class RegistryBuilder
     {
         return logger;
     }
+    
+    /**
+     * Constructs the registry, adds a {@link ModuleDef} and a number of modules (as module classes) to the registry and 
+     * performs registry startup. The returned registry is ready to use. The caller is must not invoke {@link
+     * org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
+     * 
+     * @param moduleDef {@link ModuleDef} to add 
+     * @param moduleClasses modules (as module classes) to add
+     * 
+     * @return {@link Registry}
+     * 
+     * @since 5.2.0
+     */
+    public static Registry buildAndStartupRegistry(ModuleDef moduleDef, Class... moduleClasses)
+    {
+        RegistryBuilder builder = new RegistryBuilder();
+        
+        if(moduleDef != null)
+            builder.add(moduleDef);
+        
+        builder.add(moduleClasses);
+        
+        Registry registry = builder.build();
+        
+        registry.performRegistryStartup();
+        
+        return registry;
+    }
+    
+    /**
+     * Constructs the registry, adds a number of modules (as module classes) to the registry and 
+     * performs registry startup. The returned registry is ready to use. The caller is must not invoke {@link
+     * org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
+     * 
+     * @param moduleDef {@link ModuleDef} to add 
+     * @param moduleClasses modules (as module classes) to add
+     * 
+     * @return {@link Registry}
+     * 
+     * @since 5.2.0
+     */
+    public static Registry buildAndStartupRegistry(Class... moduleClasses)
+    {   
+        return buildAndStartupRegistry(null, moduleClasses);
+    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/run.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/run.apt?rev=949276&r1=949275&r2=949276&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/run.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/run.apt Fri May 28 20:11:34 2010
@@ -41,6 +41,16 @@ registry.performRegistryStartup();
   {{{../apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html}EagerLoad}} annotation are, in fact,
   loaded.
   
+  As of version 5.2 the class
+  {{{../apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html}RegistryBuilder}}
+  has convenience methods to build and start a Registry. The static method 
+  {{{../apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html#buildAndStartupRegistry(java.lang.Class...)}RegistryBuilder.buildAndStartupRegistry(Class...)}} 
+  constructs a registry, adds a number of modules to the registry and performs registry startup. The returned registry is ready to use.
+  
++---+
+Registry registry = RegistryBuilder.buildAndStartupRegistry(AppModule.class, UtilModule.class);
++---+
+  
 Building the Default Registry
 
   The default registry is available by invoking the static method

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java?rev=949276&r1=949275&r2=949276&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java Fri May 28 20:11:34 2010
@@ -14,12 +14,19 @@
 
 package org.apache.tapestry5.ioc;
 
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
 
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.tapestry5.ioc.def.ModuleDef;
+import org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl;
+import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
+import org.apache.tapestry5.ioc.services.ClassFactory;
+import org.apache.tapestry5.ioc.test.IOCTestCase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.Test;
+
 public class RegistryBuilderTest extends IOCTestCase
 {
     @Test
@@ -66,4 +73,41 @@ public class RegistryBuilderTest extends
 
         registry.shutdown();
     }
+    
+    @Test
+    public void build_and_startup_registry_from_modules()
+    {
+        Registry r = RegistryBuilder.buildAndStartupRegistry(MasterModule.class);
+        
+        NameListHolder service = r.getService("UnorderedNames", NameListHolder.class);
+
+        List<String> names = service.getNames();
+
+        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
+
+        r.shutdown();
+    }
+    
+    @Test
+    public void build_and_startup_registry_from_moduledef_and_modules()
+    {
+        Logger logger = LoggerFactory.getLogger(getClass());
+        ClassFactory classFactory = new ClassFactoryImpl();
+
+        ModuleDef module = new DefaultModuleDefImpl(ServiceBuilderModule.class, logger, classFactory);
+        
+        Registry r = RegistryBuilder.buildAndStartupRegistry(module, MasterModule.class);
+        
+        NameListHolder nameListHolder = r.getService("UnorderedNames", NameListHolder.class);
+
+        List<String> names = nameListHolder.getNames();
+
+        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
+        
+        Greeter gretter = r.getService("Greeter", Greeter.class);
+        
+        assertEquals(gretter.getGreeting(), "Greetings from service Greeter.");
+
+        r.shutdown();
+    }
 }