package com.openedit.entermedia.scripts;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
public class CompositeHandler extends java.util.logging.Handler
{
protected List fieldChildren;
public List getChildren()
{
if (fieldChildren == null)
{
fieldChildren = new ArrayList();
}
return fieldChildren;
}
public void setChildren(List inChildren)
{
fieldChildren = inChildren;
}
public void publish(LogRecord inRecord)
{
for (Iterator iterator = getChildren().iterator(); iterator.hasNext();)
{
Handler handler = (Handler) iterator.next();
handler.publish(inRecord);
}
}
public void flush()
{
for (Iterator iterator = getChildren().iterator(); iterator.hasNext();)
{
Handler handler = (Handler) iterator.next();
handler.flush();
}
}
public void close() throws SecurityException
{
for (Iterator iterator = getChildren().iterator(); iterator.hasNext();)
{
Handler handler = (Handler) iterator.next();
handler.close();
}
}
public void addChild(Handler inScriptLogger)
{
//deal with Concurent Modification. Dont want getChildren() to fail mid way
synchronized (this)
{
List copy = new ArrayList(getChildren());
copy.remove(inScriptLogger);
copy.add(inScriptLogger);
setChildren(copy);
}
}
public void removeChild(Handler inScriptLogger)
{
synchronized (this)
{
List copy = new ArrayList(getChildren());
copy.remove(inScriptLogger);
setChildren(copy);
}
}
}