2022-05-24

Togglz with Kotlin: Problem to inject some dependency in my custom ActivationStrategy

I have defined the file that references my custom ActivationStrategy in META-INF/Services/ as explained by the Togglz library for custom strategy (https://www.togglz.org/documentation/activation-strategies.html), since I need to resolve whether or not it is activated through another logic that is in another Service. Now how do I inject this service that I need to consume? Since when trying the following:

@Component
class ActivationStrategyByProfile(private val profileService : ProfileService) : ActivationStrategy {

    override fun getId(): String {
        return ID
    }

    override fun getName(): String {
        return NAME
    }

    override fun isActive(
        featureState: FeatureState,
        user: FeatureUser?
    ): Boolean {
        
        val profileId = user?.name
        return profileService.validateProfile(profileId)
    }
    ...

My file in /META-INF/services/org.togglz.core.spi.ActivationStrategy contain:

com.saraza.application.config.ActivationStrategyByProfile

It returns the following error, mentioning that the reference that I have specified in the file, does not include parameters, I understand:

...ActivationStrategyByProfile Unable to get public no-arg constructor

How can I inject the dependency of my service? Can it be done by changing the extended file used by the Java ServiceLoader mechanism? Something like specifying the service as a parameter?



No comments:

Post a Comment