/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.common.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* Mock implementation of {@link AdditionalServicesRegistrationService} to simulate/handle listener registration in integration tests.
*
* @author Robert Mischke
*/
public class MockAdditionalServicesRegistrationService implements AdditionalServicesRegistrationService {
private Set<AdditionalServiceDeclaration> serviceDeclarations = new HashSet<AdditionalServiceDeclaration>();
@Override
public void registerAdditionalServicesProvider(AdditionalServicesProvider listenerProvider) {
for (AdditionalServiceDeclaration declaration : listenerProvider.defineAdditionalServices()) {
serviceDeclarations.add(declaration);
}
}
@Override
public void unregisterAdditionalServicesProvider(AdditionalServicesProvider listenerProvider) {
throw new UnsupportedOperationException("Not implemented yet");
}
/**
* Fetches all registered listeners for a given listener interface.
*
* @param <T> the class of the listener interface
* @param requestedClass the class of the listener interface
* @return a all listener implementations registered for the given interface
*/
@SuppressWarnings("unchecked")
public <T> Collection<T> getListeners(Class<T> requestedClass) {
Collection<T> listeners = new ArrayList<T>();
for (AdditionalServiceDeclaration declaration : serviceDeclarations) {
if (requestedClass == declaration.getServiceClass()) {
listeners.add((T) declaration.getImplementation());
}
}
return listeners;
}
}