Java tutorial
/** * * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ws.scout.util; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; import javax.xml.registry.JAXRException; import javax.xml.registry.infomodel.Association; import javax.xml.registry.infomodel.Classification; import javax.xml.registry.infomodel.ClassificationScheme; import javax.xml.registry.infomodel.Concept; import javax.xml.registry.infomodel.EmailAddress; import javax.xml.registry.infomodel.ExternalIdentifier; import javax.xml.registry.infomodel.ExternalLink; import javax.xml.registry.infomodel.InternationalString; import javax.xml.registry.infomodel.Key; import javax.xml.registry.infomodel.LocalizedString; import javax.xml.registry.infomodel.Organization; import javax.xml.registry.infomodel.PostalAddress; import javax.xml.registry.infomodel.RegistryObject; import javax.xml.registry.infomodel.Service; import javax.xml.registry.infomodel.ServiceBinding; import javax.xml.registry.infomodel.Slot; import javax.xml.registry.infomodel.SpecificationLink; import javax.xml.registry.infomodel.TelephoneNumber; import javax.xml.registry.infomodel.User; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.scout.model.uddi.v2.AccessPoint; import org.apache.ws.scout.model.uddi.v2.Address; import org.apache.ws.scout.model.uddi.v2.AddressLine; import org.apache.ws.scout.model.uddi.v2.BindingTemplate; import org.apache.ws.scout.model.uddi.v2.BindingTemplates; import org.apache.ws.scout.model.uddi.v2.BusinessEntity; import org.apache.ws.scout.model.uddi.v2.BusinessService; import org.apache.ws.scout.model.uddi.v2.BusinessServices; import org.apache.ws.scout.model.uddi.v2.CategoryBag; import org.apache.ws.scout.model.uddi.v2.Contact; import org.apache.ws.scout.model.uddi.v2.Contacts; import org.apache.ws.scout.model.uddi.v2.Description; import org.apache.ws.scout.model.uddi.v2.DiscoveryURL; import org.apache.ws.scout.model.uddi.v2.DiscoveryURLs; import org.apache.ws.scout.model.uddi.v2.Email; import org.apache.ws.scout.model.uddi.v2.HostingRedirector; import org.apache.ws.scout.model.uddi.v2.IdentifierBag; import org.apache.ws.scout.model.uddi.v2.InstanceDetails; import org.apache.ws.scout.model.uddi.v2.KeyedReference; import org.apache.ws.scout.model.uddi.v2.Name; import org.apache.ws.scout.model.uddi.v2.ObjectFactory; import org.apache.ws.scout.model.uddi.v2.OverviewDoc; import org.apache.ws.scout.model.uddi.v2.Phone; import org.apache.ws.scout.model.uddi.v2.PublisherAssertion; import org.apache.ws.scout.model.uddi.v2.TModel; import org.apache.ws.scout.model.uddi.v2.TModelBag; import org.apache.ws.scout.model.uddi.v2.TModelInstanceDetails; import org.apache.ws.scout.model.uddi.v2.TModelInstanceInfo; import org.apache.ws.scout.model.uddi.v2.URLType; import org.apache.ws.scout.registry.infomodel.InternationalStringImpl; /** * Helper class that does Jaxr->UDDI Mapping * * @author <a href="mailto:anil@apache.org">Anil Saldhana</a> * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a> * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a> * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a> */ public class ScoutJaxrUddiHelper { private static final String UDDI_ORG_TYPES = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"; private static Log log = LogFactory.getLog(ScoutJaxrUddiHelper.class); private static ObjectFactory objectFactory = new ObjectFactory(); /** * Get UDDI Address given JAXR Postal Address */ public static Address getAddress(PostalAddress postalAddress) throws JAXRException { Address address = objectFactory.createAddress(); AddressLine[] addarr = new AddressLine[6]; String stnum = postalAddress.getStreetNumber(); String st = postalAddress.getStreet(); String city = postalAddress.getCity(); String country = postalAddress.getCountry(); String code = postalAddress.getPostalCode(); String state = postalAddress.getStateOrProvince(); AddressLine stnumAL = objectFactory.createAddressLine(); stnumAL.setKeyName("STREET_NUMBER"); if (stnum != null) { stnumAL.setKeyValue(stnum); } AddressLine stAL = objectFactory.createAddressLine(); stAL.setKeyName("STREET"); if (st != null) { stAL.setKeyValue(st); } AddressLine cityAL = objectFactory.createAddressLine(); cityAL.setKeyName("CITY"); if (city != null) { cityAL.setKeyValue(city); } AddressLine countryAL = objectFactory.createAddressLine(); countryAL.setKeyName("COUNTRY"); if (country != null) { countryAL.setKeyValue(country); } AddressLine codeAL = objectFactory.createAddressLine(); codeAL.setKeyName("POSTALCODE"); if (code != null) { codeAL.setKeyValue(code); } AddressLine stateAL = objectFactory.createAddressLine(); stateAL.setKeyName("STATE"); if (state != null) { stateAL.setKeyValue(state); } // Add the AddressLine to vector addarr[0] = stnumAL; addarr[1] = stAL; addarr[2] = cityAL; addarr[3] = countryAL; addarr[4] = codeAL; addarr[5] = stateAL; address.getAddressLine().addAll(Arrays.asList(addarr)); return address; } public static BindingTemplate getBindingTemplateFromJAXRSB(ServiceBinding serviceBinding) throws JAXRException { BindingTemplate bt = objectFactory.createBindingTemplate(); if (serviceBinding.getKey() != null && serviceBinding.getKey().getId() != null) { bt.setBindingKey(serviceBinding.getKey().getId()); } else { bt.setBindingKey(""); } try { // Set Access URI String accessuri = serviceBinding.getAccessURI(); if (accessuri != null) { AccessPoint accessPoint = objectFactory.createAccessPoint(); accessPoint.setURLType(getURLType(accessuri)); accessPoint.setValue(accessuri); bt.setAccessPoint(accessPoint); } ServiceBinding sb = serviceBinding.getTargetBinding(); if (sb != null) { HostingRedirector red = objectFactory.createHostingRedirector(); Key key = sb.getKey(); if (key != null && key.getId() != null) { red.setBindingKey(key.getId()); } else { red.setBindingKey(""); } bt.setHostingRedirector(red); } else { if (bt.getAccessPoint() == null) { bt.setAccessPoint(objectFactory.createAccessPoint()); } } // TODO:Need to look further at the mapping b/w BindingTemplate and // Jaxr ServiceBinding // Get Service information Service svc = serviceBinding.getService(); if (svc != null && svc.getKey() != null && svc.getKey().getId() != null) { bt.setServiceKey(svc.getKey().getId()); } InternationalString idesc = serviceBinding.getDescription(); addDescriptions(bt.getDescription(), idesc); // SpecificationLink Collection<SpecificationLink> slcol = serviceBinding.getSpecificationLinks(); TModelInstanceDetails tid = objectFactory.createTModelInstanceDetails(); if (slcol != null && !slcol.isEmpty()) { Iterator<SpecificationLink> iter = slcol.iterator(); while (iter.hasNext()) { SpecificationLink slink = (SpecificationLink) iter.next(); TModelInstanceInfo emptyTInfo = objectFactory.createTModelInstanceInfo(); tid.getTModelInstanceInfo().add(emptyTInfo); RegistryObject specificationObject = slink.getSpecificationObject(); if (specificationObject.getKey() != null && specificationObject.getKey().getId() != null) { emptyTInfo.setTModelKey(specificationObject.getKey().getId()); if (specificationObject.getDescription() != null) { for (Object o : specificationObject.getDescription().getLocalizedStrings()) { LocalizedString locDesc = (LocalizedString) o; Description description = objectFactory.createDescription(); emptyTInfo.getDescription().add(description); description.setValue(locDesc.getValue()); description.setLang(locDesc.getLocale().getLanguage()); } } Collection<ExternalLink> externalLinks = slink.getExternalLinks(); if (externalLinks != null && externalLinks.size() > 0) { for (ExternalLink link : externalLinks) { InstanceDetails ids = objectFactory.createInstanceDetails(); emptyTInfo.setInstanceDetails(ids); if (link.getDescription() != null) { Description description = objectFactory.createDescription(); ids.getDescription().add(description); description.setValue(link.getDescription().getValue()); } if (link.getExternalURI() != null) { OverviewDoc overviewDoc = objectFactory.createOverviewDoc(); ids.setOverviewDoc(overviewDoc); overviewDoc.setOverviewURL(link.getExternalURI()); } } } } } } bt.setTModelInstanceDetails(tid); log.debug("BindingTemplate=" + bt.toString()); } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return bt; } public static PublisherAssertion getPubAssertionFromJAXRAssociation(Association association) throws JAXRException { PublisherAssertion pa = objectFactory.createPublisherAssertion(); try { if (association.getSourceObject().getKey() != null && association.getSourceObject().getKey().getId() != null) { pa.setFromKey(association.getSourceObject().getKey().getId()); } if (association.getTargetObject().getKey() != null && association.getTargetObject().getKey().getId() != null) { pa.setToKey(association.getTargetObject().getKey().getId()); } Concept c = association.getAssociationType(); String v = c.getValue(); KeyedReference kr = objectFactory.createKeyedReference(); Key key = c.getKey(); if (key == null) { // TODO:Need to check this. If the concept is a predefined // enumeration, the key can be the parent classification scheme key = c.getClassificationScheme().getKey(); } if (key != null && key.getId() != null) { kr.setTModelKey(key.getId()); } kr.setKeyName("Concept"); if (v != null) { kr.setKeyValue(v); } pa.setKeyedReference(kr); } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return pa; } public static PublisherAssertion getPubAssertionFromJAXRAssociationKey(String key) throws JAXRException { PublisherAssertion pa = objectFactory.createPublisherAssertion(); try { StringTokenizer token = new StringTokenizer(key, "|"); if (token.hasMoreTokens()) { pa.setFromKey(getToken(token.nextToken())); pa.setToKey(getToken(token.nextToken())); KeyedReference kr = objectFactory.createKeyedReference(); // Sometimes the Key is UUID:something String str = getToken(token.nextToken()); if ("UUID".equals(str)) str += ":" + getToken(token.nextToken()); kr.setTModelKey(str); kr.setKeyName(getToken(token.nextToken())); kr.setKeyValue(getToken(token.nextToken())); pa.setKeyedReference(kr); } } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return pa; } public static BusinessService getBusinessServiceFromJAXRService(Service service) throws JAXRException { BusinessService bs = objectFactory.createBusinessService(); try { InternationalString iname = service.getName(); addNames(bs.getName(), iname); InternationalString idesc = service.getDescription(); addDescriptions(bs.getDescription(), idesc); Organization o = service.getProvidingOrganization(); /* * there may not always be a key... */ if (o != null) { Key k = o.getKey(); if (k != null && k.getId() != null) { bs.setBusinessKey(k.getId()); } } else { /* * gmj - I *think* this is the right thing to do */ throw new JAXRException("Service has no associated organization"); } if (service.getKey() != null && service.getKey().getId() != null) { bs.setServiceKey(service.getKey().getId()); } else { bs.setServiceKey(""); } CategoryBag catBag = getCategoryBagFromClassifications(service.getClassifications()); if (catBag != null) { bs.setCategoryBag(catBag); } //Add the ServiceBinding information BindingTemplates bt = getBindingTemplates(service.getServiceBindings()); if (bt != null) { bs.setBindingTemplates(bt); } log.debug("BusinessService=" + bs.toString()); } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return bs; } public static TModel getTModelFromJAXRClassificationScheme(ClassificationScheme classificationScheme) throws JAXRException { TModel tm = objectFactory.createTModel(); try { /* * a fresh scheme might not have a key */ Key k = classificationScheme.getKey(); if (k != null && k.getId() != null) { tm.setTModelKey(k.getId()); } else { tm.setTModelKey(""); } /* * There's no reason to believe these are here either */ Slot s = classificationScheme.getSlot("authorizedName"); if (s != null && s.getName() != null) { tm.setAuthorizedName(s.getName()); } s = classificationScheme.getSlot("operator"); if (s != null && s.getName() != null) { tm.setOperator(s.getName()); } InternationalString iname = classificationScheme.getName(); tm.setName(getFirstName(iname)); InternationalString idesc = classificationScheme.getDescription(); addDescriptions(tm.getDescription(), idesc); IdentifierBag idBag = getIdentifierBagFromExternalIdentifiers( classificationScheme.getExternalIdentifiers()); if (idBag != null) { tm.setIdentifierBag(idBag); } CategoryBag catBag = getCategoryBagFromClassifications(classificationScheme.getClassifications()); if (catBag != null) { tm.setCategoryBag(catBag); } // ToDO: overviewDoc } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return tm; } public static TModel getTModelFromJAXRConcept(Concept concept) throws JAXRException { TModel tm = objectFactory.createTModel(); if (concept == null) return null; try { Key key = concept.getKey(); if (key != null && key.getId() != null) tm.setTModelKey(key.getId()); Slot sl1 = concept.getSlot("authorizedName"); if (sl1 != null && sl1.getName() != null) tm.setAuthorizedName(sl1.getName()); Slot sl2 = concept.getSlot("operator"); if (sl2 != null && sl2.getName() != null) tm.setOperator(sl2.getName()); InternationalString iname = concept.getName(); tm.setName(getFirstName(iname)); InternationalString idesc = concept.getDescription(); addDescriptions(tm.getDescription(), idesc); // External Links Collection<ExternalLink> externalLinks = concept.getExternalLinks(); if (externalLinks != null && externalLinks.size() > 0) { tm.setOverviewDoc(getOverviewDocFromExternalLink((ExternalLink) externalLinks.iterator().next())); } IdentifierBag idBag = getIdentifierBagFromExternalIdentifiers(concept.getExternalIdentifiers()); if (idBag != null) { tm.setIdentifierBag(idBag); } CategoryBag catBag = getCategoryBagFromClassifications(concept.getClassifications()); if (catBag != null) { tm.setCategoryBag(catBag); } } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return tm; } private static void addDescriptions(List<Description> descripions, InternationalString idesc) throws JAXRException { if (idesc != null) { for (Object o : idesc.getLocalizedStrings()) { LocalizedString locName = (LocalizedString) o; Description desc = objectFactory.createDescription(); descripions.add(desc); desc.setValue(locName.getValue()); desc.setLang(locName.getLocale().getLanguage()); } } } private static Name getFirstName(InternationalString iname) throws JAXRException { for (Object o : iname.getLocalizedStrings()) { LocalizedString locName = (LocalizedString) o; Name name = objectFactory.createName(); name.setValue(locName.getValue()); name.setLang(locName.getLocale().getLanguage()); return name; } return null; } private static void addNames(List<Name> names, InternationalString iname) throws JAXRException { for (Object o : iname.getLocalizedStrings()) { LocalizedString locName = (LocalizedString) o; Name name = objectFactory.createName(); name.setValue(locName.getValue()); name.setLang(locName.getLocale().getLanguage()); names.add(name); } } public static BusinessEntity getBusinessEntityFromJAXROrg(Organization organization) throws JAXRException { BusinessEntity biz = objectFactory.createBusinessEntity(); BusinessServices bss = objectFactory.createBusinessServices(); BusinessService[] barr = new BusinessService[0]; try { // It may just be an update Key key = organization.getKey(); if (key != null && key.getId() != null) { biz.setBusinessKey(key.getId()); } else { biz.setBusinessKey(""); } // Lets get the Organization attributes at the top level InternationalString iname = organization.getName(); if (iname != null) { addNames(biz.getName(), iname); } InternationalString idesc = organization.getDescription(); addDescriptions(biz.getDescription(), idesc); if (organization.getPrimaryContact() != null && organization.getPrimaryContact().getPersonName() != null && organization.getPrimaryContact().getPersonName().getFullName() != null) { biz.setAuthorizedName(organization.getPrimaryContact().getPersonName().getFullName()); } Collection<Service> s = organization.getServices(); log.debug("?Org has services=" + s.isEmpty()); barr = new BusinessService[s.size()]; Iterator<Service> iter = s.iterator(); int barrPos = 0; while (iter.hasNext()) { BusinessService bs = ScoutJaxrUddiHelper.getBusinessServiceFromJAXRService((Service) iter.next()); barr[barrPos] = bs; barrPos++; } /* * map users : JAXR has concept of 'primary contact', which is a * special designation for one of the users, and D6.1 seems to say * that the first UDDI user is the primary contact */ Contacts cts = objectFactory.createContacts(); Contact[] carr = new Contact[0]; User primaryContact = organization.getPrimaryContact(); Collection<User> users = organization.getUsers(); // Expand array to necessary size only (xmlbeans does not like // null items in cases like this) int carrSize = 0; if (primaryContact != null) { carrSize += 1; } // TODO: Clean this up and make it more efficient Iterator<User> it = users.iterator(); while (it.hasNext()) { User u = (User) it.next(); if (u != primaryContact) { carrSize++; } } carr = new Contact[carrSize]; /* * first do primary, and then filter that out in the loop */ if (primaryContact != null) { Contact ct = getContactFromJAXRUser(primaryContact); carr[0] = ct; } it = users.iterator(); int carrPos = 1; while (it.hasNext()) { User u = (User) it.next(); if (u != primaryContact) { Contact ct = getContactFromJAXRUser(u); carr[carrPos] = ct; carrPos++; } } bss.getBusinessService().addAll(Arrays.asList(barr)); if (carr.length > 0) { cts.getContact().addAll(Arrays.asList(carr)); biz.setContacts(cts); } biz.setBusinessServices(bss); // External Links Iterator<ExternalLink> exiter = organization.getExternalLinks().iterator(); DiscoveryURLs emptyDUs = null; boolean first = true; while (exiter.hasNext()) { ExternalLink link = (ExternalLink) exiter.next(); /** Note: jUDDI adds its own discoverURL as the businessEntity* */ if (first) { emptyDUs = objectFactory.createDiscoveryURLs(); biz.setDiscoveryURLs(emptyDUs); first = false; } DiscoveryURL emptyDU = objectFactory.createDiscoveryURL(); emptyDUs.getDiscoveryURL().add(emptyDU); emptyDU.setUseType("businessEntityExt"); if (link.getExternalURI() != null) { emptyDU.setValue(link.getExternalURI()); } } IdentifierBag idBag = getIdentifierBagFromExternalIdentifiers(organization.getExternalIdentifiers()); if (idBag != null) { biz.setIdentifierBag(idBag); } CategoryBag catBag = getCategoryBagFromClassifications(organization.getClassifications()); if (catBag != null) { biz.setCategoryBag(catBag); } } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return biz; } /** * * Convert JAXR User Object to UDDI Contact */ public static Contact getContactFromJAXRUser(User user) throws JAXRException { Contact ct = objectFactory.createContact(); if (user == null) { return null; } Address[] addarr = new Address[0]; Phone[] phonearr = new Phone[0]; Email[] emailarr = new Email[0]; try { if (user.getPersonName() != null && user.getPersonName().getFullName() != null) { ct.setPersonName(user.getPersonName().getFullName()); } if (user.getType() != null) { ct.setUseType(user.getType()); } // Postal Address Collection<PostalAddress> postc = user.getPostalAddresses(); addarr = new Address[postc.size()]; Iterator<PostalAddress> iterator = postc.iterator(); int addarrPos = 0; while (iterator.hasNext()) { PostalAddress post = (PostalAddress) iterator.next(); addarr[addarrPos] = ScoutJaxrUddiHelper.getAddress(post); addarrPos++; } // Phone Numbers Collection ph = user.getTelephoneNumbers(null); phonearr = new Phone[ph.size()]; Iterator it = ph.iterator(); int phonearrPos = 0; while (it.hasNext()) { TelephoneNumber t = (TelephoneNumber) it.next(); Phone phone = objectFactory.createPhone(); String str = t.getNumber(); log.debug("Telephone=" + str); // FIXME: If phone number is null, should the phone // not be set at all, or set to empty string? if (str != null) { phone.setValue(str); } else { phone.setValue(""); } phonearr[phonearrPos] = phone; phonearrPos++; } // Email Addresses Collection ec = user.getEmailAddresses(); emailarr = new Email[ec.size()]; Iterator iter = ec.iterator(); int emailarrPos = 0; while (iter.hasNext()) { EmailAddress ea = (EmailAddress) iter.next(); Email email = objectFactory.createEmail(); if (ea.getAddress() != null) { email.setValue(ea.getAddress()); } // email.setText( ea.getAddress() ); if (ea.getType() != null) { email.setUseType(ea.getType()); } emailarr[emailarrPos] = email; emailarrPos++; } ct.getAddress().addAll(Arrays.asList(addarr)); ct.getPhone().addAll(Arrays.asList(phonearr)); ct.getEmail().addAll(Arrays.asList(emailarr)); } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } return ct; } private static String getToken(String tokenstr) { // Token can have the value NULL which need to be converted into null if (tokenstr.equals("NULL")) tokenstr = ""; return tokenstr; } private static URLType getURLType(String accessuri) { String acc = accessuri.toLowerCase(); URLType uri = URLType.OTHER; if (acc.startsWith("http:")) uri = URLType.HTTP; else if (acc.startsWith("https:")) uri = URLType.HTTPS; else if (acc.startsWith("ftp:")) uri = URLType.FTP; else if (acc.startsWith("phone:")) uri = URLType.PHONE;// TODO:Handle this better return uri; } /** * According to JAXR Javadoc, there are two types of classification, internal and external and they use the Classification, Concept, * and ClassificationScheme objects. It seems the only difference between internal and external (as related to UDDI) is that the * name/value pair of the categorization is held in the Concept for internal classifications and the Classification for external (bypassing * the Concept entirely). * * The translation to UDDI is simple. Relevant objects have a category bag which contains a bunch of KeyedReferences (name/value pairs). * These KeyedReferences optionally refer to a tModel that identifies the type of category (translates to the ClassificationScheme key). If * this is set and the tModel doesn't exist in the UDDI registry, then an invalid key error will occur when trying to save the object. * * @param classifications classifications to turn into categories * @throws JAXRException */ public static CategoryBag getCategoryBagFromClassifications(Collection classifications) throws JAXRException { try { if (classifications == null || classifications.size() == 0) return null; // Classifications CategoryBag cbag = objectFactory.createCategoryBag(); Iterator classiter = classifications.iterator(); while (classiter.hasNext()) { Classification classification = (Classification) classiter.next(); if (classification != null) { KeyedReference keyr = objectFactory.createKeyedReference(); cbag.getKeyedReference().add(keyr); InternationalStringImpl iname = null; String value = null; ClassificationScheme scheme = classification.getClassificationScheme(); if (scheme == null || (classification.isExternal() && classification.getConcept() == null)) { /* * JAXR 1.0 Specification: Section D6.4.4 * Specification related tModels mapped from Concept may be automatically * categorized by the well-known uddi-org:types taxonomy in UDDI (with * tModelKey uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4) as follows: * The keyed reference is assigned a taxonomy value of specification. */ keyr.setTModelKey(UDDI_ORG_TYPES); keyr.setKeyValue("specification"); } else { if (classification.isExternal()) { iname = (InternationalStringImpl) ((RegistryObject) classification).getName(); value = classification.getValue(); } else { Concept concept = classification.getConcept(); if (concept != null) { iname = (InternationalStringImpl) ((RegistryObject) concept).getName(); value = concept.getValue(); scheme = concept.getClassificationScheme(); } } String name = iname.getValue(); if (name != null) keyr.setKeyName(name); if (value != null) keyr.setKeyValue(value); if (scheme != null) { Key key = scheme.getKey(); if (key != null && key.getId() != null) keyr.setTModelKey(key.getId()); } } } } return cbag; } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } } public static TModelBag getTModelBagFromSpecifications(Collection specifications) throws JAXRException { try { if (specifications == null || specifications.size() == 0) return null; // Classifications TModelBag tbag = objectFactory.createTModelBag(); Iterator speciter = specifications.iterator(); while (speciter.hasNext()) { RegistryObject registryobject = (RegistryObject) speciter.next(); if (registryobject instanceof Concept) { Concept concept = (Concept) registryobject; if (concept.getKey() != null) { tbag.getTModelKey().add(concept.getKey().toString()); } // if (registryobject instanceof SpecificationLink) { // SpecificationLink specificationlink = (SpecificationLink) registryobject; // if (specificationlink.getSpecificationObject() != null) { // RegistryObject ro = specificationlink.getSpecificationObject(); // if (ro.getKey() != null) { // Key key = ro.getKey(); // tbag.getTModelKey().add(key.toString()); // } // } } else { log.info("ebXML case - the RegistryObject is an ExtrinsicObject, Not implemented"); } } return tbag; } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } } /** * Adds the objects identifiers from JAXR's external identifier collection * * @param identifiers external identifiers to turn into identifiers * @throws JAXRException */ public static IdentifierBag getIdentifierBagFromExternalIdentifiers(Collection identifiers) throws JAXRException { try { if (identifiers == null || identifiers.size() == 0) return null; // Identifiers IdentifierBag ibag = objectFactory.createIdentifierBag(); Iterator iditer = identifiers.iterator(); while (iditer.hasNext()) { ExternalIdentifier extid = (ExternalIdentifier) iditer.next(); if (extid != null) { KeyedReference keyr = objectFactory.createKeyedReference(); ibag.getKeyedReference().add(keyr); InternationalStringImpl iname = (InternationalStringImpl) ((RegistryObject) extid).getName(); String value = extid.getValue(); ClassificationScheme scheme = extid.getIdentificationScheme(); String name = iname.getValue(); if (name != null) keyr.setKeyName(name); if (value != null) keyr.setKeyValue(value); if (scheme != null) { Key key = scheme.getKey(); if (key != null && key.getId() != null) keyr.setTModelKey(key.getId()); } } } return ibag; } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } } private static OverviewDoc getOverviewDocFromExternalLink(ExternalLink link) throws JAXRException { OverviewDoc od = objectFactory.createOverviewDoc(); String url = link.getExternalURI(); if (url != null) od.setOverviewURL(url); InternationalString extDesc = link.getDescription(); if (extDesc != null) { Description description = objectFactory.createDescription(); od.getDescription().add(description); description.setValue(extDesc.getValue()); } return od; } private static BindingTemplates getBindingTemplates(Collection serviceBindings) throws JAXRException { BindingTemplates bt = null; if (serviceBindings != null && serviceBindings.size() > 0) { bt = objectFactory.createBindingTemplates(); Iterator iter = serviceBindings.iterator(); int currLoc = 0; BindingTemplate[] bindingTemplateArray = new BindingTemplate[serviceBindings.size()]; while (iter.hasNext()) { ServiceBinding sb = (ServiceBinding) iter.next(); bindingTemplateArray[currLoc] = getBindingTemplateFromJAXRSB(sb); currLoc++; } if (bindingTemplateArray != null) { bt.getBindingTemplate().addAll(Arrays.asList(bindingTemplateArray)); } } return bt; } }