/*
* Copyright 2010 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.sessions.events;
import java.util.ArrayList;
import java.util.List;
import ome.conditions.SecurityViolation;
import ome.model.IObject;
import ome.services.sessions.SessionManager;
import ome.util.messages.InternalMessage;
/**
* {@link InternalMessage} published by the {@link SessionManager} when
* setSecurityContext() is called.
*
* @author Josh Moore, josh at glencoesoftware.com
* @since Beta4.2
*/
public class ChangeSecurityContextEvent extends InternalMessage {
final List<String> cancellations = new ArrayList<String>();
final private String sessionUuid;
final private IObject previous;
final private IObject next;
public ChangeSecurityContextEvent(Object source, String sessionUuid,
IObject previous, IObject next) {
super(source);
this.sessionUuid = sessionUuid;
this.previous = previous;
this.next = next;
}
private static final long serialVersionUID = 1L;
public synchronized String getUuid() {
return sessionUuid;
}
public synchronized void cancel(String message) {
cancellations.add(message);
}
public synchronized void throwIfCancelled() {
if (cancellations.size() > 0) {
StringBuilder sb = new StringBuilder();
sb.append("SecurityContext change cancelled:\n");
for (String str : cancellations) {
sb.append(str);
sb.append("\n");
}
throw new SecurityViolation(sb.toString());
}
}
}