AbstractStandardXComponent extends AbstractXIdObject implements XComponent<StandardXClock.StandardTimePhase> { protected final void retrieveForeignData() { LOGGER.trace("begin {}.retrieveForeignData()", getClass() .getSimpleName()); for (final XBorder border : _borders) { final Map<XId, Map<XAddress, Object>> allData = border .getData(this); for (final XId targetId : allData.keySet()) { final Map<XAddress, Object> targetData = allData.get(targetId); for (final XAddress sourceAddress : targetData.keySet()) { addForeignData(targetId, sourceAddress, targetData.get(sourceAddress)); } } } LOGGER .trace("end {}.retrieveForeignData()", getClass().getSimpleName()); } protected  AbstractStandardXComponent(
            final XId id,
            final Set<XId> sourceIds,
            final Set<XId> targetIds); @Override final Set<XId> getSourceIds(); @Override final Set<XId> getTargetIds(); @Override final void addBorder(
            final XBorder border); @Override final void removeBorder(
            final XBorder border); @Override final void update(
            final XTime<StandardTimePhase> time); @Override String toString();  }
@Test public void testRetrieveForeignData() { final AbstractStandardXComponent component = new MockComponent(COMPONENT_ID, Collections.singleton(SOURCE_ID), Collections.singleton(TARGET_ID)); final XBorder border = new MockBorder((MockComponent) component); component.addBorder(border); component.retrieveForeignData(); }