/** * Constructs the bindingKey based on the bindingKeyFormat specified in the properties. When no * bindingKeyFormat is specific the default format of uddi:${keyDomain}:${nodeName}-${serviceName}-{portName} is used. * * @param properties * @param serviceName * @param portName * @return the bindingKey */ public static String getBindingKey(Properties properties, QName serviceName, String portName, Uri bindingUrl) { Properties tempProperties = new Properties(); tempProperties.putAll(properties); tempProperties.put("serviceName", serviceName.getLocalPart()); tempProperties.put("portName", portName); int port = bindingUrl.Port; if (port < 0) { if ("http".Equals(bindingUrl.Scheme, StringComparison.CurrentCultureIgnoreCase)) { port = 80; } else if ("https".Equals(bindingUrl.Scheme)) { port = 443; } } if (!tempProperties.containsKey("serverPort")) tempProperties.put("serverPort", port.ToString()); //Constructing the binding Key String keyFormat = properties.getProperty(Property.BINDING_KEY_FORMAT, DEFAULT_BINDING_KEY_FORMAT); String bindingKey = TokenResolver.replaceTokens(keyFormat, tempProperties).ToLower(); return bindingKey; }
protected bindingTemplate createWADLBinding(QName serviceQName, String portName, Uri serviceUrl, resources res) { bindingTemplate bindingTemplate = new bindingTemplate(); // Set BusinessService Key bindingTemplate.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); List <tModelInstanceInfo> items = new List <tModelInstanceInfo>(); if (serviceUrl != null) { // Set AccessPoint accessPoint accessPoint = new accessPoint(); accessPoint.useType = (AccessPointType.endPoint.ToString()); accessPoint.Value = ((serviceUrl.ToString())); bindingTemplate.Item = (accessPoint); // Set Binding Key String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceQName, portName, serviceUrl); bindingTemplate.bindingKey = (bindingKey); bindingTemplate.description = Common2UDDI.mapdescription(getDescription(res.doc), lang).ToArray(); // reference wsdl:binding tModel tModelInstanceInfo tModelInstanceInfoBinding = new tModelInstanceInfo(); tModelInstanceInfoBinding.tModelKey = (keyDomainURI + "binding"); instanceDetails id = new instanceDetails(); id.instanceParms = portName; tModelInstanceInfoBinding.instanceDetails = (id); tModelInstanceInfoBinding.description = Common2UDDI.mapdescription("The binding that this endpoint implements. " + bindingTemplate.description[0].Value + " The instanceParms specifies the port local name.", lang).ToArray(); items.Add(tModelInstanceInfoBinding); tModelInstanceInfo tModelInstanceInfoPortType = new tModelInstanceInfo(); tModelInstanceInfoPortType.tModelKey = (keyDomainURI + "rest"); tModelInstanceInfoPortType.description = Common2UDDI.mapdescription("The wadl:Resource:base implements.", lang).ToArray(); items.Add(tModelInstanceInfoPortType); } bindingTemplate.tModelInstanceDetails = items.ToArray(); return(bindingTemplate); }
/** * Creates a UDDI Business Service. * * @param serviceQName This must be specified to identify the namespace of * the service, which is used to set the service uddi key * @param waldDefinition * @return */ public businessService createBusinessService(QName serviceQName, application wadlDefinition) { log.debug("Constructing Service UDDI Information for " + serviceQName); businessService service = new businessService(); // BusinessKey service.businessKey = (businessKey); // ServiceKey service.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); // Description String serviceDescription = properties.getProperty(Property.SERVICE_DESCRIPTION, Property.DEFAULT_SERVICE_DESCRIPTION); // Override with the service description from the WSDL if present bool lengthwarn = false; List <description> ds = new List <description>(); if (wadlDefinition.doc != null) { for (int i = 0; i < wadlDefinition.doc.Length; i++) { String locallang = lang; description description = new description(); if (wadlDefinition.doc[i].lang != null) { locallang = (wadlDefinition.doc[i].lang); } if (locallang.Length > UDDIConstants.MAX_xml_lang_length) { lengthwarn = true; locallang = (locallang.Substring(0, UDDIConstants.MAX_xml_lang_length - 1)); } StringBuilder sb = new StringBuilder(); sb.Append(wadlDefinition.doc[i].title).Append(" "); sb.Append(ContentToString(wadlDefinition.doc[i].Any)); ds.AddRange(Common2UDDI.mapdescription(sb.ToString(), locallang)); } } else { ds.AddRange(Common2UDDI.mapdescription(serviceDescription, lang)); } service.description = ds.ToArray(); // Service name name sName = new name(); sName.lang = (lang); if (wadlDefinition.doc != null && wadlDefinition.doc.Length > 0) { sName.Value = (wadlDefinition.doc[0].title); } if (sName.Value == null) { sName.Value = (serviceQName.getLocalPart()); } service.name = new name[] { sName }; categoryBag cb = new categoryBag(); List <keyedReference> krs = new List <keyedReference>(); String ns = serviceQName.getNamespaceURI(); if (ns != null && ns != "") { keyedReference namespaceReference = new keyedReference( "uddi:uddi.org:xml:namespace", "uddi-org:xml:namespace", ns); krs.Add(namespaceReference); } keyedReference serviceReference = new keyedReference( "uddi:uddi.org:wadl:types", "uddi-org:wadl:types", "service"); krs.Add(serviceReference); keyedReference localNameReference = new keyedReference( "uddi:uddi.org:xml:localname", "uddi-org:xml:localName", serviceQName.getLocalPart()); krs.Add(localNameReference); cb.Items = krs.ToArray(); service.categoryBag = (cb); if (wadlDefinition.resources != null) { for (int i = 0; i < wadlDefinition.resources.Length; i++) { bindingTemplate bindingTemplate = createWADLBinding(serviceQName, getDocTitle(wadlDefinition.resources[i].doc), new Uri(wadlDefinition.resources[i].@base), wadlDefinition.resources[i]); service.bindingTemplates = new bindingTemplate[] { bindingTemplate }; } } if (lengthwarn) { log.warn("Some object descriptions are longer than the maximum allowed by UDDI and have been truncated."); } return(service); }
/// <summary> /// /// Creates a UDDI Business Service. /// /// </summary> /// <param name="serviceQName"></param> /// <param name="wsdlDefinition"></param> /// <returns></returns> private businessService createBusinessService(QName serviceQName, xmlsoap.schemas.easyWsdl.tDefinitions wsdlDefinition) { log.debug("Constructing Service UDDI Information for " + serviceQName); businessService service = new businessService(); // BusinessKey service.businessKey = (businessKey); // ServiceKey service.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); // Description String serviceDescription = ""; // Override with the service description from the WSDL if present org.xmlsoap.schemas.easyWsdl.tService svc = wsdlDefinition.getService(serviceQName); if (svc != null && svc.documentation != null) { HashSet<XmlNode>.Enumerator it = svc.documentation.Any.GetEnumerator(); while (it.MoveNext()) { if (it.Current.Value != null) { serviceDescription += it.Current.Value; } } } if (String.IsNullOrEmpty(serviceDescription)) { serviceDescription = properties.getProperty(Property.SERVICE_DESCRIPTION, Property.DEFAULT_SERVICE_DESCRIPTION); } service.description = Common2UDDI.mapdescription(serviceDescription, lang).ToArray(); // Service name name sName = new name(); sName.lang = (lang); sName.Value = (serviceQName.getLocalPart()); service.name = new name[] { sName }; categoryBag categoryBag = new categoryBag(); String ns = serviceQName.getNamespaceURI(); List<keyedReference> cbitems = new List<keyedReference>(); if (ns != null && ns != "") { keyedReference namespaceReference = newKeyedReference( "uddi:uddi.org:xml:namespace", "uddi-org:xml:namespace", ns); cbitems.Add(namespaceReference); } keyedReference serviceReference = newKeyedReference( "uddi:uddi.org:wsdl:types", "uddi-org:wsdl:types", "service"); cbitems.Add(serviceReference); keyedReference localNameReference = newKeyedReference( "uddi:uddi.org:xml:localname", "uddi-org:xml:localName", serviceQName.getLocalPart()); cbitems.Add(localNameReference); categoryBag.Items = (object[])cbitems.ToArray(); service.categoryBag = categoryBag; return service; }
public String unRegisterBusinessService(QName serviceName, String portName, Uri serviceUrl) { String serviceKey = UDDIKeyConvention.getServiceKey(properties, serviceName.getLocalPart()); businessService service = lookupService(serviceKey); bool isRemoveServiceIfNoTemplates = true; String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceName, portName, serviceUrl); //check if this bindingKey is in the service's binding templates foreach (bindingTemplate bindingTemplate in service.bindingTemplates) { if (bindingKey.Equals(bindingTemplate.bindingKey)) { clerk.unRegisterBinding(bindingKey); //if this is the last binding for this service, and if (service.bindingTemplates.Length == 1 && isRemoveServiceIfNoTemplates) { clerk.unRegisterService(serviceKey); if (bindingTemplate.tModelInstanceDetails != null) { for (int i = 0; i < bindingTemplate.tModelInstanceDetails.Length; i++) { //foreach (tModelInstanceInfo tmi in bindingTemplate.tModelInstanceDetails)) { String tModelKey = bindingTemplate.tModelInstanceDetails[i].tModelKey; tModelDetail tModelDetail = clerk.getTModelDetail(tModelKey); //delete all tModels assuming they are the portType and Binding tModels. if (tModelDetail.tModel != null && tModelDetail.tModel.Length > 0) { for (int k = 0; k < tModelDetail.tModel.Length; k++) { clerk.unRegisterTModel(tModelDetail.tModel[k].tModelKey); } } } } } } } return serviceKey; }
public ServiceRegistrationResponse registerBusinessService(QName serviceQName, String portName, Uri serviceUrl, org.xmlsoap.schemas.easyWsdl.tDefinitions wsdlDefinition) { String genericWSDLURL = serviceUrl.ToString(); //TODO maybe point to repository version ServiceRegistrationResponse response = new ServiceRegistrationResponse(); String serviceKey = UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart()); businessService businessService = lookupService(serviceKey); if (businessService == null) { List<tModel> tModels = new List<tModel>(); // Create the PortType tModels Dictionary <QName, org.xmlsoap.schemas.easyWsdl.tPortType> portTypes = (Dictionary<QName, org.xmlsoap.schemas.easyWsdl.tPortType>)wsdlDefinition.getAllPortTypes(); tModels.AddRange(createWSDLPortTypeTModels(genericWSDLURL, portTypes)); // Create the Binding tModels Dictionary<QName, org.xmlsoap.schemas.easyWsdl.tBinding> bindings = (Dictionary<QName, org.xmlsoap.schemas.easyWsdl.tBinding>)wsdlDefinition.getAllBindings(); tModels.AddRange(createWSDLBindingTModels(genericWSDLURL, bindings)); // Register these tModels foreach (tModel tModel in tModels) { clerk.register(tModel); } // Service businessService = createBusinessService(serviceQName, wsdlDefinition); // Register this Service clerk.register(businessService); } //Add the BindingTemplate to this Service bindingTemplate binding = createWSDLBinding(serviceQName, portName, serviceUrl, wsdlDefinition); // Register BindingTemplate if (binding.Item != null) { clerk.register(binding); if (businessService.bindingTemplates == null) { businessService.bindingTemplates = new bindingTemplate[] { binding }; } else { List<bindingTemplate> bts = new List<bindingTemplate>(); for (int i = 0; i < businessService.bindingTemplates.Length; i++) bts.Add(businessService.bindingTemplates[i]); bts.Add(binding); businessService.bindingTemplates = bts.ToArray(); } response.setBindingKey(binding.bindingKey); } response.setBusinessService(businessService); return response; }
private bindingTemplate createWSDLBinding(QName serviceQName, string portName, Uri serviceUrl, xmlsoap.schemas.easyWsdl.tDefinitions wsdlDefinition) { bindingTemplate bindingTemplate = new bindingTemplate(); // Set BusinessService Key bindingTemplate.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); if (serviceUrl != null) { // Set AccessPoint accessPoint accessPoint = new accessPoint(); accessPoint.useType = (AccessPointType.endPoint.ToString()); accessPoint.Value = (urlLocalizer.rewrite(serviceUrl)); bindingTemplate.Item = (accessPoint); // Set Binding Key String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceQName, portName, serviceUrl); bindingTemplate.bindingKey = (bindingKey); } org.xmlsoap.schemas.easyWsdl.tService service = wsdlDefinition.getService(serviceQName); if (service != null) { List<tModelInstanceInfo> tii = new List<tModelInstanceInfo>(); org.xmlsoap.schemas.easyWsdl.tPort port = service.getPort(portName); if (port != null) { if (serviceUrl == null) { if (port.Any != null) { HashSet<XmlElement>.Enumerator it = port.Any.GetEnumerator(); while (it.MoveNext()) { String location = null; if (it.Current.LocalName.Equals("address", StringComparison.CurrentCultureIgnoreCase) && it.Current.NamespaceURI.Equals("http://schemas.xmlsoap.org/wsdl/soap/", StringComparison.CurrentCultureIgnoreCase)) { location = it.Current.GetAttribute("location"); } else if (it.Current.LocalName.Equals("address", StringComparison.CurrentCultureIgnoreCase) && it.Current.NamespaceURI.Equals("http://schemas.xmlsoap.org/wsdl/http/", StringComparison.CurrentCultureIgnoreCase)) { location = it.Current.GetAttribute("location"); } else if (it.Current.LocalName.Equals("address", StringComparison.CurrentCultureIgnoreCase) && it.Current.NamespaceURI.Equals("http://schemas.xmlsoap.org/wsdl/soap12/", StringComparison.CurrentCultureIgnoreCase)) { location = it.Current.GetAttribute("location"); } if (location != null) { try { Uri locationURI = new Uri(location); accessPoint accessPoint = new accessPoint(); accessPoint.useType = (AccessPointType.endPoint.ToString()); accessPoint.Value = (urlLocalizer.rewrite(locationURI)); bindingTemplate.Item = (accessPoint); // Set Binding Key String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceQName, portName, locationURI); bindingTemplate.bindingKey = (bindingKey); break; } catch (Exception e) { log.error("", e); } } } } } XmlQualifiedName bx = port.binding; org.xmlsoap.schemas.easyWsdl.tBinding bindingelement = wsdlDefinition.getBinding(bx); // Set the Binding Description String bindingDescription = ""; // Override with the service description from the WSDL if present if (bindingelement != null && bindingelement.documentation != null && bindingelement.documentation.Any != null) { HashSet<XmlNode>.Enumerator it = bindingelement.documentation.Any.GetEnumerator(); while (it.MoveNext()) { bindingDescription += it.Current.Value; } } if (String.IsNullOrEmpty(bindingDescription)) bindingDescription = properties.getProperty(Property.BINDING_DESCRIPTION, Property.DEFAULT_BINDING_DESCRIPTION); ; bindingTemplate.description = Common2UDDI.mapdescription(bindingDescription, lang).ToArray(); // reference wsdl:binding tModel tModelInstanceInfo tModelInstanceInfoBinding = new tModelInstanceInfo(); tModelInstanceInfoBinding.tModelKey = (keyDomainURI + bindingelement.name); instanceDetails instanceDetails = new instanceDetails(); instanceDetails.instanceParms = (portName); tModelInstanceInfoBinding.instanceDetails = (instanceDetails); tModelInstanceInfoBinding.description = Common2UDDI.mapdescription("The wsdl:binding that this wsdl:port implements. " + bindingDescription + " The instanceParms specifies the port local name.", lang).ToArray(); tii.Add(tModelInstanceInfoBinding); // reference wsdl:portType tModel org.xmlsoap.schemas.easyWsdl.tPortType portType = wsdlDefinition.getPortType(bindingelement.type); tModelInstanceInfo tModelInstanceInfoPortType = new tModelInstanceInfo(); tModelInstanceInfoPortType.tModelKey = (keyDomainURI + portType.name); String portTypeDescription = ""; if (portType.documentation != null && portType.documentation.Any != null) { HashSet<XmlNode>.Enumerator it = portType.documentation.Any.GetEnumerator(); while (it.MoveNext()) { portTypeDescription += it.Current.Value; } } tModelInstanceInfoPortType.description = Common2UDDI.mapdescription("The wsdl:portType that this wsdl:port implements." + portTypeDescription,lang).ToArray(); tii.Add(tModelInstanceInfoPortType); bindingTemplate.tModelInstanceDetails = tii.ToArray(); } else { log.error("Could not find Port with portName: " + portName); } } else { log.error("Could not find Service with serviceName: " + serviceQName.getLocalPart()); } return bindingTemplate; }
protected bindingTemplate createWADLBinding(QName serviceQName, String portName, Uri serviceUrl, resources res) { bindingTemplate bindingTemplate = new bindingTemplate(); // Set BusinessService Key bindingTemplate.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); List<tModelInstanceInfo> items = new List<tModelInstanceInfo>(); if (serviceUrl != null) { // Set AccessPoint accessPoint accessPoint = new accessPoint(); accessPoint.useType = (AccessPointType.endPoint.ToString()); accessPoint.Value = ((serviceUrl.ToString())); bindingTemplate.Item = (accessPoint); // Set Binding Key String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceQName, portName, serviceUrl); bindingTemplate.bindingKey = (bindingKey); bindingTemplate.description = Common2UDDI.mapdescription(getDescription(res.doc), lang).ToArray(); // reference wsdl:binding tModel tModelInstanceInfo tModelInstanceInfoBinding = new tModelInstanceInfo(); tModelInstanceInfoBinding.tModelKey = (keyDomainURI + "binding"); instanceDetails id = new instanceDetails(); id.instanceParms= portName ; tModelInstanceInfoBinding.instanceDetails = (id); tModelInstanceInfoBinding.description = Common2UDDI.mapdescription("The binding that this endpoint implements. " + bindingTemplate.description[0].Value + " The instanceParms specifies the port local name.", lang).ToArray(); items.Add(tModelInstanceInfoBinding); tModelInstanceInfo tModelInstanceInfoPortType = new tModelInstanceInfo(); tModelInstanceInfoPortType.tModelKey = (keyDomainURI + "rest"); tModelInstanceInfoPortType.description = Common2UDDI.mapdescription("The wadl:Resource:base implements.", lang).ToArray(); items.Add(tModelInstanceInfoPortType); } bindingTemplate.tModelInstanceDetails = items.ToArray(); return bindingTemplate; }
/** * Creates a UDDI Business Service. * * @param serviceQName This must be specified to identify the namespace of * the service, which is used to set the service uddi key * @param waldDefinition * @return */ public businessService createBusinessService(QName serviceQName, application wadlDefinition) { log.debug("Constructing Service UDDI Information for " + serviceQName); businessService service = new businessService(); // BusinessKey service.businessKey = (businessKey); // ServiceKey service.serviceKey = (UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart())); // Description String serviceDescription = properties.getProperty(Property.SERVICE_DESCRIPTION, Property.DEFAULT_SERVICE_DESCRIPTION); // Override with the service description from the WSDL if present bool lengthwarn = false; List<description> ds = new List<description>(); if (wadlDefinition.doc != null) { for (int i = 0; i < wadlDefinition.doc.Length; i++) { String locallang = lang; description description = new description(); if (wadlDefinition.doc[i].lang != null) { locallang = (wadlDefinition.doc[i].lang); } if (locallang.Length > UDDIConstants.MAX_xml_lang_length) { lengthwarn = true; locallang = (locallang.Substring(0, UDDIConstants.MAX_xml_lang_length - 1)); } StringBuilder sb = new StringBuilder(); sb.Append(wadlDefinition.doc[i].title).Append(" "); sb.Append(ContentToString(wadlDefinition.doc[i].Any)); ds.AddRange(Common2UDDI.mapdescription(sb.ToString(), locallang)); } } else { ds.AddRange(Common2UDDI.mapdescription(serviceDescription, lang)); } service.description = ds.ToArray(); // Service name name sName = new name(); sName.lang = (lang); if (wadlDefinition.doc != null && wadlDefinition.doc.Length > 0) { sName.Value = (wadlDefinition.doc[0].title); } if (sName.Value == null) { sName.Value = (serviceQName.getLocalPart()); } service.name = new name[] { sName }; categoryBag cb = new categoryBag(); List<keyedReference> krs = new List<keyedReference>(); String ns = serviceQName.getNamespaceURI(); if (ns != null && ns != "") { keyedReference namespaceReference = new keyedReference( "uddi:uddi.org:xml:namespace", "uddi-org:xml:namespace", ns); krs.Add(namespaceReference); } keyedReference serviceReference = new keyedReference( "uddi:uddi.org:wadl:types", "uddi-org:wadl:types", "service"); krs.Add(serviceReference); keyedReference localNameReference = new keyedReference( "uddi:uddi.org:xml:localname", "uddi-org:xml:localName", serviceQName.getLocalPart()); krs.Add(localNameReference); cb.Items = krs.ToArray(); service.categoryBag = (cb); if (wadlDefinition.resources != null) for (int i = 0; i < wadlDefinition.resources.Length; i++) { bindingTemplate bindingTemplate = createWADLBinding(serviceQName, getDocTitle(wadlDefinition.resources[i].doc), new Uri(wadlDefinition.resources[i].@base), wadlDefinition.resources[i]); service.bindingTemplates = new bindingTemplate[] { bindingTemplate }; } if (lengthwarn) { log.warn("Some object descriptions are longer than the maximum allowed by UDDI and have been truncated."); } return service; }