/// <summary> /// Creates the service application. /// </summary> private void CreateApplication() { using (SPLongOperation operation = new SPLongOperation(this)) { operation.LeadingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "CreateOperationLeadingHtml", CultureInfo.CurrentCulture).ToString(); operation.TrailingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "CreateOperationTrailingHtml", CultureInfo.CurrentCulture).ToString(); operation.Begin(); try { ClubCloudService service = ClubCloudService.GetOrCreateService(); ClubCloudServiceProxy serviceProxy = ClubCloudServiceProxy.GetOrCreateServiceProxy(); // Create the application pool IisWebServiceApplicationPoolSection applicationPoolSectionCasted = this.applicationPoolSection as IisWebServiceApplicationPoolSection; SPIisWebServiceApplicationPool applicationPool = applicationPoolSectionCasted.GetOrCreateApplicationPool(); // Create the service application ClubCloudServiceApplication application = new ClubCloudServiceApplication( this.textBoxServiceName.Text.Trim(), service, applicationPool); application.Update(); application.Provision(); // Create the service application proxy ClubCloudServiceApplicationProxy proxy = new ClubCloudServiceApplicationProxy( string.Format( CultureInfo.CurrentCulture, HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ServiceApplicationProxyNameTemplate", CultureInfo.CurrentCulture).ToString(), this.textBoxServiceName.Text.Trim()), serviceProxy, application.Uri); proxy.Update(); proxy.Provision(); if (this.checkBoxIncludeInDefaultProxy.Checked) { SPServiceApplicationProxyGroup group = SPServiceApplicationProxyGroup.Default; group.Add(proxy); group.Update(); } operation.EndScript("window.frameElement.commitPopup();"); } catch (Exception ex) { SPUtility.TransferToErrorPage(ex.ToString()); } } }
/// <summary> /// This method gets invoked when the command is called. /// </summary> protected override void InternalProcessRecord() { SPServiceApplicationProxy resolvedProxy = null; ClubCloudServiceApplicationProxy castedProxy = null; resolvedProxy = this.Identity.Read(); if (resolvedProxy == null) { this.ThrowTerminatingError(new InvalidOperationException("No service application proxy was found."), ErrorCategory.InvalidOperation, this); } castedProxy = resolvedProxy as ClubCloudServiceApplicationProxy; if (castedProxy == null) { this.ThrowTerminatingError(new InvalidOperationException("The service application proxy was not of the correct type."), ErrorCategory.InvalidOperation, this); } if (this.ShouldProcess(castedProxy.Name)) { if (!string.IsNullOrEmpty(this.Name) && (!string.Equals(this.Name.Trim(), castedProxy.Name, StringComparison.OrdinalIgnoreCase))) { // Get the service proxy and check for duplicate name ClubCloudServiceProxy serviceProxy = SPFarm.Local.ServiceProxies.GetValue <ClubCloudServiceProxy>(); SPServiceApplicationProxy duplicateProxy = serviceProxy.ApplicationProxies[this.Name.Trim()]; if (duplicateProxy != null) { this.ThrowTerminatingError(new InvalidOperationException("There is already a service application proxy with that name."), ErrorCategory.InvalidOperation, this); } castedProxy.Name = this.Name.Trim(); castedProxy.Update(); } if (this.DefaultProxyGroup.IsPresent) { SPServiceApplicationProxyGroup group = SPServiceApplicationProxyGroup.Default; if (this.DefaultProxyGroup.ToBool()) { group.Add(castedProxy); } else { group.Remove(castedProxy.Id); } } } }
/// <summary> /// This method gets invoked when the command is called /// </summary> protected override void InternalProcessRecord() { Uri applicationUri = null; SPServiceApplication resolvedApplication = null; ClubCloudServiceApplication castedApplication = null; if (this.ServiceApplication == null && string.IsNullOrEmpty(this.Uri)) { this.ThrowTerminatingError(new InvalidOperationException("No service application or Uri was provided."), ErrorCategory.InvalidOperation, this); } if (this.ServiceApplication != null) { resolvedApplication = this.ServiceApplication.Read(); if (resolvedApplication == null) { this.ThrowTerminatingError(new InvalidOperationException("Service application not found."), ErrorCategory.InvalidOperation, this); } castedApplication = resolvedApplication as ClubCloudServiceApplication; if (castedApplication == null) { this.ThrowTerminatingError(new InvalidOperationException("Service application was not of the correct type."), ErrorCategory.InvalidOperation, this); } applicationUri = castedApplication.Uri; if (string.IsNullOrEmpty(this.Name)) { this.Name = castedApplication.Name + " Proxy"; } } else { applicationUri = new Uri(this.Uri); } if (this.ShouldProcess(this.Name)) { // Ensure the service exists ClubCloudService.GetOrCreateService(); // Ensure the proxy exists ClubCloudServiceProxy serviceProxy = ClubCloudServiceProxy.GetOrCreateServiceProxy(); // Create the service application proxy ClubCloudServiceApplicationProxy proxy = new ClubCloudServiceApplicationProxy(this.Name, serviceProxy, applicationUri); proxy.Update(); proxy.Provision(); if (this.DefaultProxyGroup.ToBool()) { SPServiceApplicationProxyGroup group = SPServiceApplicationProxyGroup.Default; group.Add(proxy); group.Update(); } this.WriteObject(proxy); } }