// // KairosMetricReporterListProvider.java // // Copyright 2013, NextPage Inc. All rights reserved. // package org.kairosdb.core.reporting; import com.google.inject.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; public class KairosMetricReporterListProvider implements Provider<List<KairosMetricReporter>> { private List<KairosMetricReporter> m_reporters = new ArrayList<KairosMetricReporter>(); @Inject public KairosMetricReporterListProvider(Injector injector) { Map<Key<?>, Binding<?>> bindings = injector.getAllBindings(); for (Key<?> key : bindings.keySet()) { Class<?> bindingClass = key.getTypeLiteral().getRawType(); if (KairosMetricReporter.class.isAssignableFrom(bindingClass)) { KairosMetricReporter reporter = (KairosMetricReporter)injector.getInstance(bindingClass); m_reporters.add(reporter); } } } @Override public List<KairosMetricReporter> get() { return (Collections.unmodifiableList(m_reporters)); } }