| /* |
| * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * |
| * You may obtain a copy of the License at |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.qi4j.api.metrics; |
| |
| /** |
| * Metrics Provider SPI. |
| * <p> |
| * The Zest Runtime will automatically ook for a service that implements the MetricsProvider interdace |
| * and use it for internal Runtime metrics, such as the UnitOfWork measuring the time from creation to close. |
| * </p> |
| * <p> |
| * The Metrics Library is available to add metric functionality to applications in the same way, and |
| * will use the same MetricsProvider. |
| * </p> |
| * <p> |
| * Note that the usual visibitlity rules applies, so you might have more than one MetricsProvider server, |
| * perhaps per layer. |
| * </p> |
| */ |
| public interface MetricsProvider |
| { |
| /** |
| * Creates a new factory instance. |
| * |
| * The instanctiation is done by providing a Metric type, which is one of |
| * <ul> |
| * <li>{@link MetricsCounter}</li> |
| * <li>{@link MetricsGauge}</li> |
| * <li>{@link MetricsHealthCheck}</li> |
| * <li>{@link MetricsHistogram}</li> |
| * <li>{@link MetricsMeter}</li> |
| * <li>{@link MetricsTimer}</li> |
| * </ul> |
| * |
| * @param factoryType The class of the metric type needed. |
| * @param <T> The metric type requested. |
| * |
| * @return A factory instance |
| * |
| * @throws MetricsNotSupportedException when the MetricsProvider is not supporting the factory type requested. |
| */ |
| <T extends MetricsFactory> T createFactory( Class<T> factoryType ) |
| throws MetricsNotSupportedException; |
| } |