package com.workshare.msnos.core.protocols.ip.resolvers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.workshare.msnos.core.protocols.ip.AddressResolver; public class CompositeIPResolver implements IPResolver { private static Logger log = LoggerFactory.getLogger(CompositeIPResolver.class); private final IPResolver[] solvers; public CompositeIPResolver(IPResolver... solvers) { this.solvers = solvers; } @Override public byte[] resolve(AddressResolver context) { for (IPResolver solver : solvers) { try { byte[] result = solver.resolve(context); if (result != null) return result; } catch (Exception ex) { if (log.isTraceEnabled()) log.trace("Ops! A resolver bombed :) I will ignore him", ex); else log.debug("Ops! A resolver bombed :) I will ignore him -> "+ex.getMessage()); } } return null; } }