All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.bund.bva.isyfact.task.util.TaskCounterBuilder Maven / Gradle / Ivy

There is a newer version: 3.2.1
Show newest version
/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * The Federal Office of Administration (Bundesverwaltungsamt, BVA)
 * licenses this file to you 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 de.bund.bva.isyfact.task.util;

import java.util.function.Function;

import org.aspectj.lang.ProceedingJoinPoint;

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;

public final class TaskCounterBuilder {

    /** Default tags. **/
    private static final Function> DEFAULT_TAGS;

    private TaskCounterBuilder() {
    }

    static {
        DEFAULT_TAGS = pjp -> Tags.of("class", pjp.getStaticPart().getSignature().getDeclaringType().getSimpleName(), "method", pjp.getStaticPart().getSignature().getName());
    }

    public static Counter successCounter(ProceedingJoinPoint pjp, MeterRegistry registry) {
        return Counter.builder(TaskId.of(pjp) + ".success").tags(DEFAULT_TAGS.apply(pjp)).register(registry);
    }

    public static Counter successCounter(String className, String methodName, MeterRegistry registry) {
        return Counter.builder(TaskId.of(className, methodName) + ".success").tags("class", className, "method", methodName).register(registry);
    }

    public static Counter failureCounter(ProceedingJoinPoint pjp, String exceptionClassName, MeterRegistry registry) {
        return Counter.builder(TaskId.of(pjp) + ".failure").tags(DEFAULT_TAGS.apply(pjp)).tag("exception", exceptionClassName).register(registry);
    }

    public static Counter failureCounter(String className, String methodName, String exceptionClassName, MeterRegistry registry) {
        return Counter.builder(TaskId.of(className, methodName) + ".failure").tags("class", className, "method", methodName, "exception", exceptionClassName).register(registry);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy