package org.atricore.idbus.idojos.virtualidentitystore.rule; import java.util.Collection; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.atricore.idbus.idojos.virtualidentitystore.BindMappingRule; import org.atricore.idbus.idojos.virtualidentitystore.BindOutcome; import org.atricore.idbus.idojos.virtualidentitystore.BaseBindMappingRule; /** * Returns successful bind outcome if binding was successful * on any source. * * @org.apache.xbean.XBean element="bind-on-any-source" */ public class SuccessfulBindOnAnySource extends BaseBindMappingRule implements BindMappingRule { private static final Log logger = LogFactory.getLog(SuccessfulBindOnAnySource.class); public BindOutcome join(Collection<BindOutcome> selectedOutcomes) { BindOutcome jointOutcome = null; for (Iterator<BindOutcome> selectedOutcomesIterator = selectedOutcomes.iterator(); selectedOutcomesIterator.hasNext();) { BindOutcome selectedOutcome = selectedOutcomesIterator.next(); if (selectedOutcome.isSuccessful()) { jointOutcome = selectedOutcome; break; } } if (jointOutcome == null && selectedOutcomes != null && selectedOutcomes.size() > 0) { jointOutcome = selectedOutcomes.iterator().next(); } return jointOutcome; } }