package org.jboss.windup.config.furnace;
import java.util.Collection;
import java.util.HashSet;
import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.services.Imported;
import org.ocpsoft.common.spi.ServiceEnricher;
import org.ocpsoft.logging.Logger;
/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*/
public class FurnaceServiceEnricher implements ServiceEnricher
{
Logger log = Logger.getLogger(FurnaceServiceEnricher.class);
@Override
public <T> Collection<T> produce(final Class<T> type)
{
final Collection<T> result = new HashSet<>();
final Furnace furnace = FurnaceHolder.getFurnace();
// Furnace may be not available if the ServiceLoader is called before FurnaceHolder
// has received the Furnace PostConstruct event, so check for null and if it isStarted
if (furnace != null && furnace.getStatus().isStarted())
{
final Imported<T> services = furnace.getAddonRegistry().getServices(type);
for (final T service : services)
{
result.add(service);
}
}
return result;
}
@Override
public <T> void enrich(final T service)
{
// no-op. Furnace does not support enriching... directly.
}
}