/// <summary>
 /// <c>GetComponentInfo</c> returns metadata about the variables/types (and optionally dialogs and mapping info)
 /// for the indicated template's interview.
 /// </summary>
 /// <param name="template">An instance of the Template class, for which you are requesting component information.</param>
 /// <param name="includeDialogs">Whether to include dialog and mapping information in the returned results.</param>
 /// <param name="logRef">A string to display in logs related to this request.</param>
 /// <returns>returns the list of variables and dialogs (if includeDialogs is true) associated with the <c>template</c> parameter</returns>
 public ComponentInfo GetComponentInfo(Template template, bool includeDialogs, string logRef)
 {
     string logStr = logRef == null ? string.Empty : logRef;
     if (template == null)
         throw new ArgumentNullException("template", string.Format(@"WebService.Services.GetComponentInfo: the ""template"" parameter passed in was null, logRef: {0}", logStr));
     ComponentInfo result;
     using (Proxy client = new Proxy(_endPointName))
     {
         string fileName = GetRelativePath(template.GetFullPath());
         result = client.GetComponentInfo(fileName, includeDialogs);
         SafeCloseClient(client, logRef);
     }
     return result;
 }