org.jboss.as.clustering.controller.MetricFunction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wildfly-clustering-common Show documentation
Show all versions of wildfly-clustering-common Show documentation
The code in this module is not explicitly related to clustering, but rather contains resuable code used by clustering modules
and any modules that integrate with clustering.
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.jboss.as.clustering.controller;
import java.util.function.Function;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.dmr.ModelNode;
import org.wildfly.common.function.ExceptionFunction;
/**
* A functional view of a runtime metric.
* @author Paul Ferraro
* @param the type of value provided by the service on which the given runtime metric operates
* @param the type of the value of which the given runtime metric operates
*/
public class MetricFunction implements ExceptionFunction {
private final Function mapper;
private final Metric metric;
/**
* Creates a functional view of the specified metric using the specified mapper.
* @param mapper maps the value of a service to the value on which the given metric operates
* @param metric a runtime metric
*/
public MetricFunction(Function mapper, Metric metric) {
this.mapper = mapper;
this.metric = metric;
}
@Override
public ModelNode apply(T value) throws OperationFailedException {
V mapped = this.mapper.apply(value);
return (mapped != null) ? this.metric.execute(mapped) : null;
}
}