// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricHandler.java
// public interface MetricHandler {
// 
//     void handle(MetricType type, String name, long tokens, List<MetricTagResult> tags);
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricTagResult.java
// public class MetricTagResult {
// 
// 	private String key;
// 	
// 	private String value;
// 	
// 	private List<MetricType> types;
// 
// 	public MetricTagResult(String key, String value, List<MetricType> types) {
// 		this.key = key;
// 		this.value = value;
// 		this.setTypes(types);
// 	}
// 
// 	public String getKey() {
// 		return key;
// 	}
// 
// 	public void setKey(String key) {
// 		this.key = key;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public List<MetricType> getTypes() {
// 		return types;
// 	}
// 
// 	public void setTypes(List<MetricType> types) {
// 		this.types = types;
// 	}
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricType.java
// public enum MetricType {
// 
// 	CONSUMED_COUNTER,
// 	REJECTED_COUNTER
// }


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricHandler;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricTagResult;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricType;
import io.micrometer.core.instrument.Metrics;

package com.giffing.bucket4j.spring.boot.starter.config.metrics.actuator;





@Component
@Primary

// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricHandler.java
// public interface MetricHandler {
// 
//     void handle(MetricType type, String name, long tokens, List<MetricTagResult> tags);
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricTagResult.java
// public class MetricTagResult {
// 
// 	private String key;
// 	
// 	private String value;
// 	
// 	private List<MetricType> types;
// 
// 	public MetricTagResult(String key, String value, List<MetricType> types) {
// 		this.key = key;
// 		this.value = value;
// 		this.setTypes(types);
// 	}
// 
// 	public String getKey() {
// 		return key;
// 	}
// 
// 	public void setKey(String key) {
// 		this.key = key;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public List<MetricType> getTypes() {
// 		return types;
// 	}
// 
// 	public void setTypes(List<MetricType> types) {
// 		this.types = types;
// 	}
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricType.java
// public enum MetricType {
// 
// 	CONSUMED_COUNTER,
// 	REJECTED_COUNTER
// }


// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/metrics/actuator/Bucket4jMetricHandler.java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricHandler;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricTagResult;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricType;
import io.micrometer.core.instrument.Metrics;

package com.giffing.bucket4j.spring.boot.starter.config.metrics.actuator;





@Component
@Primary

public class Bucket4jMetricHandler implements MetricHandler {
