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