You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/05/16 20:50:31 UTC

[19/44] Convert TestNG to Spock

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf890643/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
deleted file mode 100644
index c07a59f..0000000
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
+++ /dev/null
@@ -1,1629 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.internal.*;
-import org.apache.tapestry5.ioc.internal.services.StartupModule2;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.NonmatchingMappedConfigurationOverrideModule;
-import org.easymock.EasyMock;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.sql.PreparedStatement;
-import java.util.*;
-
-/**
- * A few tests that are easiest (or even just possible) by building a Registry and trying out a few
- * things.
- */
-public class IntegrationTest extends IOCInternalTestCase
-{
-    public static int countingGreeterInstantiationCount;
-
-    private Registry buildRegistry()
-    {
-        return buildRegistry(FredModule.class, BarneyModule.class);
-    }
-
-    @Test
-    public void duplicate_service_names_are_failure()
-    {
-        try
-        {
-            buildRegistry(FredModule.class, DuplicateFredModule.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertTrue(ex.getMessage().startsWith("Service id 'Fred' has already been defined by"));
-
-            // Can't check the entire message, because we can't guarantee what order the modules
-            // will be processed in.
-        }
-    }
-
-    @Test
-    public void static_builder_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-        StaticModule.setFredRan(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        Runnable fred = r.getService("Fred", Runnable.class);
-
-        fred.run();
-
-        assertFalse(StaticModule.isInstantiated());
-        assertTrue(StaticModule.getFredRan());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void static_decorator_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-        StaticModule.setDecoratorRan(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        Runnable fred = r.getService("Barney", Runnable.class);
-
-        fred.run();
-
-        assertFalse(StaticModule.isInstantiated());
-        assertTrue(StaticModule.getDecoratorRan());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void static_contributor_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        NameListHolder holder = r.getService("Names", NameListHolder.class);
-
-        List<String> names = holder.getNames();
-
-        assertEquals(names, Arrays.asList("Fred"));
-
-        assertFalse(StaticModule.isInstantiated());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void shutdown_deactivates_proxies()
-    {
-        Registry r = buildRegistry();
-
-        Runnable service = r.getService("Fred", Runnable.class);
-
-        service.run();
-
-        r.shutdown();
-
-        try
-        {
-            service.run();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Proxy for service Fred is no longer active because the IOC Registry has been shut down.");
-        }
-
-        // Show that toString() still works, even for a shutdown proxy.
-
-        assertEquals(service.toString(), "<Proxy for Fred(java.lang.Runnable)>");
-    }
-
-    /**
-     * Along the way, we also test a few other things, such as decorator matching and automatic
-     * dependency resolution.
-     */
-    @Test
-    public void public_service_decorator_order()
-    {
-        Registry r = buildRegistry();
-
-        Runnable service = r.getService("Fred", Runnable.class);
-
-        // Force creation
-
-        service.run();
-
-        List<String> names = r.getService(DecoratorList.class).getNames();
-
-        // Note that the order of invocation appears backwards, since we build back-to-front
-
-        assertEquals(names, Arrays.asList("gamma", "beta", "alpha"));
-    }
-
-    @Test
-    public void public_service_unordered_configuration()
-    {
-        Registry r = buildRegistry();
-
-        NameListHolder service = r.getService("UnorderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
-    }
-
-    /**
-     * We don't have to do as many public/private etc. tests for the other types of configuration,
-     * because the code
-     * paths are so similar.
-     */
-
-    @Test
-    public void service_ordered_configuration()
-    {
-        Registry r = buildRegistry();
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("BARNEY", "FRED"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void service_mapped_configuration()
-    {
-        Registry r = buildRegistry();
-
-        Sizer sizer = r.getService("Sizer", Sizer.class);
-
-        assertEquals(sizer.size(null), 0);
-
-        // Have to be exact on type here.
-
-        List list = new ArrayList();
-        list.add(1);
-        list.add(2);
-        list.add(3);
-
-        assertEquals(sizer.size(list), 3);
-
-        Map map = new HashMap();
-        map.put("fred", "flinstone");
-        map.put("barney", "rubble");
-
-        assertEquals(sizer.size(map), 2);
-
-        // Random objects are size 1
-
-        assertEquals(sizer.size(this), 1);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void unknown_scope()
-    {
-        Registry r = buildRegistry(UnknownScopeModule.class);
-
-        try
-        {
-            Runnable runnable = r.getService("UnknownScope", Runnable.class);
-
-            runnable.run();
-
-            unreachable();
-        } catch (Exception ex)
-        {
-            assertMessageContains(ex, "Error building service proxy for service 'UnknownScope'",
-                    "Unknown service scope 'magic'");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void scope_mismatch()
-    {
-        Registry r = buildRegistry(ScopeMismatchModule.class);
-
-        try
-        {
-            r.getService(StringBuilder.class);
-            unreachable();
-        } catch (Exception ex)
-        {
-            assertMessageContains(ex,
-                    "Error building service proxy for service 'ScopeRequiresAProxyAndNoInterfaceIsProvided'",
-                    "Service scope 'perthread' requires a proxy");
-        }
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void simple_perthread() throws Exception
-    {
-        final Registry r = buildRegistry(PerThreadModule.class);
-
-        final StringHolder holder = r.getService(StringHolder.class);
-
-        // Something about some of the other tests causes this one to fail
-        // unless we start with cleanupThread(), there must be a loose ThreadLocal
-        // hanging around causing problems.
-
-        r.cleanupThread();
-
-        holder.setValue("fred");
-        assertEquals(holder.getValue(), "fred", holder.toString());
-
-        Runnable runnable = new Runnable()
-        {
-            public void run()
-            {
-                Assert.assertNull(holder.getValue());
-
-                holder.setValue("barney");
-                assertEquals(holder.getValue(), "barney");
-
-                r.cleanupThread();
-            }
-        };
-
-        Thread t = new Thread(runnable);
-
-        t.start();
-        t.join();
-
-        assertEquals(holder.getValue(), "fred");
-
-        r.cleanupThread();
-
-        r.shutdown();
-    }
-
-    /**
-     * This test fails at times and I'm not sure why. It's some kind of interaction with other tests
-     * but hard to figure
-     * out. Damn ThreadLocals!
-     */
-    @Test
-    public void registry_thread_cleanup()
-    {
-        Registry r = buildRegistry(PerThreadModule.class);
-
-        r.cleanupThread();
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        assertNull(holder.getValue());
-
-        holder.setValue("fred");
-        assertEquals(holder.getValue(), "fred");
-
-        r.cleanupThread();
-
-        assertNull(holder.getValue());
-    }
-
-    @Test
-    public void recursive_module_construction_is_caught()
-    {
-        Registry r = buildRegistry(RecursiveConstructorModule.class);
-
-        try
-        {
-            Runnable runnable = r.getService("Runnable", Runnable.class);
-
-            // We can get the proxy, but invoking a method causes
-            // the module to be instantiated ... but that also invokes a method on
-            // the proxy.
-
-            runnable.run();
-
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertTrue(ex.getMessage().contains("has failed due to recursion"));
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void eager_service_loading()
-    {
-        Registry r = buildRegistry(EagerLoadModule.class);
-
-        assertFalse(EagerLoadModule._eagerLoadDidHappen, "EagerLoadModule is not in correct initial state.");
-
-        r.performRegistryStartup();
-
-        assertTrue(EagerLoadModule._eagerLoadDidHappen);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void access_to_services_ignores_case()
-    {
-        Registry r = buildRegistry(FredModule.class);
-
-        Runnable fred = r.getService("Fred", Runnable.class);
-
-        assertSame(r.getService("FRED", Runnable.class), fred);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void simple_autobuild()
-    {
-        Registry r = buildRegistry(AutobuildModule.class);
-
-        StringHolder sh = r.getService(StringHolder.class);
-
-        sh.setValue("Foo");
-
-        assertEquals(sh.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void exception_in_autobuild_service_constructor()
-    {
-        Registry r = buildRegistry(ExceptionInConstructorModule.class);
-
-        Pingable pingable = r.getService(Pingable.class);
-
-        try
-        {
-            pingable.ping();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Error invoking constructor", "ExceptionInConstructorServiceImpl()",
-                    "Yes, we have no tomatoes.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void non_proxied_service()
-    {
-        Registry r = buildRegistry(NonProxiedServiceModule.class);
-
-        // Note: obtained via the (or an) interface implemented by
-        // the service implementation.
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        assertTrue(holder instanceof StringHolderImpl);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void convention_over_configuration_service()
-    {
-        Registry r = buildRegistry(ConventionModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        holder.setValue("Bar");
-
-        assertEquals(holder.getValue(), "Bar");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void convention_over_configuration_service_impl_not_found()
-    {
-        try
-        {
-            buildRegistry(ConventionModuleImplementationNotFound.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Could not find default implementation class org.apache.tapestry5.ioc.StringTransformerImpl.",
-                    "Please provide this class, or bind the service interface to a specific implementation class.");
-        }
-    }
-
-    @Test
-    public void convention_over_configuration_service_wrong_impl_found()
-    {
-        try
-        {
-            buildRegistry(ConventionFailureModule.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "No service implements the interface " + Pingable.class.getName());
-        }
-    }
-
-    @Test
-    public void service_builder_method_uses_autobuild()
-    {
-        Registry r = buildRegistry(ServiceBuilderAutobuilderModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        // Check that it works.
-
-        holder.setValue("Foo");
-
-        assertEquals(holder.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry()
-    {
-        Registry r = buildRegistry();
-
-        StringHolder holder = r.autobuild(StringHolderImpl.class);
-
-        assertSame(holder.getClass(), StringHolderImpl.class);
-
-        // Check that it works.
-
-        holder.setValue("Foo");
-
-        assertEquals(holder.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-967
-     */
-    @Test
-    public void autobuild_with_description_via_registry()
-    {
-        Registry r = buildRegistry();
-
-        StringHolder holder = r.autobuild("Building StringHolderImpl", StringHolderImpl.class);
-
-        assertSame(holder.getClass(), StringHolderImpl.class);
-
-        // Check that it works.
-
-        holder.setValue("Bar");
-
-        assertEquals(holder.getValue(), "Bar");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void service_builder_method_uses_autobuild_with_failure()
-    {
-        Registry r = buildRegistry(ServiceBuilderAutobuilderModule.class);
-
-        // We can get the proxy.
-
-        Pingable pingable = r.getService(Pingable.class);
-
-        try
-        {
-            // But it fails at realization
-
-            pingable.ping();
-
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry_no_constructor()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.autobuild(UnbuildablePingable.class);
-
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry_constructor_exception()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.autobuild(FailInConstructorRunnable.class);
-
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Error invoking constructor",
-                    "org.apache.tapestry5.ioc.FailInConstructorRunnable()",
-                    "Failure in Runnable constructor.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void get_service_by_unknown_id()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.getService("PeekABoo", Runnable.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Service id \'PeekABoo\' is not defined by any module.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void request_service_by_type_with_no_matches()
-    {
-
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.getService(PreparedStatement.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "No service implements the interface java.sql.PreparedStatement.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void request_service_by_type_with_multiple_matches()
-    {
-        Registry r = buildRegistry(DuplicateServiceTypeModule.class);
-
-        try
-        {
-            r.getService(Pingable.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Service interface org.apache.tapestry5.ioc.Pingable is matched by 2 services: Barney, Fred.  Automatic dependency resolution requires that exactly one service implement the interface.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void service_build_method_return_type_not_interface()
-    {
-        Registry r = buildRegistry(ConcreteServiceBuilderModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        // No interface means no proxy.
-
-        assertTrue(holder instanceof StringHolderImpl);
-
-        // But the implementation is cached
-
-        assertSame(r.getService(StringHolder.class), holder);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void symbol_in_inject_annotation_is_expanded()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("Greeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Hello");
-        assertEquals(g.toString(), "<Proxy for Greeter(org.apache.tapestry5.ioc.Greeter)>");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void symbol_in_registry_call_for_service_is_expanded()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("${greeter}", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Hello");
-        assertEquals(g.toString(), "<Proxy for HelloGreeter(org.apache.tapestry5.ioc.Greeter)>");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_single_match()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedBlueGreeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Blue");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_multiple_matches()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedRedGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Unable to locate a single service assignable to type org.apache.tapestry5.ioc.Greeter with marker annotation(s) org.apache.tapestry5.ioc.RedMarker",
-                    "org.apache.tapestry5.ioc.GreeterModule.buildRedGreeter1()",
-                    "org.apache.tapestry5.ioc.GreeterModule.buildRedGreeter2()");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_zero_matches()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedYellowGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Exception constructing service",
-                    "Unable to locate any service assignable to type org.apache.tapestry5.ioc.Greeter with marker annotation(s) org.apache.tapestry5.ioc.YellowMarker.");
-        }
-
-        r.shutdown();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void builtin_services_available_via_marker_annotation()
-    {
-        Registry r = buildRegistry();
-
-        TypeCoercer tc1 = r.getService("TypeCoercer", TypeCoercer.class);
-
-        Builtin annotation = newMock(Builtin.class);
-
-        AnnotationProvider ap = mockAnnotationProvider();
-
-        train_getAnnotation(ap, Builtin.class, annotation);
-
-        // On the build server, the order of keys inside the RegistryImpl's _markerToServiceDef
-        // is different, and so it *may* query ofr a number of other annotation
-        // besides Builtin.
-
-        expect(ap.getAnnotation(EasyMock.isA(Class.class))).andStubReturn(null);
-
-        replay();
-
-        TypeCoercer tc2 = r.getObject(TypeCoercer.class, ap);
-
-        assertSame(tc1, tc2);
-
-        verify();
-
-        r.shutdown();
-    }
-
-    /**
-     * A cursory test for {@link ServiceActivityScoreboard}, just to see if any data has been
-     * collected.
-     */
-    @Test
-    public void service_activity_scoreboard()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        ServiceActivityScoreboard scoreboard = r.getService(ServiceActivityScoreboard.class);
-
-        // Force the state of a few services.
-
-        TypeCoercer tc = r.getService("TypeCoercer", TypeCoercer.class);
-
-        tc.coerce("123", Integer.class);
-
-        r.getService("BlueGreeter", Greeter.class);
-
-        // Now get the activity list and poke around.
-
-        List<ServiceActivity> serviceActivity = scoreboard.getServiceActivity();
-
-        assertTrue(serviceActivity.size() > 0);
-
-        for (ServiceActivity a : serviceActivity)
-        {
-            String serviceId = a.getServiceId();
-
-            if (serviceId.equals("ClassFactory"))
-                assertEquals(a.getStatus(), Status.BUILTIN);
-
-            if (serviceId.equals("RedGreeter1"))
-            {
-                assertEquals(a.getStatus(), Status.DEFINED);
-                assertEquals(a.getMarkers().contains(BlueMarker.class), false);
-                assertEquals(a.getMarkers().contains(RedMarker.class), true);
-            }
-
-            if (serviceId.equals("TypeCoercer"))
-                assertEquals(a.getStatus(), Status.REAL);
-
-            if (serviceId.equals("BlueGreeter"))
-            {
-                assertEquals(a.getStatus(), Status.VIRTUAL);
-                assertEquals(a.getMarkers().contains(BlueMarker.class), true);
-                assertEquals(a.getMarkers().contains(RedMarker.class), false);
-            }
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void get_service_by_type_and_markers()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter blue = r.getService(Greeter.class, BlueMarker.class);
-
-        assert blue.getGreeting().equals("Blue");
-
-        r.shutdown();
-    }
-
-
-    @Test
-    public void service_activity_scoreboard_perthread() throws InterruptedException
-    {
-        final Registry r = buildRegistry(GreeterModule.class, PerThreadModule.class);
-
-        ServiceActivityScoreboard scoreboard = r.getService(ServiceActivityScoreboard.class);
-
-        // Force the state of a few services.
-
-        final StringHolder holder = r.getService(StringHolder.class);
-
-        Runnable runnable = new Runnable()
-        {
-            public void run()
-            {
-                holder.setValue("barney");
-                assertEquals(holder.getValue(), "barney");
-
-                r.cleanupThread();
-            }
-        };
-
-        Thread t = new Thread(runnable);
-
-        t.start();
-        t.join();
-
-        // Now get the activity list and poke around.
-
-        List<ServiceActivity> serviceActivity = scoreboard.getServiceActivity();
-
-        assertTrue(serviceActivity.size() > 0);
-
-        for (ServiceActivity a : serviceActivity)
-        {
-            String serviceId = a.getServiceId();
-
-            if (serviceId.equals("StringHolder"))
-                assertEquals(a.getStatus(), Status.VIRTUAL);
-        }
-
-        r.cleanupThread();
-        r.shutdown();
-    }
-
-    @Test
-    public void proxy_autobuild_object()
-    {
-        Registry r = buildRegistry();
-
-        IntegrationTest.countingGreeterInstantiationCount = 0;
-
-        Greeter g = r.proxy(Greeter.class, CountingGreeterImpl.class);
-
-        assertEquals(IntegrationTest.countingGreeterInstantiationCount, 0);
-
-        assertNotNull(g.toString());
-
-        assertEquals(IntegrationTest.countingGreeterInstantiationCount, 0);
-
-        // Show that the class is not instantiated until a method is invoked, and that its
-        // only instantiated once.
-
-        for (int i = 0; i < 5; i++)
-        {
-            assertEquals(g.getGreeting(), "Hello");
-            assertEquals(IntegrationTest.countingGreeterInstantiationCount, 1);
-        }
-
-        r.shutdown();
-    }
-
-    /**
-     * TAPESTRY-2117
-     */
-    @Test
-    public void circular_module_references_are_ignored()
-    {
-        Registry r = buildRegistry(HelterModule.class);
-
-        Runnable helter = r.getService("Helter", Runnable.class);
-        Runnable skelter = r.getService("Skelter", Runnable.class);
-
-        assertNotSame(helter, skelter);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void bind_to_service_builder()
-    {
-        Registry r = buildRegistry(ServiceBuilderModule.class);
-
-        Greeter g = r.getService("Greeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from service Greeter.");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void bind_to_service_binder_that_throws_exception()
-    {
-        Registry r = buildRegistry(ServiceBuilderModule.class);
-
-        Greeter g = r.getService("BrokenGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        } catch (Exception ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Exception constructing service 'BrokenGreeter': Failure inside ServiceBuilder callback.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void invalid_class_in_manifest() throws Exception
-    {
-        File fakejar = new File("src/test/fakejar");
-
-        assertTrue(fakejar.exists() && fakejar.isDirectory(), "src/test/fakejar must be an existing directory");
-
-        URL url = fakejar.toURL();
-
-        URLClassLoader loader = new URLClassLoader(new URL[]
-                {url}, Thread.currentThread().getContextClassLoader());
-
-        RegistryBuilder builder = new RegistryBuilder(loader);
-
-        try
-        {
-            IOCUtilities.addDefaultModules(builder);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Exception loading module(s) from manifest",
-                    "Failure loading Tapestry IoC module class does.not.exist.Module");
-        }
-    }
-
-    @Test
-    public void local_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule.class, LocalModule.class);
-
-        StringHolder g = r.getService("LocalGreeterHolder", StringHolder.class);
-
-        // Comes from the @Local DrawlGreeter, even though there are many other Greeter services
-        // available.
-
-        assertEquals(g.getValue(), "Hello, y'all!");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void decorator_receive_delegate_by_specific_type()
-    {
-        Registry r = buildRegistry(GreeterModule.class, SpecificDecoratorModule.class);
-
-        Greeter g = r.getService("HelloGreeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "HELLO");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void cyclic_dependency_in_MOP() throws Exception
-    {
-        Registry r = buildRegistry(CyclicMOPModule.class);
-
-        Runnable trigger = r.getService("Trigger", Runnable.class);
-
-        try
-        {
-            trigger.run();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Construction of service 'TypeCoercer' has failed due to recursion");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void no_public_constructor_on_module_builder_class()
-    {
-        Registry r = buildRegistry(PrivateConstructorModule.class);
-
-        try
-        {
-            r.getService("Trigger", Runnable.class).run();
-
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Module class org.apache.tapestry5.ioc.internal.PrivateConstructorModule does not contain any public constructors.");
-        }
-    }
-
-    @Test
-    public void too_many_public_constructors_on_module_builder_class()
-    {
-        Registry r = buildRegistry(ExtraPublicConstructorsModule.class);
-
-        UpcaseService s = r.getService(UpcaseService.class);
-
-        assertEquals(s.upcase("Hello, ${fred}"), "HELLO, FLINTSTONE");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void unordered_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("MasterStringTransformer", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void ordered_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("StringTransformerChain", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void mapped_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("MappedStringTransformer", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-139
-     */
-    @Test
-    public void autobuild_injection()
-    {
-        Registry r = buildRegistry(AutobuildInjectionModule.class);
-
-        StringTransformer st = r.getService(StringTransformer.class);
-
-        assertEquals(st.transform("Hello, ${fred}"), "Hello, flintstone");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-292
-     */
-    @Test
-    public void field_resource_injection()
-    {
-        Registry r = buildRegistry(FieldResourceInjectionModule.class);
-
-        FieldResourceService s = r.getService(FieldResourceService.class);
-
-        assertEquals(s.getServiceId(), "FieldResourceService");
-        assertListsEquals(s.getLabels(), "Barney", "Betty", "Fred", "Wilma");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-291
-     */
-    @Test
-    public void post_injection_method_invoked()
-    {
-        Registry r = buildRegistry(PostInjectionMethodModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from ServiceIdGreeter.");
-    }
-
-    /**
-     * TAP5-429
-     */
-    @Test
-    public void contribute_to_unknown_service()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule.class);
-            unreachable();
-        } catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule.contributeDoesNotExist(Configuration)",
-                    "is for service 'DoesNotExist', which does not exist.");
-        }
-    }
-
-    /**
-     * TAP5-436
-     */
-    @Test
-    public void extra_methods_on_module_class_are_errors()
-    {
-        try
-        {
-            buildRegistry(ExtraMethodsModule.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Module class org.apache.tapestry5.ioc.ExtraMethodsModule contains unrecognized public methods: ",
-                    "thisMethodIsInvalid()", "soIsThisMethod().");
-        }
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void service_builder_method_marked_for_no_decoration()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        StringTransformer st = r.getService(StringTransformer.class);
-
-        assertEquals(st.transform("tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void bind_service_marked_for_no_decoration_explicitly()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from ServiceIdGreeter.");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void bind_service_with_prevent_service_decoration_annotations_on_implementation_class()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        Rocket rocket = r.getService(Rocket.class);
-
-        assertEquals(rocket.getCountdown(), "3, 2, 1, Launch!");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void successful_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("BARNEY", "WILMA", "Mr. Flintstone"));
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void failed_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, FailedConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        try
-        {
-            service.getNames();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Failure processing override from org.apache.tapestry5.ioc.FailedConfigurationOverrideModule.contributeOrderedNames(OrderedConfiguration)",
-                    "Override for object 'wilma' is invalid as it does not match an existing object.");
-        }
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void duplicate_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class,
-                DuplicateConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        try
-        {
-            service.getNames();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            // Can't get too specific since we don't know which module will get processed first
-            assertMessageContains(ex, "Error invoking service contribution method ",
-                    "Contribution 'fred' has already been overridden");
-        }
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void mapped_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        // Due to override wilma to null:
-
-        assertListsEquals(sl.keys(), "barney", "betty", "fred");
-
-        assertEquals(sl.lookup("fred"), "Mr. Flintstone");
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void nonmatching_mapped_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class,
-                NonmatchingMappedConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        try
-        {
-            sl.keys();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Override for key alley cat (at org.apache.tapestry5.ioc.util.NonmatchingMappedConfigurationOverrideModule.contributeStringLookup(MappedConfiguration)",
-                    "does not match an existing key.");
-        }
-    }
-
-    /**
-     * TAP-437
-     */
-    @Test
-    public void duplicate_override_for_mapped_configuration()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class,
-                DuplicateConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        try
-        {
-            sl.keys();
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Error invoking service contribution method",
-                    "Contribution key fred has already been overridden");
-        }
-    }
-
-    /**
-     * TAP5-316
-     */
-    @Test
-    public void service_override()
-    {
-        Registry r = buildRegistry(GreeterServiceOverrideModule.class);
-
-        Greeter g = r.getObject(Greeter.class, null);
-
-        assertEquals(g.getGreeting(), "Override Greeting");
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void non_void_advisor_method_is_error()
-    {
-        try
-        {
-            buildRegistry(NonVoidAdvisorMethodModule.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Advise method org.apache.tapestry5.ioc.NonVoidAdvisorMethodModule.adviseFoo(MethodAdviceReceiver)",
-                    "does not return void.");
-        }
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void advisor_methods_must_take_a_method_advisor_parameter()
-    {
-        try
-        {
-            buildRegistry(AdviceMethodMissingAdvisorParameterModule.class);
-            unreachable();
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Advise method org.apache.tapestry5.ioc.AdviceMethodMissingAdvisorParameterModule.adviseBar()",
-                    "must take a parameter of type org.apache.tapestry5.ioc.MethodAdviceReceiver.");
-        }
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void advise_services()
-    {
-        Registry r = buildRegistry(AdviceDemoModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "ADVICE IS EASY!");
-    }
-
-    @Test
-    public void contribute_by_annotation()
-    {
-        Registry r = buildRegistry(AlphabetModule.class, AlphabetModule2.class);
-
-        NameListHolder greek = r.getService("Greek", NameListHolder.class);
-
-        assertListsEquals(greek.getNames(), "Alpha", "Beta", "Gamma", "Delta");
-
-        NameListHolder anotherGreek = r.getService("AnotherGreek", NameListHolder.class);
-
-        assertListsEquals(anotherGreek.getNames(), "Alpha", "Beta", "Gamma", "Delta", "Epsilon");
-
-        NameListHolder hebrew = r.getService("Hebrew", NameListHolder.class);
-
-        assertListsEquals(hebrew.getNames(), "Alef", "Bet", "Gimel", "Dalet", "He", "Vav");
-
-        NameListHolder2 holder = r.getService("ServiceWithEmptyConfiguration", NameListHolder2.class);
-
-        assertEquals(holder.getNames(), Arrays.asList());
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void contribute_by_annotation_to_nonexistent_service()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule2.class);
-            unreachable();
-        } catch (Exception e)
-        {
-            assertMessageContains(
-                    e,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule2.provideConfiguration(OrderedConfiguration)",
-                    "is for service 'interface org.apache.tapestry5.ioc.NameListHolder'",
-                    "qualified with marker annotations [", "interface org.apache.tapestry5.ioc.BlueMarker",
-                    "interface org.apache.tapestry5.ioc.RedMarker", "], which does not exist.");
-        }
-    }
-
-    @Test
-    public void contribute_by_annotation_wrong_marker()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule3.class);
-            unreachable();
-        } catch (Exception e)
-        {
-            assertMessageContains(
-                    e,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule3.provideConfiguration(OrderedConfiguration)",
-                    "is for service 'interface org.apache.tapestry5.ioc.NameListHolder'",
-                    "qualified with marker annotations [interface org.apache.tapestry5.ioc.BlueMarker], which does not exist.");
-        }
-    }
-
-    @Test
-    public void service_resources_available_when_invoking_contribute_method()
-    {
-        Registry r = buildRegistry(InjectionCheckModule.class);
-
-        InjectionCheck service = r.getService(InjectionCheck.class);
-
-        assertSame(service.getLogger(), service.getValue("logger"));
-
-        IndirectResources il = (IndirectResources) service.getValue("indirect-resources");
-
-        assertSame(service.getLogger(), il.getLogger());
-        assertSame(service.getLogger(), il.getResources().getLogger());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void advise_by_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, AdviseByMarkerModule.class);
-
-        Greeter green = r.getService("GreenGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "gamma[beta[alpha[Green]]]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void advise_by_locale_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, AdviseByMarkerModule.class);
-
-        Greeter red = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(red.getGreeting(), "delta[Red]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void advise_by_annotation_matched_by_id()
-    {
-        Registry r = buildRegistry(AdviseByMarkerModule2.class);
-
-        Greeter green = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "beta[alpha[Red]]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void decorate_by_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, DecorateByMarkerModule.class);
-
-        Greeter green = r.getService("GreenGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "Decorated by foo[Decorated by baz[Decorated by bar[Green]]]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void decorate_by_locale_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, DecorateByMarkerModule.class);
-
-        Greeter red = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(red.getGreeting(), "Decorated by barney[Red]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void decorate_by_annotation_matched_by_id()
-    {
-        Registry r = buildRegistry(DecorateByMarkerModule2.class);
-
-        Greeter green = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "Decorated by beta[Decorated by alpha[Red]]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void startup_inside_module()
-    {
-        Registry r = buildRegistry(StartupModule2.class);
-
-        assertFalse(StartupModule2.staticStartupInvoked);
-
-        assertFalse(StartupModule2.instanceStartupInvoked);
-
-        r.performRegistryStartup();
-
-        assertTrue(StartupModule2.staticStartupInvoked);
-
-        assertTrue(StartupModule2.instanceStartupInvoked);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void case_ignored_in_service_id_of_contribute_method()
-    {
-        Registry r = buildRegistry(CaseInsensitiveContributeMethodModule.class);
-
-        SymbolSource symbolSource = r.getService(SymbolSource.class);
-
-        assertEquals(symbolSource.valueForSymbol("it"), "works");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void contributed_values_may_be_coerced_to_correct_type()
-    {
-        Registry r = buildRegistry(ContributedValueCoercionModule.class);
-
-        SymbolSource source = r.getService(SymbolSource.class);
-
-        assertEquals(source.valueForSymbol("bool-true"), "true");
-        assertEquals(source.valueForSymbol("bool-false"), "false");
-        assertEquals(source.valueForSymbol("num-12345"), "12345");
-    }
-
-    /**
-     * TAP5-1674
-     */
-    @Test
-    public void no_implemention_class_defined_for_ServiceBinder_withSimpleId()
-    {
-        try
-        {
-            buildRegistry(NoImplementationClassForSimpleIdModule.class);
-        } catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "No defined implementation class to generate simple id from");
-        }
-    }
-
-    @Test
-    public void optional_contribution_to_unknown_service_is_not_an_error()
-    {
-
-        buildRegistry(OptionalContributionModule.class);
-    }
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf890643/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTestFixture.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTestFixture.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTestFixture.java
new file mode 100644
index 0000000..3ea3dcb
--- /dev/null
+++ b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTestFixture.java
@@ -0,0 +1,9 @@
+package org.apache.tapestry5.ioc;
+
+/**
+ * Provides a convenient places to store a few values, when communicating between text fixture classes and test specifications
+ * and feature methods.
+ */
+public class IntegrationTestFixture {
+  public static int countingGreeterInstantiationCount;
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf890643/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
index 1fea4ef..5b99bbd 100644
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
+++ b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2012 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -16,9 +16,6 @@ package org.apache.tapestry5.ioc;
 
 import org.apache.tapestry5.ioc.annotations.InjectService;
 
-/**
- * Used by {@link org.apache.tapestry5.ioc.IntegrationTest}.
- */
 public class RecursiveConstructorModule
 {
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf890643/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
index aba450e..50f3f2a 100644
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
+++ b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2009, 2012 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -20,100 +20,85 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-public class StaticModule
-{
-    private static boolean instantiated;
-
-    private static boolean fredRan;
-
-    private static boolean decoratorRan;
-
-    public StaticModule()
-    {
-        setInstantiated(true);
-    }
-
-    public static Runnable buildFred()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-                setFredRan(true);
-            }
-        };
-    }
-
-    public static Runnable buildBarney()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-
-    public static Runnable decorateBarney(final Object delegate, String serviseId)
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-                setDecoratorRan(true);
-
-                ((Runnable) delegate).run();
-            }
-        };
-    }
-
-    static synchronized void setFredRan(boolean fredRan)
-    {
-        StaticModule.fredRan = fredRan;
-    }
-
-    static synchronized boolean getFredRan()
-    {
-        return fredRan;
-    }
-
-    static synchronized void setInstantiated(boolean instantiated)
-    {
-        StaticModule.instantiated = instantiated;
-    }
-
-    static synchronized boolean isInstantiated()
-    {
-        return instantiated;
-    }
-
-    static synchronized void setDecoratorRan(boolean decoratorRan)
-    {
-        StaticModule.decoratorRan = decoratorRan;
-    }
-
-    static synchronized boolean getDecoratorRan()
-    {
-        return decoratorRan;
-    }
-
-    public static NameListHolder buildNames(final Collection<String> configuration)
-    {
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                List<String> result = CollectionFactory.newList(configuration);
-
-                Collections.sort(result);
-
-                return result;
-            }
-        };
-    }
-
-    public static void contributeNames(Configuration<String> configuration)
-    {
-        configuration.add("Fred");
-    }
+public class StaticModule {
+  private static boolean instantiated;
+
+  private static boolean fredRan;
+
+  private static boolean decoratorRan;
+
+  static void reset() {
+    instantiated = false;
+    fredRan = false;
+    decoratorRan = false;
+  }
+
+  public StaticModule() {
+    setInstantiated(true);
+  }
+
+  public static Runnable buildFred() {
+    return new Runnable() {
+      public void run() {
+        setFredRan(true);
+      }
+    };
+  }
+
+  public static Runnable buildBarney() {
+    return new Runnable() {
+      public void run() {
+      }
+    };
+  }
+
+  public static Runnable decorateBarney(final Object delegate, String serviseId) {
+    return new Runnable() {
+      public void run() {
+        setDecoratorRan(true);
+
+        ((Runnable) delegate).run();
+      }
+    };
+  }
+
+  static synchronized void setFredRan(boolean fredRan) {
+    StaticModule.fredRan = fredRan;
+  }
+
+  static synchronized boolean getFredRan() {
+    return fredRan;
+  }
+
+  static synchronized void setInstantiated(boolean instantiated) {
+    StaticModule.instantiated = instantiated;
+  }
+
+  static synchronized boolean isInstantiated() {
+    return instantiated;
+  }
+
+  static synchronized void setDecoratorRan(boolean decoratorRan) {
+    StaticModule.decoratorRan = decoratorRan;
+  }
+
+  static synchronized boolean getDecoratorRan() {
+    return decoratorRan;
+  }
+
+  public static NameListHolder buildNames(final Collection<String> configuration) {
+    return new NameListHolder() {
+      public List<String> getNames() {
+        List<String> result = CollectionFactory.newList(configuration);
+
+        Collections.sort(result);
+
+        return result;
+      }
+    };
+  }
+
+  public static void contributeNames(Configuration<String> configuration) {
+    configuration.add("Fred");
+  }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf890643/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
index 30535a2..fcff2ce 100644
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
+++ b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2012 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,9 +14,7 @@
 
 package org.apache.tapestry5.ioc;
 
-/**
- * Used by {@link org.apache.tapestry5.ioc.IntegrationTest}.
- */
+/** Used in various integration tests. */
 public interface StringTransformer
 {
     String transform(String input);