package org.dcache.gplazma.monitor;
import java.security.Principal;
import java.util.Set;
import org.dcache.gplazma.configuration.ConfigurationItemControl;
/**
* This class provides a mechanism to combine multiple LoginMonitor
* monitors so that all monitors see all events.
*/
public class CombinedLoginMonitor implements LoginMonitor
{
private final LoginMonitor[] _inner;
/**
* A convenience method for creating a new CombinedLoginMonitor instance.
*/
public static LoginMonitor of(LoginMonitor... monitors)
{
return new CombinedLoginMonitor(monitors);
}
public CombinedLoginMonitor(LoginMonitor... monitors)
{
_inner = monitors;
}
@Override
public void authBegins(Set<Object> publicCredentials,
Set<Object> privateCredentials, Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.authBegins(publicCredentials, privateCredentials,
principals);
}
}
@Override
public void authPluginBegins(String name, ConfigurationItemControl control,
Set<Object> publicCredentials, Set<Object> privateCredentials,
Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.authPluginBegins(name, control, publicCredentials,
privateCredentials, principals);
}
}
@Override
public void authPluginEnds(String name, ConfigurationItemControl control,
Result result, String error, Set<Object> publicCredentials,
Set<Object> privateCredentials, Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.authPluginEnds(name, control, result, error,
publicCredentials, privateCredentials, principals);
}
}
@Override
public void authEnds(Set<Principal> principals, Result result)
{
for(LoginMonitor monitor : _inner) {
monitor.authEnds(principals, result);
}
}
@Override
public void mapBegins(Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.mapBegins(principals);
}
}
@Override
public void mapPluginBegins(String name, ConfigurationItemControl control,
Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.mapPluginBegins(name, control, principals);
}
}
@Override
public void mapPluginEnds(String name, ConfigurationItemControl control,
Result result, String error, Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.mapPluginEnds(name, control, result, error, principals);
}
}
@Override
public void mapEnds(Set<Principal> principals, Result result)
{
for(LoginMonitor monitor : _inner) {
monitor.mapEnds(principals, result);
}
}
@Override
public void accountBegins(Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.accountBegins(principals);
}
}
@Override
public void accountPluginBegins(String name,
ConfigurationItemControl control, Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.accountPluginBegins(name, control, principals);
}
}
@Override
public void accountPluginEnds(String name,
ConfigurationItemControl control, Result result, String error,
Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.accountPluginEnds(name, control, result, error, principals);
}
}
@Override
public void accountEnds(Set<Principal> principals, Result result)
{
for(LoginMonitor monitor : _inner) {
monitor.accountEnds(principals, result);
}
}
@Override
public void sessionBegins(Set<Principal> principals)
{
for(LoginMonitor monitor : _inner) {
monitor.sessionBegins(principals);
}
}
@Override
public void sessionPluginBegins(String name,
ConfigurationItemControl control, Set<Principal> principals,
Set<Object> attributes)
{
for(LoginMonitor monitor : _inner) {
monitor.sessionPluginBegins(name, control, principals, attributes);
}
}
@Override
public void sessionPluginEnds(String name,
ConfigurationItemControl control, Result result, String error,
Set<Principal> principals, Set<Object> attributes)
{
for(LoginMonitor monitor : _inner) {
monitor.sessionPluginEnds(name, control, result, error,
principals, attributes);
}
}
@Override
public void sessionEnds(Set<Principal> principals, Set<Object> attributes,
Result result)
{
for(LoginMonitor monitor : _inner) {
monitor.sessionEnds(principals, attributes, result);
}
}
@Override
public void validationResult(Result result, String error)
{
for(LoginMonitor monitor : _inner) {
monitor.validationResult(result, error);
}
}
}