public static void Save(string interfaceDefinitionFilePath, InterfaceDefinitionData definitionData)
        {
            // Validate parameters
            if (interfaceDefinitionFilePath == null)
            {
                throw new ArgumentNullException("interfaceDefinitionFilePath", "The path of the interface definition file is required.");
            }
            if (definitionData == null)
            {
                throw new ArgumentNullException("definitionData", "The Interface Defintion data is required.");
            }

            InterfaceDefinitionDataController controller = new InterfaceDefinitionDataController(interfaceDefinitionFilePath);

            controller.SaveDefintion(interfaceDefinitionFilePath, definitionData);
        }
        /// <summary>
        /// Loads the data of an Interface definition.
        /// Can throw exceptions if the loading fails.
        /// </summary>
        /// <param name="interfaceDefinitionFilePath">the path of the XML file</param>
        /// <returns></returns>
        public static InterfaceDefinitionData Load(string interfaceDefinitionFilePath)
        {
            // Validate parameters
            if (interfaceDefinitionFilePath == null)
            {
                throw new ArgumentNullException("interfaceDefinitionFilePath", "The path of the interface definition file is required.");
            }
            if (File.Exists(interfaceDefinitionFilePath) == false)
            {
                throw new ArgumentException(String.Format("No interface definition found at {0}.", interfaceDefinitionFilePath), "interfaceDefinitionFilePath");
            }

            InterfaceDefinitionDataController controller = new InterfaceDefinitionDataController(interfaceDefinitionFilePath);

            InterfaceDefinitionData data = controller.LoadDefinition();

            // store the interface definition root directory path
            data.RootDirectoryPath = Path.GetDirectoryName(interfaceDefinitionFilePath);

            return(data);
        }