blob: 925fa7a9ee5723855cdecccf71be8bb1c790326e [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2021 Boeing
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Boeing - initial API and implementation
**********************************************************************/
package org.eclipse.osee.client.integration.tests.integration.skynet.core;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.osee.framework.jdk.core.type.Pair;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
import org.eclipse.osee.framework.skynet.core.event.model.Sender;
/**
* @author Dominic Guss
*/
public class BranchEventListenerAsync implements IBranchEventListener {
private final List<Pair<Sender, BranchEvent>> eventPairs;
private static final long WAIT_TIME_MSEC = 1000L;
public BranchEventListenerAsync() {
eventPairs = new ArrayList<Pair<Sender, BranchEvent>>();
}
public synchronized void reset() {
eventPairs.clear();
}
@Override
public List<? extends IEventFilter> getEventFilters() {
return null;
}
@Override
public synchronized void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
eventPairs.add(new Pair<Sender, BranchEvent>(sender, branchEvent));
notify();
}
public synchronized List<Pair<Sender, BranchEvent>> getResults(BranchEventType branchEventType) throws InterruptedException {
while (eventNull(branchEventType)) {
wait(WAIT_TIME_MSEC);
}
return eventPairs;
}
private synchronized boolean eventNull(BranchEventType eventType) {
for (Pair<Sender, BranchEvent> eventPair : eventPairs) {
if (eventPair.getSecond().getEventType().equals(eventType)) {
return false;
}
}
return true;
}
}