package com.intrbiz.bergamot.config.model;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.intrbiz.bergamot.config.resolver.ResolveWith;
import com.intrbiz.bergamot.config.resolver.stratergy.Coalesce;
import com.intrbiz.bergamot.config.resolver.stratergy.CoalesceEmptyString;
import com.intrbiz.bergamot.config.resolver.stratergy.MergeListUnique;
import com.intrbiz.configuration.CfgParameter;
import com.intrbiz.util.uuid.UUIDAdapter;
public abstract class NamedObjectCfg<P extends NamedObjectCfg<P>> extends TemplatedObjectCfg<P>
{
private static final long serialVersionUID = 1L;
private UUID id = null;
private String summary;
private String description;
private List<TagCfg> tags = new LinkedList<TagCfg>();
public NamedObjectCfg()
{
super();
}
@XmlAttribute(name = "id")
@XmlJavaTypeAdapter(UUIDAdapter.class)
@ResolveWith(Coalesce.class)
public UUID getId()
{
return id;
}
public void setId(UUID id)
{
this.id = id;
}
@XmlElement(name = "summary")
@ResolveWith(CoalesceEmptyString.class)
public String getSummary()
{
return summary;
}
public void setSummary(String summary)
{
this.summary = summary;
}
@XmlElement(name = "description")
@ResolveWith(CoalesceEmptyString.class)
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
@XmlElementRef(type = TagCfg.class)
@ResolveWith(MergeListUnique.class)
public List<TagCfg> getTags()
{
return tags;
}
public void setTags(List<TagCfg> tags)
{
this.tags = tags;
}
// override to specify the resolver
@Override
@ResolveWith(CoalesceEmptyString.class)
public String getName()
{
return super.getName();
}
@Override
@ResolveWith(MergeListUnique.class)
public List<CfgParameter> getParameters()
{
return super.getParameters();
}
}