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

com.quandoo.lib.reactivekafka.spring.OnAnnotationCondition.kt Maven / Gradle / Ivy

Go to download

A high level kafka consumer which wrapps the low level api of Kafka Reactor and provides a similar usability like Spring Kafka

There is a newer version: 1.5.1
Show newest version
/**
 *    Copyright (C) 2019 Quandoo GmbH ([email protected])
 *
 *       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 com.quandoo.lib.reactivekafka.spring

import org.reflections.Reflections
import org.reflections.scanners.MethodAnnotationsScanner
import org.springframework.boot.autoconfigure.condition.ConditionOutcome
import org.springframework.boot.autoconfigure.condition.SpringBootCondition
import org.springframework.context.annotation.ConditionContext
import org.springframework.context.annotation.ConfigurationCondition
import org.springframework.core.type.AnnotatedTypeMetadata

/**
 * @author Emir Dizdarevic
 * @since 1.1.0
 */
class OnAnnotationCondition : SpringBootCondition(), ConfigurationCondition {

    private val reflections = Reflections("", MethodAnnotationsScanner())

    @Suppress("UNCHECKED_CAST")
    override fun getMatchOutcome(context: ConditionContext, metadata: AnnotatedTypeMetadata): ConditionOutcome {
        val allAnnotationAttributes = metadata.getAnnotationAttributes(ConditionalOnAnnotation::class.java.name)

        val beansFound = reflections.getMethodsAnnotatedWith(allAnnotationAttributes?.get("annotation") as? Class).count()
        return if (beansFound > 0) ConditionOutcome.match() else ConditionOutcome.noMatch("Didn't find any bean annotated with @ConditionalOnAnnotation")
    }

    override fun getConfigurationPhase(): ConfigurationCondition.ConfigurationPhase {
        return ConfigurationCondition.ConfigurationPhase.REGISTER_BEAN
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy