diff options
Diffstat (limited to 'container-di/src/test/java/demo/Base.java')
-rw-r--r-- | container-di/src/test/java/demo/Base.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/container-di/src/test/java/demo/Base.java b/container-di/src/test/java/demo/Base.java new file mode 100644 index 00000000000..7bc2c7b4404 --- /dev/null +++ b/container-di/src/test/java/demo/Base.java @@ -0,0 +1,66 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package demo; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.yahoo.component.ComponentId; +import com.yahoo.config.ConfigInstance; +import com.yahoo.container.di.ContainerTest; +import com.yahoo.container.di.componentgraph.core.ComponentGraph; +import com.yahoo.container.di.componentgraph.core.ComponentNode; +import com.yahoo.container.di.componentgraph.core.Node; +import com.yahoo.vespa.config.ConfigKey; +import org.junit.Before; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author tonytv + * @author gjoranv + */ +public class Base { + private ComponentGraph componentGraph; + private Injector injector; + private Map<ConfigKey<? extends ConfigInstance>, ConfigInstance> configs = + new HashMap<>(); + + @Before + public void createGraph() { + injector = Guice.createInjector(); + componentGraph = new ComponentGraph(0); + } + + public void register(Class<?> componentClass) { + componentGraph.add(mockComponentNode(componentClass)); + } + + public ComponentId toId(Class<?> componentClass) { + return ComponentId.fromString(componentClass.getName()); + } + + @SuppressWarnings("unchecked") + private Node mockComponentNode(Class<?> componentClass) { + return new ComponentNode(toId(componentClass), toId(componentClass).toString(), (Class<Object>)componentClass, null); + } + + public <T> T getInstance(Class<T> componentClass) { + return componentGraph.getInstance(componentClass); + } + + @SuppressWarnings("unchecked") + public void complete() { + componentGraph.complete(injector); + componentGraph.setAvailableConfigs(ContainerTest.convertMap(configs)); + } + + public void setInjector(Injector injector) { + this.injector = injector; + } + + @SuppressWarnings("unchecked") + public void addConfig(ConfigInstance configInstance, ComponentId id) { + configs.put(new ConfigKey<>((Class<ConfigInstance>)configInstance.getClass(), id.toString()), + configInstance); + } +} |