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