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

com.github.nill14.utils.init.binding.target.ProviderInstanceBindingTarget Maven / Gradle / Ivy

The newest version!
package com.github.nill14.utils.init.binding.target;

import javax.inject.Provider;

import com.github.nill14.utils.init.binding.impl.BindingTarget;
import com.github.nill14.utils.init.binding.impl.BindingTargetVisitor;
import com.github.nill14.utils.init.inject.ReflectionUtils;
import com.google.common.reflect.TypeToken;

public class ProviderInstanceBindingTarget implements BindingTarget {
	
	private final Provider provider;
	private final TypeToken token;

	public ProviderInstanceBindingTarget(Provider provider) {
		this.provider = provider;
		token = ReflectionUtils.getProviderReturnTypeToken(provider);
	}
	
	public Provider getProvider() {
		return provider;
	}
	
	@SuppressWarnings("unchecked")
	public TypeToken> getProviderToken() {
		return TypeToken.of((Class>)provider.getClass());
	}
	
	public TypeToken getToken() {
		return token;
	}	
	
	@Override
	public  R accept(BindingTargetVisitor bindingTargetVisitor) {
		return bindingTargetVisitor.visit(this);
	}
	

	@Override
	public String toString() {
		return String.format("ProviderInstanceBindingTarget(%s)", provider);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy