mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-11 02:10:17 +01:00
1345 lines
48 KiB
JavaScript
1345 lines
48 KiB
JavaScript
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is the UDDI Inquiry API
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* Netscape Communications Corporation.
|
|
* Portions created by the Initial Developer are Copyright (C) 2003
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s): Harish Dhurvasula <harishd@netscape.com>
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
* the provisions above, a recipient may use your version of this file under
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
*
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
//
|
|
// This whole file is the UDDI Decoder class. It's purpose is to decode from a
|
|
// DOM document the different types returned by UDDI servers. It returns the
|
|
// proper types based on the API and the uddi.xsd file available at
|
|
// http://www.uddi.org. The types are defined in js in UDDITypes.js
|
|
//
|
|
|
|
function UDDIDecoder()
|
|
{
|
|
this.debug = true;
|
|
this.verbose = true;
|
|
}
|
|
|
|
UDDIDecoder.prototype =
|
|
{
|
|
debug : null,
|
|
verbose : null,
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Helper methods
|
|
//-----------------------------------------------------------------------------
|
|
|
|
getChildElementByName : function (aName, aParent)
|
|
{
|
|
var node = aParent.firstChild;
|
|
while (node) {
|
|
if (node.nodeType == Node.ELEMENT_NODE &&
|
|
node.nodeName === (aName))
|
|
return node;
|
|
node = node.nextSibling;
|
|
}
|
|
return null;
|
|
},
|
|
|
|
getChildElementsByName : function (aName, aParent)
|
|
{
|
|
var rv = null;
|
|
var node = aParent.firstChild;
|
|
while (node) {
|
|
if (node.nodeType == Node.ELEMENT_NODE &&
|
|
node.nodeName === (aName)) {
|
|
if (!rv)
|
|
rv = new Array();
|
|
rv.push(node);
|
|
}
|
|
node = node.nextSibling;
|
|
}
|
|
return rv;
|
|
},
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// UDDI Inquiry API find_xx return type decoders
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/* also called by get_xx method */
|
|
decodeBindingDetail : function (aDocument)
|
|
{
|
|
// the BindingDetail should be the first child of the SOAP Body
|
|
var bindingDetailElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!bindingDetailElement) {
|
|
if (this.verbose)
|
|
logUDDIError("No BindingDetail element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBindingDetail()");
|
|
return null;
|
|
}
|
|
|
|
var bindingDetail = new BindingDetail();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
bindingDetail.generic = bindingDetailElement.getAttribute("generic");
|
|
bindingDetail.operator = bindingDetailElement.getAttribute("operator");
|
|
bindingDetail.truncated = bindingDetailElement.getAttribute("truncated");
|
|
|
|
// populate the *optional* BindingTemplate array
|
|
var bindTemplList = this.getChildElementsByName("bindingTemplate", bindingDetailElement);
|
|
if (bindTemplList)
|
|
bindingDetail.bindingTemplates = this.decodeBindingTemplateArray(bindTemplList);
|
|
|
|
// check for presence of required fields
|
|
if (!bindingDetail.generic ||
|
|
!bindingDetail.operator) {
|
|
logUDDIError("BindingDetail missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBindingDetail()");
|
|
return null;
|
|
}
|
|
|
|
return bindingDetail;
|
|
},
|
|
|
|
/* */
|
|
decodeBusinessList : function (aDocument)
|
|
{
|
|
// the BusinessList should be the first child of the SOAP Body
|
|
var busListElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!busListElement) {
|
|
logUDDIError("No BusinessList element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessList()");
|
|
return null;
|
|
}
|
|
|
|
var busList = new BusinessList();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
busList.generic = busListElement.getAttribute("generic");
|
|
busList.operator = busListElement.getAttribute("operator");
|
|
busList.truncated = busListElement.getAttribute("truncated");
|
|
|
|
// populate *required* BusinessInfo array
|
|
var busInfosElement = this.getChildElementByName("businessInfos", busListElement);
|
|
var busInfoList = this.getChildElementsByName("businessInfo", busInfosElement);
|
|
var length = busInfoList ? busInfoList.length : 0;
|
|
if (length > 0) {
|
|
busList.businessInfos = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
busList.businessInfos[i] = this.decodeBusinessInfo(busInfoList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!busList.generic ||
|
|
!busList.operator ||
|
|
!busList.businessInfos) {
|
|
logUDDIError("BusinessList missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessList()");
|
|
return null;
|
|
}
|
|
|
|
return busList;
|
|
},
|
|
|
|
/* */
|
|
decodeRelatedBusinessesList : function (aDocument)
|
|
{
|
|
// the RelatedBusinessList should be the first child of the SOAP Body
|
|
var relBusListElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!relBusListElement) {
|
|
logUDDIError("No RelatedBusinessesList element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeRelatedBusinessesList()");
|
|
return null;
|
|
}
|
|
|
|
var relBusList = new RelatedBusinessesList();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
relBusList.generic = relBusListElement.getAttribute("generic");
|
|
relBusList.operator = relBusListElement.getAttribute("operator");
|
|
relBusList.truncated = relBusListElement.getAttribute("truncated");
|
|
|
|
// set *required* BusinessKey
|
|
relBusList.businessKey = this.getChildElementByName("businessKey", relBusListElement).firstChild.nodeValue;
|
|
|
|
// populate RelatedBusinessInfo Array - *optional*, but the RBInfos _tag_ is *required*
|
|
var relBusInfosElement = this.getChildElementsByName("relatedBusinessInfos", relBusListElement);
|
|
if (!relBusInfosElement) {
|
|
logUDDIWarning("RelatedBusinessesList missing required data member. Bad UDDI Response from server. Continuing.", "UDDIDecode.js", "decodeRelatedBusinessesList()");
|
|
}
|
|
var relBusInfoList = this.getChildElementsByName("relatedBusinessInfo", relBusInfosElement);
|
|
var length = relBusInfoList ? relBusInfoList.length : 0;
|
|
if (length > 0) {
|
|
relBusList.relatedBusinessInfos = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
relBusList.relatedBusinessInfos[i] = this.decodeRelatedBusinessInfo(relBusInfoList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!relBusList.generic ||
|
|
!relBusList.operator ||
|
|
!relBusList.businessKey) {
|
|
logUDDIError("RelatedBusinessesList missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeRelatedBusinessesList()");
|
|
return null;
|
|
}
|
|
|
|
return relBusList;
|
|
},
|
|
|
|
/* */
|
|
decodeServiceList : function (aDocument)
|
|
{
|
|
// the ServiceList should be the first child of the SOAP Body
|
|
var serviceListElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!serviceListElement) {
|
|
logUDDIError("No ServiceList element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeServiceList()");
|
|
return null;
|
|
}
|
|
|
|
var serviceList = new ServiceList();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
serviceList.generic = serviceListElement.getAttribute("generic");
|
|
serviceList.operator = serviceListElement.getAttribute("operator");
|
|
serviceList.truncated = serviceListElement.getAttribute("truncated");
|
|
|
|
// populate *required* ServiceInfo array
|
|
var serviceInfosElement= this.getChildElementByName("serviceInfos", serviceListElement);
|
|
var serviceInfoList = this.getChildElementsByName("serviceInfo", serviceInfosElement);
|
|
var length = serviceInfoList ? serviceInfoList.length : 0;
|
|
if (length > 0) {
|
|
serviceList.serviceInfos = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
serviceList.serviceInfos[i] = this.decodeServiceInfo(serviceInfoList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!serviceList.generic ||
|
|
!serviceList.operator ||
|
|
!serviceList.serviceInfos) {
|
|
logUDDIError("ServiceList missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeServiceList()");
|
|
return null;
|
|
}
|
|
|
|
return serviceList;
|
|
},
|
|
|
|
/* */
|
|
decodeTModelList : function (aDocument)
|
|
{
|
|
// the tModelList should be the first child of the SOAP Body
|
|
var tModelListElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!tModelListElement) {
|
|
logUDDIError("No TModelList element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelList()");
|
|
return null;
|
|
}
|
|
|
|
var tModelList = new TModelList();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
tModelList.generic = tModelListElement.getAttribute("generic");
|
|
tModelList.operator = tModelListElement.getAttribute("operator");
|
|
tModelList.truncated = tModelListElement.getAttribute("truncated");
|
|
|
|
// populate *required* TModelInfo array
|
|
var tModelInfosElement = this.getChildElementByName("tModelInfos", tModelListElement);
|
|
var tModelInfoList = this.getChildElementsByName("tModelInfo", tModelInfosElement);
|
|
var length = tModelInfoList ? tModelInfoList.length : 0;
|
|
if (length > 0) {
|
|
tModelList.tModelInfos = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
tModelList.tModelInfos[i] = this.decodeTModelInfo(tModelInfoList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!tModelList.generic ||
|
|
!tModelList.operator ||
|
|
!tModelList.tModelInfos) {
|
|
logUDDIError("TModelList missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelList()");
|
|
return null;
|
|
}
|
|
|
|
return tModelList;
|
|
},
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// UDDI Inquiry API get_xx return type decoders
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/* */
|
|
decodeBusinessDetail : function (aDocument)
|
|
{
|
|
// the BusinessDetail should be the first child of the SOAP Body
|
|
var busDetailElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!busDetailElement) {
|
|
logUDDIError("No BusinessDetail element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessDetail()");
|
|
return null;
|
|
}
|
|
|
|
var busDetail = new BusinessDetail();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
busDetail.generic = busDetailElement.getAttribute("generic");
|
|
busDetail.operator = busDetailElement.getAttribute("operator");
|
|
busDetail.truncated = busDetailElement.getAttribute("truncated");
|
|
|
|
// populate *optional* BusinessEntity array
|
|
var busEntityList = this.getChildElementsByName("businessEntity", busDetailElement);
|
|
var length = busEntityList ? busEntityList.length : 0;
|
|
if (length > 0) {
|
|
busDetail.businessEntities = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
busDetail.businessEntities[i] = this.decodeBusinessEntity(busEntityList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!busDetail.generic ||
|
|
!busDetail.operator) {
|
|
logUDDIError("BusinessDetail missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessDetail()");
|
|
return null;
|
|
}
|
|
|
|
return busDetail;
|
|
},
|
|
|
|
/* */
|
|
decodeBusinessDetailExt : function (aDocument)
|
|
{
|
|
// the BusinessDetailExt should be the first child of the SOAP Body
|
|
var busDetailExtElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!busDetailExtElement) {
|
|
logUDDIError("No BusinessDetailExt element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessDetailExt()");
|
|
return null;
|
|
}
|
|
|
|
var busDetailExt = new BusinessDetailExt();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
busDetailExt.generic = busDetailExtElement.getAttribute("generic");
|
|
busDetailExt.operator = busDetailExtElement.getAttribute("operator");
|
|
busDetailExt.truncated = busDetailExtElement.getAttribute("truncated");
|
|
|
|
// populate *required* BusinessEntity array
|
|
var busEntityExtList = this.getChildElementsByName("businessEntityExt", busDetailExtElement);
|
|
var length = busEntityExtList ? busEntityExtList.length : 0;
|
|
if (length > 0) {
|
|
busDetailExt.businessEntityExts = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
busDetailExt.businessEntityExts[i] = this.decodeBusinessEntityExt(busEntityExtList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!busDetailExt.generic ||
|
|
!busDetailExt.operator ||
|
|
!busDetailExt.businessEntityExts) {
|
|
logUDDIError("BusinessDetailExt missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessDetailExt()");
|
|
return null;
|
|
}
|
|
|
|
return busDetailExt;
|
|
},
|
|
|
|
/* */
|
|
decodeServiceDetail : function (aDocument)
|
|
{
|
|
// the ServiceDetail should be the first child of the SOAP Body
|
|
var serviceDetailElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!serviceDetailElement) {
|
|
logUDDIError("No ServiceDetail element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeServiceDetail()");
|
|
return null;
|
|
}
|
|
|
|
var serviceDetail = new ServiceDetail();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
serviceDetail.generic = serviceDetailElement.getAttribute("generic");
|
|
serviceDetail.operator = serviceDetailElement.getAttribute("operator");
|
|
serviceDetail.truncated = serviceDetailElement.getAttribute("truncated");
|
|
|
|
// populate *optional* BusinessService array
|
|
var busServiceList = this.getChildElementsByName("businessService", serviceDetailElement);
|
|
if (busServiceList)
|
|
serviceDetail.businessServices = this.decodeBusinessServiceArray(busServiceList);
|
|
|
|
// check for presence of required fields
|
|
if (!serviceDetail.generic ||
|
|
!serviceDetail.operator) {
|
|
logUDDIError("ServiceDetail missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeServiceDetail()");
|
|
return null;
|
|
}
|
|
|
|
return serviceDetail;
|
|
},
|
|
|
|
/* */
|
|
decodeTModelDetail : function (aDocument)
|
|
{
|
|
// the TModelDetail should be the first child of the SOAP Body
|
|
var tModelDetailElement = this.getChildElementByName("Body", aDocument.documentElement).firstChild;
|
|
if (!tModelDetailElement) {
|
|
logUDDIError("No TModelDetail element to decode. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelDetail()");
|
|
return null;
|
|
}
|
|
|
|
var tModelDetail = new TModelDetail();
|
|
|
|
// set attributes - only truncated is *optional*
|
|
tModelDetail.generic = tModelDetailElement.getAttribute("generic");
|
|
tModelDetail.operator = tModelDetailElement.getAttribute("operator");
|
|
tModelDetail.truncated = tModelDetailElement.getAttribute("truncated");
|
|
|
|
// populate *required* TModel array
|
|
var tModelList = this.getChildElementsByName("tModel", tModelDetailElement);
|
|
var length = tModelList ? tModelList.length : 0;
|
|
if (length > 0) {
|
|
tModelDetail.tModels = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
tModelDetail.tModels[i] = this.decodeTModel(tModelList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!tModelDetail.generic ||
|
|
!tModelDetail.operator ||
|
|
!tModelDetail.tModels) {
|
|
logUDDIError("TModelDetail missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelDetail()");
|
|
return null;
|
|
}
|
|
|
|
return tModelDetail;
|
|
},
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Decoding of UDDI Spec types - alpha sort
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/* */
|
|
decodeAccessPoint : function (aAccessPointElement)
|
|
{
|
|
if (!aAccessPointElement) {
|
|
logUDDIWarning("No AccessPoint element.", "UDDIDecode.js", "decodeAccessPoint()");
|
|
return null;
|
|
}
|
|
|
|
var accessPoint = new AccessPoint();
|
|
|
|
// set *required* attribute
|
|
accessPoint.urlType = aAccessPointElement.getAttribute("URLType");
|
|
|
|
// set *required* stringValue
|
|
accessPoint.stringValue = aAccessPointElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required fields
|
|
if (!accessPoint.urlType || !accessPoint.stringValue) {
|
|
logUDDIError("AccessPoint missing a required field. Bad UDDI Response", "UDDIDecode.js", "decodeAccess()");
|
|
return null;
|
|
}
|
|
|
|
return accessPoint;
|
|
},
|
|
|
|
/* */
|
|
decodeAddress : function (aAddressElement)
|
|
{
|
|
if (!aAddressElement) {
|
|
logUDDIWarning("No Address element.", "UDDIDecode.js", "decodeAddress()");
|
|
return null;
|
|
}
|
|
|
|
var address = new Address();
|
|
|
|
// set attributes (all optional)
|
|
address.useType = aAddressElement.getAttribute("useType");
|
|
address.sortCode = aAddressElement.getAttribute("sortCode");
|
|
address.tModelKey = aAddressElement.getAttribute("tModelKey");
|
|
|
|
// populate the *optional* AddressLine array
|
|
var addLineList = this.getChildElementsByName("addressLine", aAddressElement);
|
|
var length = addLineList ? addLineList.length : 0;
|
|
if (length > 0) {
|
|
address.addressLines = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
address.addressLines[i] = this.decodeAddressLine(addLineList[i]);
|
|
}
|
|
|
|
// no required fields, just return
|
|
return address;
|
|
},
|
|
|
|
/* */
|
|
decodeAddressLine : function (aAddLineElement)
|
|
{
|
|
if (!aAddLineElement) {
|
|
logUDDIWarning("No AddressLine element.", "UDDIDecode.js", "decodeAddressLine()");
|
|
return null;
|
|
}
|
|
|
|
var addLine = new AddressLine();
|
|
|
|
// set attributes (all optional)
|
|
addLine.keyName = aAddLineElement.getAttribute("keyName");
|
|
addLine.keyValue = aAddLineElement.getAttribute("keyValue");
|
|
|
|
// set *required* string value
|
|
addLine.stringValue = aAddLineElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required fields
|
|
if (!addLine.stringValue) {
|
|
logUDDIError("AddressLine missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeAddressLine()");
|
|
return null;
|
|
}
|
|
|
|
return addLine;
|
|
},
|
|
|
|
/* will return an empty array */
|
|
decodeBindingTemplateArray : function (aBindTemplElList)
|
|
{
|
|
var length = aBindTemplElList ? aBindTemplElList.length : 0;
|
|
var bindTemplArray = new Array(length);
|
|
if (length > 0) {
|
|
for (var i = 0; i < length; i++)
|
|
bindTemplArray[i] = this.decodeBindingTemplate(aBindTemplElList[i]);
|
|
}
|
|
else
|
|
logUDDIWarning("BindingTemplate List is null or empty.", "UDDIDecode.js", "decodeBindingTemplateArray()");
|
|
return bindTemplArray;
|
|
},
|
|
|
|
/* */
|
|
decodeBindingTemplate : function (aBindingTemplateElement)
|
|
{
|
|
if (!aBindingTemplateElement) {
|
|
logUDDIWarning("No BindingTemplate element.", "UDDIDecode.js", "decodeBindingTemplate()");
|
|
return null;
|
|
}
|
|
|
|
var bindingTemplate = new BindingTemplate();
|
|
|
|
// set attributes - bindingKey is *required*
|
|
bindingTemplate.serviceKey = aBindingTemplateElement.getAttribute("serviceKey");
|
|
bindingTemplate.bindingKey = aBindingTemplateElement.getAttribute("bindingKey");
|
|
|
|
// set *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aBindingTemplateElement);
|
|
bindingTemplate.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// set *required* AccessPoint
|
|
var accessPointElement = this.getChildElementByName("accessPoint", aBindingTemplateElement);
|
|
bindingTemplate.accessPoint = this.decodeAccessPoint(accessPointElement);
|
|
|
|
// set *required* HostingRedirector
|
|
var hostingRedirectorElement = this.getChildElementByName("hostingRedirector", aBindingTemplateElement);
|
|
bindingTemplate.hostingRedirector = this.decodeHostingRedirector(hostingRedirectorElement);
|
|
|
|
// set *required* TModelInstanceDetails (array of TModelInstanceInfo objects) (can be empty)
|
|
var tModelInstanceDetailsElement = this.getChildElementByName("tModelInstanceDetails", aBindingTemplateElement);
|
|
if (tModelInstanceDetailsElement) {
|
|
var tModelInstanceInfoList = this.getChildElementsByName("tModelInstanceInfo", tModelInstanceDetailsElement);
|
|
var length = tModelInstanceInfoList ? tModelInstanceInfoList.length : 0;
|
|
bindingTemplate.tModelInstanceDetails = new Array(length);
|
|
if (length > 0) {
|
|
for (var i = 0; i < length; i++)
|
|
bindingTemplate.tModelInstanceDetails[i] = this.decodeTModelInstanceInfo(tModelInstanceInfoList[i]);
|
|
}
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!bindingTemplate.bindingKey ||
|
|
(!bindingTemplate.accessPoint && !bindingTemplate.hostingRedirector) || // choice
|
|
!bindingTemplate.tModelInstanceDetails) {
|
|
logUDDIError("BindingTemplate missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBindingTemplate()");
|
|
return null;
|
|
}
|
|
|
|
return bindingTemplate;
|
|
},
|
|
|
|
/* */
|
|
decodeBusinessEntity : function (aBusEntityElement)
|
|
{
|
|
if (!aBusEntityElement) {
|
|
logUDDIWarning("No BusinessEntity element.", "UDDIDecode.js", "decodeBusinessEntity()");
|
|
return null;
|
|
}
|
|
|
|
var busEntity = new BusinessEntity();
|
|
|
|
// set attributes - businessKey is *required*
|
|
busEntity.businessKey = aBusEntityElement.getAttribute("businessKey");
|
|
busEntity.operator = aBusEntityElement.getAttribute("operator");
|
|
busEntity.authorizedName = aBusEntityElement.getAttribute("authorizedName");
|
|
|
|
// populate *optional* DiscoveryURL array (can NOT be empty)
|
|
var discURLsElement = this.getChildElementByName("discoveryURLs", aBusEntityElement);
|
|
if (discURLsElement) {
|
|
var discURLList = this.getChildElementsByName("discoveryURL", discURLsElement);
|
|
var length = discURLList ? discURLList.length : 0;
|
|
if (length > 0) {
|
|
busEntity.discoveryURLs = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
busEntity.discoveryURLs[i] = this.decodeDiscoveryURL(discURLList[i]);
|
|
}
|
|
}
|
|
|
|
// populate *required* Name array
|
|
var nameList = this.getChildElementsByName("name", aBusEntityElement);
|
|
busEntity.names = this.decodeNameArray(nameList);
|
|
|
|
// populate *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aBusEntityElement);
|
|
busEntity.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// populate *optional* Contact array (can NOT be empty)
|
|
var contactsElement = this.getChildElementByName("contacts", aBusEntityElement);
|
|
if (contactsElement) {
|
|
var contactList = this.getChildElementsByName("contact", contactsElement);
|
|
length = contactList ? contactList.length : 0;
|
|
if (length > 0) {
|
|
busEntity.contacts = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
busEntity.contacts[i] = this.decodeContact(contactList[i]);
|
|
}
|
|
}
|
|
|
|
// populate *optional* BusinessServices array (can be empty)
|
|
var businessServicesElement = this.getChildElementByName("businessServices", aBusEntityElement);
|
|
if (businessServicesElement) {
|
|
var businessServiceElementList = this.getChildElementsByName("businessService", businessServicesElement);
|
|
busEntity.businessServices = this.decodeBusinessServiceArray(businessServiceElementList);
|
|
}
|
|
|
|
// decode *optional* IdentifierBag
|
|
var identBagElement = this.getChildElementByName("identifierBag", aBusEntityElement);
|
|
busEntity.identifierBag = this.decodeIdentifierBag(identBagElement);
|
|
|
|
// decode *optional* CategoryBag
|
|
var catBagElement = this.getChildElementByName("categoryBag", aBusEntityElement);
|
|
busEntity.categoryBag = this.decodeCategoryBag(catBagElement);
|
|
|
|
// check for presence of required fields
|
|
if (!busEntity.names ||
|
|
!busEntity.businessKey) {
|
|
logUDDIError("BusinessEntity missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessEntity()");
|
|
return null;
|
|
}
|
|
|
|
return busEntity;
|
|
},
|
|
|
|
/* */
|
|
decodeBusinessEntityExt : function (aBusinessEntityExtElement)
|
|
{
|
|
if (!aBusinessEntityExtElement) {
|
|
logUDDIWarning("No BusinessEntityExt element.", "UDDIDecode.js", "decodeBusinessEntityExt()");
|
|
return null;
|
|
}
|
|
|
|
var busEntityExt = new BusinessEntityExt();
|
|
|
|
// set *required* BusinessEntity
|
|
var busEntityElement = this.getChildElementByName("businessEntity", aBusinessEntityExtElement);
|
|
busEntityExt.businessEntity = this.decodeBusinessEntity(busEntityElement);
|
|
|
|
// set *optional* extension array of XML elements
|
|
var sibling = busEntityElement.nextSibling;
|
|
if (sibling) {
|
|
busDetailExt.extensions = new Array();
|
|
while (sibling) {
|
|
busDetailExt.extensions.push(sibling);
|
|
sibling = sibling.nextSibling;
|
|
}
|
|
}
|
|
|
|
if (!busEntityExt.businessEntity) {
|
|
logUDDIError("BusinessEntityExt missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessEntityExt()");
|
|
return null;
|
|
}
|
|
|
|
return busEntityExt;
|
|
},
|
|
|
|
|
|
/* */
|
|
decodeBusinessInfo : function (aBusinessInfoElement)
|
|
{
|
|
if (!aBusinessInfoElement) {
|
|
logUDDIWarning("No BusinessInfo element.", "UDDIDecode.js", "decodeBusinessInfo()");
|
|
return null;
|
|
}
|
|
|
|
var busInfo = new BusinessInfo();
|
|
|
|
// set *required* attribute
|
|
busInfo.businessKey = aBusinessInfoElement.getAttribute("businessKey");
|
|
|
|
// set *required* Name array
|
|
var nameList = this.getChildElementsByName("name", aBusinessInfoElement);
|
|
busInfo.names = this.decodeNameArray(nameList);
|
|
|
|
// set *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aBusinessInfoElement);
|
|
busInfo.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// populate *required* ServiceInfo array (can be empty)
|
|
var serviceInfosElement = this.getChildElementByName("serviceInfos", aBusinessInfoElement);
|
|
if (serviceInfosElement) {
|
|
var serviceInfoList = this.getChildElementsByName("serviceInfo", serviceInfosElement);
|
|
var length = serviceInfoList ? serviceInfoList.length : 0;
|
|
busInfo.serviceInfos = new Array(length);
|
|
if (length > 0) {
|
|
for (var i = 0; i < length; i++)
|
|
busInfo.serviceInfos[i] = this.decodeServiceInfo(serviceInfoList[i]);
|
|
}
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!busInfo.businessKey ||
|
|
!busInfo.names ||
|
|
!busInfo.serviceInfos) {
|
|
logUDDIError("BusinessInfo missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessInfo()");
|
|
return null;
|
|
}
|
|
|
|
return busInfo;
|
|
},
|
|
|
|
// will return an empty array if arg is null/empty
|
|
decodeBusinessServiceArray : function (aBusinessServiceElementList)
|
|
{
|
|
var length = aBusinessServiceElementList ? aBusinessServiceElementList.length : 0;
|
|
var businessServiceArray = new Array(length);
|
|
if (length > 0) {
|
|
for (var i = 0; i < length; i++)
|
|
businessServiceArray [i] = this.decodeBusinessService(aBusinessServiceElementList[i]);
|
|
}
|
|
else
|
|
logUDDIMessage("DescriptionArray is empty.");
|
|
return businessServiceArray;
|
|
},
|
|
|
|
/* */
|
|
decodeBusinessService : function (aBusServiceElement)
|
|
{
|
|
if (!aBusServiceElement) {
|
|
logUDDIWarning("No BusinessService element.", "UDDIDecode.js", "decodeBusinessService()");
|
|
return null;
|
|
}
|
|
|
|
var busService = new BusinessService();
|
|
|
|
// set attributes - only serviceKey is *required*
|
|
busService.serviceKey = aBusServiceElement.getAttribute("serviceKey");
|
|
busService.businessKey = aBusServiceElement.getAttribute("businessKey");
|
|
|
|
// populate *optional* Name array
|
|
var nameList = this.getChildElementsByName("name", aBusServiceElement);
|
|
busService.names = this.decodeNameArray(nameList);
|
|
|
|
// populate *optional* Description array
|
|
var descList = this.getChildElementsByName("description", aBusServiceElement);
|
|
busService.descriptions = this.decodeDescriptionArray(descList);
|
|
|
|
// populate *optional* BindingTemplate array (can be empty)
|
|
var bindTemplsElement = this.getChildElementByName("bindingTemplates", aBusServiceElement);
|
|
if (bindTemplsElement) {
|
|
var bindTemplList = this.getChildElementsByName("bindingTemplate", bindTemplsElement);
|
|
busService.bindingTemplates = this.decodeBindingTemplateArray(bindTemplList);
|
|
}
|
|
|
|
// set the *optional* CategoryBag
|
|
var catBagElement = this.getChildElementsByName("categoryBag", aBusServiceElement);
|
|
busService.categoryBag = this.decodeCategoryBag(catBagElement);
|
|
|
|
// check for presence of required fields
|
|
if (!busService.serviceKey) {
|
|
logUDDIError("BusinessService missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeBusinessService()");
|
|
return null;
|
|
}
|
|
|
|
return busService;
|
|
},
|
|
|
|
/* */
|
|
decodeCategoryBag : function (aCategoryBagElement)
|
|
{
|
|
if (!aCategoryBagElement) {
|
|
logUDDIWarning("No CategoryBag element.", "UDDIDecode.js", "decodeCategoryBag()");
|
|
return null;
|
|
}
|
|
|
|
var categoryBag = new CategoryBag();
|
|
|
|
// populate the *required* KeyedReference array
|
|
var keyedReferenceList = this.getChildElementsByName("keyedReference", aCategoryBagElement);
|
|
categoryBag.keyedReferences = this.decodeKeyedRefArray(keyedReferenceList);
|
|
|
|
// check for presence of required field
|
|
if (!categoryBag.keyedReferences) {
|
|
logUDDIError("CategoryBag missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeCategoryBag()");
|
|
return null;
|
|
}
|
|
|
|
return categoryBag;
|
|
},
|
|
|
|
/* */
|
|
decodeContact : function (aContactElement)
|
|
{
|
|
if (!aContactElement) {
|
|
logUDDIWarning("No Contact element.", "UDDIDecode.js", "decodeContact()");
|
|
return null;
|
|
}
|
|
|
|
var contact = new Contact();
|
|
|
|
// set *optional* attribute
|
|
contact.useType = aContactElement.getAttribute("useType");
|
|
|
|
// populate *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aContactElement);
|
|
contact.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// set *required* personName - string
|
|
contact.personName = this.getChildElementByName("personName", aContactElement).firstChild.nodeValue;
|
|
|
|
// populate *optional* Phone array
|
|
var phoneList = this.getChildElementsByName("phone", aContactElement);
|
|
var length = phoneList ? phoneList.length : 0;
|
|
if (length > 0) {
|
|
contact.phones = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
contact.phones[i] = this.decodePhone(phoneList[i]);
|
|
}
|
|
|
|
// populate *optional* Email array
|
|
var emailList = this.getChildElementsByName("email", aContactElement);
|
|
length = emailList ? emailList.length : 0;
|
|
if (length > 0) {
|
|
contact.emails = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
contact.emails[i] = this.decodeEmail(emailList[i]);
|
|
}
|
|
|
|
// populate *optional* Address array
|
|
var addressList = this.getChildElementsByName("address", aContactElement);
|
|
length = addressList ? addressList.length : 0;
|
|
if (length > 0) {
|
|
contact.addresses = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
contact.addresses[i] = this.decodeAddress(addressList[i]);
|
|
}
|
|
|
|
// check for presence of required field
|
|
if (!contact.personName) {
|
|
logUDDIError("Contact missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeContact()");
|
|
return null;
|
|
}
|
|
|
|
return contact;
|
|
},
|
|
|
|
/* */
|
|
// will NOT return an empty array
|
|
decodeDescriptionArray : function (aDescElementList)
|
|
{
|
|
var length = aDescElementList ? aDescElementList.length : 0;
|
|
if (length > 0) {
|
|
var descArray = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
descArray[i] = this.decodeDescription(aDescElementList[i]);
|
|
return descArray;
|
|
}
|
|
logUDDIMessage("DescriptionArray is empty.");
|
|
return null;
|
|
},
|
|
|
|
/* */
|
|
decodeDescription : function (aDescriptionElement)
|
|
{
|
|
if (!aDescriptionElement) {
|
|
logUDDIWarning("No Description element.", "UDDIDecode.js", "decodeDescription()");
|
|
return null;
|
|
}
|
|
|
|
var desc = new Description();
|
|
|
|
// set *optional* attribute
|
|
desc.lang = aDescriptionElement.getAttribute("lang");
|
|
|
|
// set *required* string value
|
|
desc.stringValue = aDescriptionElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required field
|
|
if (!desc.stringValue) {
|
|
logUDDIError("Description missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeDescription()");
|
|
return null;
|
|
}
|
|
|
|
return desc;
|
|
},
|
|
|
|
/* */
|
|
decodeDiscoveryURL : function (aDiscoveryURLElement)
|
|
{
|
|
if (!aDiscoveryURLElement) {
|
|
logUDDIWarning("No DiscoveryURL element.", "UDDIDecode.js", "decodeDiscoveryURL()");
|
|
return null;
|
|
}
|
|
|
|
var discURL = new DiscoveryURL();
|
|
|
|
// set *required* attribute
|
|
discURL.useType = aDiscoveryURLElement.getAttribute("useType");
|
|
|
|
// set *required* string value
|
|
discURL.stringValue = aDiscoveryURLElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required field
|
|
if (!discURL.useType ||
|
|
!discURL.stringValue) {
|
|
logUDDIError("DiscoveryURL missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeDiscoveryURL()");
|
|
return null;
|
|
}
|
|
|
|
return discURL;
|
|
},
|
|
|
|
/* */
|
|
decodeEmail : function (aEmailElement)
|
|
{
|
|
if (!aEmailElement) {
|
|
logUDDIWarning("No Email element.", "UDDIDecode.js", "decodeEmails()");
|
|
return null;
|
|
}
|
|
|
|
var email = new Email();
|
|
|
|
// set *optional* attribute
|
|
email.useType = aEmailElement.getAttribute("useType");
|
|
|
|
// set *required* string value
|
|
email.stringValue = aEmailElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required field
|
|
if (!email.stringValue) {
|
|
logUDDIError("Email missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeEmail()");
|
|
return null;
|
|
}
|
|
|
|
return email;
|
|
},
|
|
|
|
/* */
|
|
decodeHostingRedirector : function (aHostingRedirectorElement)
|
|
{
|
|
if (!aHostingRedirectorElement) {
|
|
logUDDIWarning("No HostingRedirector element.", "UDDIDecode.js", "decodeHostingRedirector()");
|
|
return null;
|
|
}
|
|
|
|
var hostRedir = new HostingRedirector();
|
|
|
|
// set *required* attribute
|
|
hostRedir.bindingKey = aHostingRedirector.getAttribute("bindingKey");
|
|
|
|
// check for presence of required field
|
|
if (!hostRedir.bindingKey) {
|
|
logUDDIError("HostingRedirector missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeHostingRedirector()");
|
|
return null;
|
|
}
|
|
|
|
return hostRedir;
|
|
},
|
|
|
|
/* */
|
|
decodeIdentifierBag : function (aIdentifierBagElement)
|
|
{
|
|
if (!aIdentifierBagElement) {
|
|
logUDDIWarning("No IdentifierBag element.", "UDDIDecode.js", "decodeIdentifierBag()");
|
|
return null;
|
|
}
|
|
|
|
var identifierBag = new IdentifierBag();
|
|
|
|
// populate the *required* KeyedReference array
|
|
var keyedReferenceList = this.getChildElementsByName("keyedReference", aIdentifierBagElement);
|
|
identifierBag.keyedReferences = this.decodeKeyedRefArray(keyedReferenceList);
|
|
|
|
// check for presence of required field
|
|
if (!identifierBag.keyedReferences) {
|
|
logUDDIError("IdentifierBag missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeIdentifierBag()");
|
|
return null;
|
|
}
|
|
|
|
return identifierBag;
|
|
},
|
|
|
|
/* */
|
|
decodeInstanceDetails : function (aInstanceDetailsElement)
|
|
{
|
|
if (!aInstanceDetailsElement) {
|
|
logUDDIWarning("No InstanceDetails element.", "UDDIDecode.js", "decodeInstanceDetails()");
|
|
return null;
|
|
}
|
|
|
|
var instanceDetails = new InstanceDetails();
|
|
|
|
// populate *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aInstanceDetailsElement);
|
|
instanceDetails.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// set *optional* OverviewDoc
|
|
var overviewDocElement = this.getChildElementByName("overviewDoc", aInstanceDetailsElement);
|
|
instanceDetails.overviewDoc = this.decodeOverviewDoc(overviewDocElement);
|
|
|
|
// set *optional* InstanceParms - string
|
|
var instanceParmsElement = this.getChildElementByName("instanceParms", aInstanceDetailsElement);
|
|
if (instanceParmsElement)
|
|
instanceDetails.instanceParms = instanceParmsElement.firstChild.nodeValue;
|
|
|
|
// no required fields, just return
|
|
return instanceDetails;
|
|
},
|
|
|
|
/* */
|
|
// will NOT return an empty array - all KeyedReference arrays are currently *required*
|
|
decodeKeyedRefArray : function (aKRElementList)
|
|
{
|
|
var length = aKRElementList ? aKRElementList.length : 0;
|
|
if (length > 0) {
|
|
var krArray = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
krArray[i] = this.decodeKeyedReference(aKRElementList[i]);
|
|
return krArray;
|
|
}
|
|
logUDDIWarning("KeyedReference List is null or empty.", "UDDIDecode.js", "decodeKeyedRefArray()");
|
|
return null;
|
|
},
|
|
|
|
/* */
|
|
decodeKeyedReference : function (aKRElement)
|
|
{
|
|
if (!aKRElement) {
|
|
logUDDIWarning("No KeyedReference element.", "UDDIDecode.js", "decodeKeyedReference()");
|
|
return null;
|
|
}
|
|
|
|
var keyedRef = new KeyedReference();
|
|
|
|
// set attributes - keyValue is *required*
|
|
keyedRef.tModelKey = aKRElement.getAttribute("tModelKey");
|
|
keyedRef.keyName = aKRElement.getAttribute("keyName");
|
|
keyedRef.keyValue = aKRElement.getAttribute("keyValue");
|
|
|
|
// check for presence of required field
|
|
if (!keyedRef.keyValue) {
|
|
logUDDIError("KeyedReference missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeKeyedReference()");
|
|
return null;
|
|
}
|
|
|
|
return keyedRef;
|
|
},
|
|
|
|
// does NOT return an empty array!
|
|
/* */
|
|
decodeNameArray : function (aNameElementList)
|
|
{
|
|
var length = aNameElementList ? aNameElementList.length : 0;
|
|
if (length > 0) {
|
|
var nameArray = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
nameArray[i] = this.decodeName(aNameElementList[i]);
|
|
return nameArray;
|
|
}
|
|
logUDDIWarning("Name List is null or empty.", "UDDIDecode.js", "decodeNameArray()");
|
|
return null;
|
|
},
|
|
|
|
/* */
|
|
decodeName : function (aNameElement)
|
|
{
|
|
if (!aNameElement) {
|
|
logUDDIWarning("No Name element.", "UDDIDecode.js", "decodeName()");
|
|
return null;
|
|
}
|
|
|
|
var name = new Name();
|
|
|
|
// set *optional* attribute
|
|
name.lang = aNameElement.getAttribute("lang");
|
|
|
|
// set *required* string value
|
|
name.stringValue = aNameElement.firstChild.nodeValue;
|
|
|
|
// check for the presence of required field
|
|
if (!name.stringValue) {
|
|
logUDDIError("Name missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeName()");
|
|
return null;
|
|
}
|
|
|
|
return name;
|
|
},
|
|
|
|
/* */
|
|
decodeOverviewDoc : function (aOverviewDocElement)
|
|
{
|
|
if (!aOverviewDocElement) {
|
|
logUDDIWarning("No OverviewDoc element.", "UDDIDecode.js", "decodeOverviewDoc()");
|
|
return null;
|
|
}
|
|
|
|
var overviewDoc = new OverviewDoc();
|
|
|
|
// populate *optional* Description array
|
|
var descriptionList = this.getChildElementsByName("description", aOverviewDocElement);
|
|
overviewDoc.descriptions = this.decodeDescriptionArray(descriptionList);
|
|
|
|
// set *optional* OverviewURL strings
|
|
var overviewURLElement = this.getChildElementByName("overviewURL", aOverviewDocElement);
|
|
if (overviewURLElement)
|
|
overviewDoc.overviewURL = overviewURLElement.firstChild.nodeValue;
|
|
|
|
// no required fields, just return
|
|
return overviewDoc;
|
|
},
|
|
|
|
/* */
|
|
decodePhone : function (aPhoneElement)
|
|
{
|
|
if (!aPhoneElement) {
|
|
logUDDIWarning("No Phone element.", "UDDIDecode.js", "decodePhone()");
|
|
return null;
|
|
}
|
|
|
|
var phone = new Phone();
|
|
|
|
// set *optional* attribute
|
|
phone.useType = aPhoneElement.getAttribute("useType");
|
|
|
|
// set *required* string value
|
|
phone.strinValue = aPhoneElement.firstChild.nodeValue;
|
|
|
|
// check for presence of required field
|
|
if (!phone.stringValue) {
|
|
logUDDIError("Phone missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodePhone()");
|
|
return null;
|
|
}
|
|
|
|
return phone;
|
|
},
|
|
|
|
/* */
|
|
decodeRelatedBusinessInfo : function (aRelatedBusinessInfoElement)
|
|
{
|
|
if (!aRelatedBusinessInfoElement) {
|
|
logUDDIWarning("No RelatedBusinessInfo element.", "UDDIDecode.js", "decodeRelatedBusinessInfo()");
|
|
return null;
|
|
}
|
|
|
|
var relBusInfo = new RelatedBusinessInfo();
|
|
|
|
// set *required* businessKey
|
|
relBusInfo.businessKey = this.getChildElementByName("businessKey", aRelatedBusinessInfoElement).firstChild.nodeValue;
|
|
|
|
// populate *required* Names array
|
|
var nameList = this.getChildElementsByName("name", aRelatedBusinessInfoElement);
|
|
relBusInfo.names = this.decodeNameArray(nameList);
|
|
|
|
// populate *optional* Description array
|
|
var descList = this.getChildElementsByName("description", aRelatedBusinessInfoElement);
|
|
relBusInfo.descriptions = this.decodeDescriptionArray(descList);
|
|
|
|
// set *required* SharedRelationships array
|
|
var shRelsList = this.getChildElementsByName("sharedRelationships", aRelatedBusinessInfoElement);
|
|
var length = shRelsList ? shRelsList.length : 0;
|
|
if (length > 0 && length <= 2) {
|
|
relBusInfo.sharedRelationships = new Array(length);
|
|
for (var i = 0; i < length; i++)
|
|
relBusInfo.sharedRelationships[i] = this.decodeSharedRelationships(shRelsList[i]);
|
|
}
|
|
|
|
// check for presence of required fields
|
|
if (!relBusInfo.businessKey||
|
|
!relBusInfo.names ||
|
|
!relBusInfo.sharedRelationships) {
|
|
logUDDIError("RelatedBusinessInfo missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeRelatedBusinessInfo()");
|
|
return null;
|
|
}
|
|
|
|
return relBusInfo;
|
|
},
|
|
|
|
/* */
|
|
decodeServiceInfo : function (aServiceInfoElement)
|
|
{
|
|
if (!aServiceInfoElement) {
|
|
logUDDIWarning("No ServiceInfo element.", "UDDIDecode.js", "decodeServiceInfo()");
|
|
return null;
|
|
}
|
|
|
|
var serviceInfo = new ServiceInfo();
|
|
|
|
// set attributes - all are *required*
|
|
serviceInfo.serviceKey = aServiceInfoElement.getAttribute("serviceKey");
|
|
serviceInfo.businessKey = aServiceInfoElement.getAttribute("businessKey");
|
|
|
|
// set *optional* Name array
|
|
var nameList = this.getChildElementsByName("name", aServiceInfoElement);
|
|
serviceInfo.names = this.decodeNameArray(nameList);
|
|
|
|
// check for presence of required fields
|
|
if (!serviceInfo.serviceKey ||
|
|
!serviceInfo.businessKey) {
|
|
logUDDIError("ServiceInfo missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeServiceInfo()");
|
|
return null;
|
|
}
|
|
|
|
return serviceInfo;
|
|
},
|
|
|
|
/* */
|
|
decodeSharedRelationships : function (aSharedRelationshipsElement)
|
|
{
|
|
if (!aSharedRelationshipsElement) {
|
|
logUDDIWarning("No SharedRelationships element.", "UDDIDecode.js", "decodeSharedRelationships()");
|
|
return null;
|
|
}
|
|
|
|
var sharedRelationships = new SharedRelationships();
|
|
|
|
// set *required* attribute
|
|
sharedRelationships.direction = aSharedRelationshipsElement.getAttribute("direction");
|
|
|
|
// set *required* KeyedReference array
|
|
var keyedRefList = this.getChildElementsByName("keyedReference", aSharedRelationshipsElement);
|
|
sharedRelationships.keyedReferences = this.decodeKeyedRefArray(keyedRefList);
|
|
|
|
if (!sharedRelationships.direction ||
|
|
!sharedRelationships.keyedReferences) {
|
|
logUDDIError("SharedRelationships missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeSharedRelationships()");
|
|
return null;
|
|
}
|
|
|
|
return sharedRelationships;
|
|
},
|
|
|
|
/* */
|
|
decodeTModel : function (aTModelElement)
|
|
{
|
|
if (!aTModelElement) {
|
|
logUDDIWarning("No TModel element.", "UDDIDecode.js", "decodeTModel()");
|
|
return null;
|
|
}
|
|
|
|
var tModel = new TModel();
|
|
|
|
// set attributes - only tModelKey is *required*
|
|
tModel.tModelKey = aTModelElement.getAttribute("tModelKey");
|
|
tModel.operator = aTModelElement.getAttribute("operator");
|
|
tModel.authorizedName = aTModelElement.getAttribute("authorizedName");
|
|
|
|
// set *required* Name
|
|
tModel.name = this.getChildElementByName("name", aTModelElement).firstChild.nodeValue;
|
|
|
|
// populate *optional* Description array
|
|
var descList = this.getChildElementsByName("description", aTModelElement);
|
|
tModel.descriptions = this.decodeDescriptionArray(descList);
|
|
|
|
// populate *optional* OverviewDoc
|
|
var overviewDocElement = this.getChildElementByName("overviewDoc", aTModelElement);
|
|
tModel.overviewDoc = this.decodeDescriptionArray(overviewDocElement);
|
|
|
|
// populate *optional* IdentifierBag
|
|
var identBagElement = this.getChildElementByName("identifierBag", aTModelElement);
|
|
tModel.identifierBag = this.decodeIdentifierBag(identBagElement);
|
|
|
|
// populate *optional* CategoryBag
|
|
var catBagElement = this.getChildElementByName("categoryBag", aTModelElement);
|
|
tModel.categoryBag = this.decodeCategoryBag(catBagElement);
|
|
|
|
// check for presence of required fields
|
|
if (!tModel.name ||
|
|
!tModel.tModelKey) {
|
|
logUDDIError("TModel missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModel()");
|
|
return null;
|
|
}
|
|
|
|
return tModel;
|
|
},
|
|
|
|
/* */
|
|
decodeTModelInfo : function (aTModelInfoElement)
|
|
{
|
|
if (!aTModelInfoElement) {
|
|
logUDDIWarning("No TModelInfo element.", "UDDIDecode.js", "decodeTModelInfo()");
|
|
return null;
|
|
}
|
|
|
|
var tModelInfo = new TModelInfo();
|
|
|
|
// set *required* attribute
|
|
tModelInfo.tModelKey = aTModelInfoElement.getAttribute("tModelKey");
|
|
|
|
// set *required* Name
|
|
tModelInfo.name = this.getChildElementByName("name", aTModelInfoElement).firstChild.nodeValue;
|
|
|
|
// check for presence of required fields
|
|
if (!tModelInfo.tModelKey||
|
|
!tModelInfo.name) {
|
|
logUDDIError("TModelInfo missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelInfo()");
|
|
return null;
|
|
}
|
|
|
|
return tModelInfo;
|
|
},
|
|
|
|
/* */
|
|
decodeTModelInstanceInfo : function (aTModelInstanceInfoElement)
|
|
{
|
|
if (!aTModelInstanceInfoElement) {
|
|
logUDDIWarning("No TModelInstanceInfo element.", "UDDIDecode.js", "decodeTModelInstanceInfo()");
|
|
return null;
|
|
}
|
|
|
|
var tModelInstanceInfo = new TModelInstanceInfo();
|
|
|
|
// set *required* attribute
|
|
tModelInstanceInfo.tModelKey = aTModelInstanceInfoElement.getAttribute("tModelKey");
|
|
|
|
// set *optional* Description array
|
|
var descList = this.getChildElementsByName("description", aTModelInstanceInfoElement);
|
|
tModelInstanceInfo.descriptions = this.decodeDescriptionArray(descList);
|
|
|
|
// set *optional* InstanceDetails
|
|
var instanceDetailsElement = this.getChildElementByName("instanceDetails", aTModelInstanceInfoElement);
|
|
tModelInstanceInfo.instanceDetails = this.decodeInstanceDetails(instanceDetailsElement);
|
|
|
|
// check for presence of required field
|
|
if (!tModelInstanceInfo.tModelKey) {
|
|
logUDDIError("TModelInstanceInfo missing required data member. Bad UDDI Response from server.", "UDDIDecode.js", "decodeTModelInstanceInfo()");
|
|
return null;
|
|
}
|
|
|
|
return tModelInstanceInfo;
|
|
}
|
|
|
|
}; // end of UDDIDecoder class
|