package org.jboss.windup.config.furnace;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.jboss.forge.furnace.Furnace;
import org.ocpsoft.common.spi.ServiceLocator;
public class FurnaceServiceLocator implements ServiceLocator
{
@Override
public <T> Collection<Class<T>> locate(final Class<T> type)
{
List<Class<T>> result = new ArrayList<>();
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())
{
Set<Class<T>> types = furnace.getAddonRegistry().getExportedTypes(type);
result.addAll(types);
}
return result;
}
}