package org.jboss.weld.bootstrap; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive; import org.jboss.weld.manager.BeanManagerImpl; /** * @author <a href="mailto:mluksa@redhat.com">Marko Luksa</a> */ public class BeanDeploymentArchiveMapping { private final Map<BeanDeploymentArchive, BeanDeployment> beanDeployments = new HashMap<BeanDeploymentArchive, BeanDeployment>(); private final ConcurrentMap<BeanDeploymentArchive, BeanManagerImpl> beanManagers = new ConcurrentHashMap<BeanDeploymentArchive, BeanManagerImpl>(); public void put(BeanDeploymentArchive bda, BeanDeployment beanDeployment) { beanDeployments.put(bda, beanDeployment); beanManagers.put(bda, beanDeployment.getBeanManager()); } public BeanDeployment getBeanDeployment(BeanDeploymentArchive bda) { return beanDeployments.get(bda); } public Collection<BeanDeployment> getBeanDeployments() { return beanDeployments.values(); } public ConcurrentMap<BeanDeploymentArchive, BeanManagerImpl> getBdaToBeanManagerMap() { return beanManagers; } boolean isNonuniqueIdentifierDetected() { Set<String> beanDeploymentArchiveIds = new HashSet<>(); Set<String> beanManagerIds = new HashSet<>(); for (Entry<BeanDeploymentArchive, BeanDeployment> entry : beanDeployments.entrySet()) { if (!beanDeploymentArchiveIds.add(entry.getKey().getId()) || !beanManagerIds.add(entry.getValue().getBeanManager().getId())) { return true; } } return false; } }