summaryrefslogtreecommitdiffstats
path: root/processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java
diff options
context:
space:
mode:
Diffstat (limited to 'processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java')
-rw-r--r--processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java100
1 files changed, 0 insertions, 100 deletions
diff --git a/processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java b/processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java
deleted file mode 100644
index 7e0eb8b72ec..00000000000
--- a/processing/src/main/java/com/yahoo/component/chain/ChainedComponent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.component.chain;
-
-import com.yahoo.component.AbstractComponent;
-import com.yahoo.component.ComponentId;
-import com.yahoo.component.chain.dependencies.After;
-import com.yahoo.component.chain.dependencies.Before;
-import com.yahoo.component.chain.dependencies.Dependencies;
-import com.yahoo.component.chain.dependencies.Provides;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Component with dependencies.
- *
- * @author Tony Vaagenes
- */
-public abstract class ChainedComponent extends AbstractComponent {
-
- /** The immutable set of dependencies of this. NOTE: the default is only for unit testing. */
- private Dependencies dependencies = getDefaultAnnotatedDependencies();
-
- public ChainedComponent(ComponentId id) {
- super(id);
- }
-
- protected ChainedComponent() {}
-
- /**
- * Called by the container to assign the full set of dependencies to this class (configured and declared).
- * This is called once before this is started.
- * @param dependencies The configured dependencies, that this method will merge with annotated dependencies.
- */
- public void initDependencies(Dependencies dependencies) {
- this.dependencies = dependencies.union(getDefaultAnnotatedDependencies());
- }
-
- /** Returns the configured and declared dependencies of this chainedcomponent */
- public Dependencies getDependencies() { return dependencies; }
-
- /** This method is here only for legacy reasons, do not override. */
- protected Dependencies getDefaultAnnotatedDependencies() {
- Dependencies dependencies = getAnnotatedDependencies(com.yahoo.yolean.chain.Provides.class, com.yahoo.yolean.chain.Before.class, com.yahoo.yolean.chain.After.class);
- Dependencies legacyDependencies = getAnnotatedDependencies(Provides.class, Before.class, After.class);
-
- return dependencies.union(legacyDependencies);
- }
-
- /**
- * @param providesClass The annotation class representing 'provides'.
- * @param beforeClass The annotation class representing 'before'.
- * @param afterClass The annotation class representing 'after'.
- * @return a new {@link Dependencies} created from the annotations given in this component's class.
- */
- protected Dependencies getAnnotatedDependencies(Class<? extends Annotation> providesClass,
- Class<? extends Annotation> beforeClass,
- Class<? extends Annotation> afterClass) {
- return new Dependencies(
- allOf(getSymbols(this, providesClass), this.getClass().getSimpleName(), this.getClass().getName()),
- getSymbols(this, beforeClass),
- getSymbols(this, afterClass));
- }
-
- // TODO: move to vespajlib.
- private static List<String> allOf(List<String> symbols, String... otherSymbols) {
- List<String> result = new ArrayList<>(symbols);
- result.addAll(Arrays.asList(otherSymbols));
- return result;
- }
-
-
- private static List<String> getSymbols(ChainedComponent component, Class<? extends Annotation> annotationClass) {
- List<String> result = new ArrayList<>();
-
- result.addAll(annotationSymbols(component, annotationClass));
- return result;
- }
-
- private static Collection<String> annotationSymbols(ChainedComponent component, Class<? extends Annotation> annotationClass) {
-
- try {
- Annotation annotation = component.getClass().getAnnotation(annotationClass);
- if (annotation != null) {
- Object values = annotationClass.getMethod("value").invoke(annotation);
- return Arrays.asList((String[])values);
- }
- return Collections.emptyList();
-
- } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
- throw new RuntimeException(e);
- }
- }
-
-}