package ru.vyarus.dropwizard.guice.module.context.info.impl;
import com.google.common.collect.Sets;
import io.dropwizard.Application;
import ru.vyarus.dropwizard.guice.module.context.ConfigItem;
import ru.vyarus.dropwizard.guice.module.context.info.ItemInfo;
import java.util.Set;
/**
* Item info implementation.
*
* @author Vyacheslav Rusakov
* @since 06.07.2016
*/
public class ItemInfoImpl implements ItemInfo {
private final ConfigItem itemType;
private final Class<?> type;
private final Set<Class<?>> registeredBy = Sets.newLinkedHashSet();
private Class<?> registrationScope;
private int registrationAttempts;
public ItemInfoImpl(final ConfigItem itemType, final Class<?> type) {
this.itemType = itemType;
this.type = type;
}
@Override
public ConfigItem getItemType() {
return itemType;
}
@Override
public Class<?> getType() {
return type;
}
@Override
public Set<Class<?>> getRegisteredBy() {
return registeredBy;
}
@Override
public int getRegistrationAttempts() {
return registrationAttempts;
}
@Override
public boolean isRegistered() {
return !registeredBy.isEmpty();
}
@Override
public boolean isRegisteredDirectly() {
return getRegisteredBy().contains(Application.class);
}
@Override
public Class<?> getRegistrationScope() {
return registrationScope;
}
public void countRegistrationAttempt() {
registrationAttempts++;
}
public void setRegistrationScope(final Class<?> registrationScope) {
this.registrationScope = registrationScope;
}
@Override
public String toString() {
return itemType.name() + " " + type.getSimpleName();
}
}