using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.Serialization;
using GitHub.Services.WebApi;
namespace GitHub.Build.WebApi
{
///
/// For back-compat with extensions that use the old Steps format instead of Process and Phases
///
[DataContract]
[EditorBrowsable(EditorBrowsableState.Never)]
public class BuildDefinitionReference3_2 : DefinitionReference
{
public BuildDefinitionReference3_2()
{
Type = DefinitionType.Build;
QueueStatus = DefinitionQueueStatus.Enabled;
}
///
/// The quality of the definition document (draft, etc.)
///
[DataMember(EmitDefaultValue = false, Name = "Quality")]
public DefinitionQuality? DefinitionQuality
{
get;
set;
}
///
/// The author of the definition.
///
[DataMember(EmitDefaultValue = false)]
public IdentityRef AuthoredBy
{
get;
[EditorBrowsable(EditorBrowsableState.Never)]
set;
}
///
/// A reference to the definition that this definition is a draft of, if this is a draft definition.
///
[DataMember(EmitDefaultValue = false, Name = "draftOf")]
public DefinitionReference ParentDefinition
{
get;
set;
}
///
/// The list of drafts associated with this definition, if this is not a draft definition.
///
[DataMember(EmitDefaultValue = false)]
public List Drafts
{
get
{
return m_drafts ?? (m_drafts = new List());
}
internal set
{
m_drafts = value;
}
}
///
/// The default queue for builds run against this definition.
///
[DataMember(EmitDefaultValue = false)]
public AgentPoolQueue Queue
{
get;
set;
}
///
/// The metrics for this definition.
///
public List Metrics
{
get
{
return m_metrics ?? (m_metrics = new List());
}
internal set
{
m_metrics = value;
}
}
///
/// The links to other objects related to this object.
///
public ReferenceLinks Links => m_links ?? (m_links = new ReferenceLinks());
[OnDeserialized]
private void OnDeserialized(StreamingContext context)
{
SerializationHelper.Copy(ref m_serializedMetrics, ref m_metrics, true);
}
[OnSerializing]
private void OnSerializing(StreamingContext context)
{
SerializationHelper.Copy(ref m_metrics, ref m_serializedMetrics);
}
[OnSerialized]
private void OnSerialized(StreamingContext context)
{
m_serializedMetrics = null;
}
[DataMember(Name = "Metrics", EmitDefaultValue = false)]
private List m_serializedMetrics;
[DataMember(Name = "_links", EmitDefaultValue = false)]
private ReferenceLinks m_links;
private List m_metrics;
private List m_drafts;
}
}