public void BasicTest()
        {
            string applicationName = string.Format("application-{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
            string description = applicationName + "-desc";
            ApplicationObject applicationObject = new ApplicationObject
            {
                Name = applicationName,
                Description = description
            };

            IApplicationApi applicationApi = SpringContext.Current.GetObject<IApplicationApi>();
            applicationApi.Save(applicationObject);

            Assert.IsTrue(applicationApi.Exists(applicationName), "The application should exist");

            applicationObject = applicationApi.Get(applicationName);
            Assert.AreEqual(applicationName, applicationObject.Name, "The application name should be the same as created.");
            Assert.AreEqual(description, applicationObject.Description, "The application description should be the same as created.");

            applicationObject = applicationApi.Get(applicationObject.Id);
            Assert.AreEqual(applicationName, applicationObject.Name, "The application name should be the same as created.");
            Assert.AreEqual(description, applicationObject.Description, "The application description should be the same as created.");

            // update application description
            description = "modified description";
            applicationObject.Description = description;
            applicationApi.Save(applicationObject);

            // re-check application properties
            applicationObject = applicationApi.Get(applicationName);
            Assert.AreEqual(applicationName, applicationObject.Name);

            applicationObject = applicationApi.Get(applicationObject.Id);
            Assert.AreEqual(applicationName, applicationObject.Name);

            // update application name
            string modifiedApplicationName = string.Format("App-{0}", Guid.NewGuid());
            applicationObject.Name = modifiedApplicationName;
            applicationApi.Save(applicationObject);

            Assert.IsFalse(applicationApi.Exists(applicationName), "The original application name should not exist.");
            Assert.IsNull(applicationApi.Get(applicationName), "The original application name should not exist.");
            Assert.IsTrue(applicationApi.Exists(modifiedApplicationName), "The modified application name should exist.");
        }
        /// <summary>
        /// Get the copy of current object.
        /// </summary>
        /// <returns></returns>
        public ApplicationObject Clone()
        {
            ApplicationObject copy = new ApplicationObject
            {
                Id = this.Id,
                Name = this.Name,
                Description = this.Description,
                ExtensionDataTypeId = this.ExtensionDataTypeId
            };

            this.ClonePropertiesTo(copy);
            return copy;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ApplicationInstaller"/> class.
 /// </summary>
 /// <param name="applicationApi">The application API.</param>
 /// <param name="applicationObjectTemplate">The application object template.</param>
 public ApplicationInstaller(IApplicationApi applicationApi, ApplicationObject applicationObjectTemplate)
 {
     this.applicationApi = applicationApi;
     this.applicationObjectTemplate = applicationObjectTemplate;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="applicationApi">Application API</param>
 public ApplicationInstaller(IApplicationApi applicationApi)
 {
     this.applicationApi = applicationApi;
     this.applicationObjectTemplate = new ApplicationObject();
 }