/// <summary> /// Gets the service key from service name. /// </summary> /// <param name="UDDIConnection">The UDDI connection.</param> /// <param name="sName">Name of the service.</param> /// <returns></returns> public static string GetServiceKey(UddiConnection UDDIConnection, string sName) { FindService findService = new FindService(sName); ServiceList bList = findService.Send(UDDIConnection); if (bList.ServiceInfos.Count > 0) { return(bList.ServiceInfos[0].ServiceKey); } return(String.Empty); }
/// <summary> /// Publica serviciul cu informatiile specificate in campurile corespunzatoare (daca nu exista deja). /// </summary> public void performPublish() { String businessName = txbBusinessName.Text.Trim(); String serviceName = txbServiceName.Text.Trim(); String accessPoint = txbAccessPoint.Text.Trim(); if (businessName == String.Empty || serviceName == String.Empty || accessPoint == String.Empty) { MessageBox.Show("All values must be set", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { FindBusiness findBusiness = new FindBusiness(businessName); findBusiness.FindQualifiers.Add(FindQualifier.ExactNameMatch); BusinessList businessList = findBusiness.Send(uddiConnection); if (0 == businessList.BusinessInfos.Count) { BusinessEntity newBusinessEntity = new BusinessEntity(businessName); BusinessService newBusinessService = new BusinessService(serviceName); newBusinessEntity.BusinessServices.Add(newBusinessService); BindingTemplate newBindingTemplate = new BindingTemplate(); newBindingTemplate.AccessPoint.Text = accessPoint; newBindingTemplate.AccessPoint.UrlType = UrlType.Http; selectOntologyForNewBindingTemplate(newBindingTemplate); newBusinessService.BindingTemplates.Add(newBindingTemplate); SaveBusiness saveNewBusiness = new SaveBusiness(newBusinessEntity); saveNewBusiness.Send(uddiConnection); } else { MessageBox.Show("Business already exists"); GetBusinessDetail getBusinessDetail = new GetBusinessDetail(businessList.BusinessInfos[0].BusinessKey); BusinessDetail businessDetail = getBusinessDetail.Send(uddiConnection); BusinessEntity oldBusinessEntity = businessDetail.BusinessEntities[0]; FindService findService = new FindService(serviceName); findService.FindQualifiers.Add(FindQualifier.ExactNameMatch); findService.BusinessKey = businessDetail.BusinessEntities[0].BusinessKey; ServiceList serviceList = findService.Send(uddiConnection); if (0 == serviceList.ServiceInfos.Count) { BusinessService newBusinessService = new BusinessService(serviceName); oldBusinessEntity.BusinessServices.Add(newBusinessService); BindingTemplate newBindingTemplate = new BindingTemplate(); newBindingTemplate.AccessPoint.Text = accessPoint; newBindingTemplate.AccessPoint.UrlType = UrlType.Http; selectOntologyForNewBindingTemplate(newBindingTemplate); newBusinessService.BindingTemplates.Add(newBindingTemplate); SaveBusiness saveOldBusiness = new SaveBusiness(oldBusinessEntity); saveOldBusiness.Send(uddiConnection); } else { MessageBox.Show("Service already exists"); GetServiceDetail getServiceDetail = new GetServiceDetail(serviceList.ServiceInfos[0].ServiceKey); ServiceDetail serviceDetail = getServiceDetail.Send(uddiConnection); BusinessService oldBusinessService = serviceDetail.BusinessServices[0]; foreach (BindingTemplate bindingTemplate in oldBusinessService.BindingTemplates) { if (bindingTemplate.AccessPoint.Text == accessPoint) { MessageBox.Show("Binding already exists"); return; } } BindingTemplate newBindingTemplate = new BindingTemplate(); newBindingTemplate.AccessPoint.Text = accessPoint; newBindingTemplate.AccessPoint.UrlType = UrlType.Http; selectOntologyForNewBindingTemplate(newBindingTemplate); oldBusinessService.BindingTemplates.Add(newBindingTemplate); SaveService saveOldService = new SaveService(oldBusinessService); saveOldService.Send(uddiConnection); } } MessageBox.Show("Publish successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (UddiException e) { MessageBox.Show("Uddi error: "+ e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception e){ MessageBox.Show("General exception: " + e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Cauta servicii pe baza informatiilor specificate pornind de la BusinessEntity. /// </summary> /// <param name="businessKey">Cheia BusinessEntity-ului in care se face cautarea</param> private List<WSInfo> findServices(string businessKey) { FindService findService = new FindService(serviceName); if (businessKey != String.Empty) { findService.BusinessKey = businessKey; } if (exactMatch){ findService.FindQualifiers.Add(FindQualifier.ExactNameMatch); } if (caseSensitive){ findService.FindQualifiers.Add(FindQualifier.CaseSensitiveMatch); } ServiceList serviceList = findService.Send(uddiConnection); if (0 == serviceList.ServiceInfos.Count) { return null; } List<WSInfo> list = new List<WSInfo>(); exploreServices(list,serviceList); if (list.Count != 0) { return list; } else { return null; } }
/// <summary> /// Face un update al serviciilor retinute. /// </summary> /// <param name="UDDIAddress">Adresa serverului UDDI (inquire)</param> /// <param name="functionalitiesData">Informatii esentiale despre toate functionalitatile existente, pe baza carora se face cautarea de servicii.</param> public void updateServices(string UDDIAddress, string[] functionalitiesData) { if (functionalitiesData != null) { try { this.services = new Hashtable(); UddiConnection uddiConnection = new UddiConnection(UDDIAddress); FindService findService = new FindService("%"); ServiceList serviceList = findService.Send(uddiConnection); foreach (ServiceInfo serviceInfo in serviceList.ServiceInfos) { GetServiceDetail getServiceDetail = new GetServiceDetail(serviceInfo.ServiceKey); ServiceDetail serviceDetail = getServiceDetail.Send(uddiConnection); foreach (BindingTemplate bindingTemplate in serviceDetail.BusinessServices[0].BindingTemplates) { Boolean stop = false; for (int k = 0; k < functionalitiesData.Length && !stop; k = k + 3) { for (int j = 0; j < bindingTemplate.TModelInstanceInfos.Count && !stop; ++j) { if (bindingTemplate.TModelInstanceInfos[j].TModelKey == functionalitiesData[k]) { stop = true; string functionalityName = functionalitiesData[k + 1]; string accessPoint = string.Empty; if (bindingTemplate.AccessPoint.Text.ToLower().EndsWith("asmx")) { accessPoint = bindingTemplate.AccessPoint.Text + "?wsdl"; } if (bindingTemplate.AccessPoint.Text.ToLower().EndsWith("wsdl")) { accessPoint = bindingTemplate.AccessPoint.Text; } if (accessPoint != string.Empty) { XMLElement root = XMLParser.parse(accessPoint); if (root != null) { if (root.containsElements("wsdl:service")) { XMLElement service = root.getElements("wsdl:service")[0]; if (service.containsAttribute("name")) { string serviceName = service.getAttribute("name"); string ontologyPath = functionalitiesData[k + 2]; if (service.containsAttribute("sawsdl:modelReference")) { string annotationPath = service.getAttribute("sawsdl:modelReference"); //specificAnnotationSAWSDL this.addSpecificService(serviceName, accessPoint, functionalityName, ontologyPath, annotationPath); } else { //defaultAnnotationFromOntology this.addDefaultService(serviceName, accessPoint, functionalityName, ontologyPath); } } } } } } } } } } this._lastError = null; } catch (UddiException e) { this._lastError = "Uddi error: " + e.Message; } catch (Exception e) { this._lastError = "General exception:" + e.Message; } } else { this._lastError = "There are no functionalities. Try a functionalities update."; } }