DOC: Extension sample for application specific settings. See #1702

* Added sample and documentation for how to create extension for application specific config
* Simplified java usage of ExtensionIdProvider, more aligned with how it is done in scala
This commit is contained in:
Patrik Nordwall 2012-01-20 11:30:33 +01:00
parent 642dd9c28a
commit 05d4a6ed38
11 changed files with 345 additions and 119 deletions

View file

@ -16,15 +16,13 @@ import static org.junit.Assert.*;
public class JavaExtension {
static class Provider implements ExtensionIdProvider {
static class TestExtensionId extends AbstractExtensionId<TestExtension> implements ExtensionIdProvider {
public final static TestExtensionId instance = new TestExtensionId();
public ExtensionId<TestExtension> lookup() {
return defaultInstance;
return instance;
}
}
public final static TestExtensionId defaultInstance = new TestExtensionId();
static class TestExtensionId extends AbstractExtensionId<TestExtension> {
public TestExtension createExtension(ActorSystemImpl i) {
return new TestExtension(i);
}
@ -37,11 +35,13 @@ public class JavaExtension {
system = i;
}
}
static class OtherExtension implements Extension {
static final ExtensionKey<OtherExtension> key = new ExtensionKey<OtherExtension>(OtherExtension.class) {};
static final ExtensionKey<OtherExtension> key = new ExtensionKey<OtherExtension>(OtherExtension.class) {
};
public final ActorSystemImpl system;
public OtherExtension(ActorSystemImpl i) {
system = i;
}
@ -51,8 +51,8 @@ public class JavaExtension {
@BeforeClass
public static void beforeAll() {
Config c = ConfigFactory.parseString("akka.extensions = [ \"akka.actor.JavaExtension$Provider\" ]").withFallback(
AkkaSpec.testConf());
Config c = ConfigFactory.parseString("akka.extensions = [ \"akka.actor.JavaExtension$TestExtensionId\" ]")
.withFallback(AkkaSpec.testConf());
system = ActorSystem.create("JavaExtension", c);
}
@ -64,10 +64,10 @@ public class JavaExtension {
@Test
public void mustBeAccessible() {
assertSame(system.extension(defaultInstance).system, system);
assertSame(defaultInstance.apply(system).system, system);
assertSame(system.extension(TestExtensionId.instance).system, system);
assertSame(TestExtensionId.instance.apply(system).system, system);
}
@Test
public void mustBeAdHoc() {
assertSame(OtherExtension.key.apply(system).system, system);