/** * Copyright (C) 2009-2013 Typesafe Inc. */ package akka.actor; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import akka.testkit.AkkaSpec; import com.typesafe.config.ConfigFactory; import com.typesafe.config.Config; import static org.junit.Assert.*; public class JavaExtension { static class TestExtensionId extends AbstractExtensionId implements ExtensionIdProvider { public final static TestExtensionId TestExtensionProvider = new TestExtensionId(); public ExtensionId lookup() { return TestExtensionId.TestExtensionProvider; } public TestExtension createExtension(ExtendedActorSystem i) { return new TestExtension(i); } } static class TestExtension implements Extension { public final ExtendedActorSystem system; public TestExtension(ExtendedActorSystem i) { system = i; } } static class OtherExtension implements Extension { static final ExtensionKey key = new ExtensionKey(OtherExtension.class) { }; public final ExtendedActorSystem system; public OtherExtension(ExtendedActorSystem system) { this.system = system; } } private static ActorSystem system; @BeforeClass public static void beforeAll() { Config c = ConfigFactory.parseString("akka.extensions = [ \"akka.actor.JavaExtension$TestExtensionId\" ]") .withFallback(AkkaSpec.testConf()); system = ActorSystem.create("JavaExtension", c); } @AfterClass public static void afterAll() { system.shutdown(); system = null; } @Test public void mustBeAccessible() { assertTrue(system.hasExtension((TestExtensionId.TestExtensionProvider))); assertSame(system.extension(TestExtensionId.TestExtensionProvider).system, system); assertSame(TestExtensionId.TestExtensionProvider.apply(system).system, system); } @Test public void mustBeAdHoc() { assertSame(OtherExtension.key.apply(system).system, system); } }