package com.intrbiz.bergamot.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.intrbiz.configuration.Configuration;
import com.intrbiz.util.uuid.UUIDAdapter;
public abstract class WatcherCfg extends Configuration
{
private static final long serialVersionUID = 1L;
private BrokerCfg broker;
private UUID site;
private UUID location;
private List<EngineCfg> engines = new LinkedList<EngineCfg>();
public WatcherCfg()
{
super();
}
@XmlAttribute(name = "site")
@XmlJavaTypeAdapter(UUIDAdapter.class)
public UUID getSite()
{
return site;
}
public void setSite(UUID site)
{
this.site = site;
}
@XmlAttribute(name = "location")
public UUID getLocation()
{
return location;
}
public void setLocation(UUID location)
{
this.location = location;
}
public WatcherCfg(EngineCfg... engines)
{
super();
for (EngineCfg engine : engines)
{
this.engines.add(engine);
}
}
@XmlElementRef(type=EngineCfg.class)
public List<EngineCfg> getEngines()
{
return engines;
}
public void setEngines(List<EngineCfg> engines)
{
this.engines = engines;
}
@XmlElementRef(type = BrokerCfg.class)
public BrokerCfg getBroker()
{
return broker;
}
public void setBroker(BrokerCfg broker)
{
this.broker = broker;
}
@Override
public void applyDefaults()
{
// the broker
if (this.broker == null)
{
this.broker = new BrokerCfg("amqp://127.0.0.1", "bergamot", "bergamot");
}
// cascade
for (EngineCfg engine : this.engines)
{
engine.applyDefaults();
}
}
public static WatcherCfg read(File file) throws JAXBException, IOException
{
return Configuration.read(WatcherCfg.class, new FileInputStream(file));
}
}