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();
+    }
 }


Reply via email to