pl.edu.icm.unity.engine.endpoint.EndpointFactoriesRegistry Maven / Gradle / Ivy
/*
* Copyright (c) 2013 ICM Uniwersytet Warszawski All rights reserved.
* See LICENCE.txt file for licensing information.
*/
package pl.edu.icm.unity.engine.endpoint;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import pl.edu.icm.unity.base.endpoint.EndpointTypeDescription;
import pl.edu.icm.unity.engine.api.endpoint.EndpointFactory;
/**
* Registry of available {@link EndpointFactory}ies
* @author K. Benedyczak
*/
@Component
public class EndpointFactoriesRegistry
{
private Map factoriesById = new HashMap();
private List factoriesDescriptions = new ArrayList();
@Autowired
public EndpointFactoriesRegistry(Optional> endpointFactories)
{
for (EndpointFactory factory: endpointFactories.orElseGet(ArrayList::new))
{
factoriesById.put(factory.getDescription().getName(), factory);
factoriesDescriptions.add(factory.getDescription());
}
}
public List getDescriptions()
{
List ret = new ArrayList(factoriesDescriptions.size());
ret.addAll(factoriesDescriptions);
return ret;
}
public EndpointFactory getById(String id)
{
return factoriesById.get(id);
}
}