You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scout-dev@ws.apache.org by tc...@apache.org on 2009/09/18 04:15:19 UTC
svn commit: r816437 [2/3] - in /webservices/scout/trunk/src:
main/java/org/apache/ws/scout/model/uddi/v2/
main/java/org/apache/ws/scout/registry/
test/java/org/apache/ws/scout/registry/
test/java/org/apache/ws/scout/registry/qa/
Modified: webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
URL: http://svn.apache.org/viewvc/webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java?rev=816437&r1=816436&r2=816437&view=diff
==============================================================================
--- webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java (original)
+++ webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java Fri Sep 18 02:15:18 2009
@@ -1,1012 +1,1014 @@
-/**
- *
- * 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.registry;
-
-import java.net.PasswordAuthentication;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.xml.registry.BulkResponse;
-import javax.xml.registry.BusinessLifeCycleManager;
-import javax.xml.registry.BusinessQueryManager;
-import javax.xml.registry.InvalidRequestException;
-import javax.xml.registry.JAXRException;
-import javax.xml.registry.LifeCycleManager;
-import javax.xml.registry.RegistryService;
-import javax.xml.registry.UnsupportedCapabilityException;
-import javax.xml.registry.infomodel.Association;
-import javax.xml.registry.infomodel.ClassificationScheme;
-import javax.xml.registry.infomodel.Concept;
-import javax.xml.registry.infomodel.Key;
-import javax.xml.registry.infomodel.LocalizedString;
-import javax.xml.registry.infomodel.Organization;
-import javax.xml.registry.infomodel.RegistryObject;
-import javax.xml.registry.infomodel.Service;
-import javax.xml.registry.infomodel.ServiceBinding;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.ws.scout.model.uddi.v2.AssertionStatusItem;
-import org.apache.ws.scout.model.uddi.v2.AssertionStatusReport;
-import org.apache.ws.scout.model.uddi.v2.AuthToken;
-import org.apache.ws.scout.model.uddi.v2.BindingDetail;
-import org.apache.ws.scout.model.uddi.v2.BindingTemplate;
-import org.apache.ws.scout.model.uddi.v2.BusinessDetail;
-import org.apache.ws.scout.model.uddi.v2.BusinessInfo;
-import org.apache.ws.scout.model.uddi.v2.BusinessInfos;
-import org.apache.ws.scout.model.uddi.v2.BusinessList;
-import org.apache.ws.scout.model.uddi.v2.BusinessService;
-import org.apache.ws.scout.model.uddi.v2.FindQualifiers;
-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.PublisherAssertion;
-import org.apache.ws.scout.model.uddi.v2.PublisherAssertions;
-import org.apache.ws.scout.model.uddi.v2.RegisteredInfo;
-import org.apache.ws.scout.model.uddi.v2.ServiceDetail;
-import org.apache.ws.scout.model.uddi.v2.ServiceInfo;
-import org.apache.ws.scout.model.uddi.v2.ServiceInfos;
-import org.apache.ws.scout.model.uddi.v2.ServiceList;
-import org.apache.ws.scout.model.uddi.v2.TModel;
-import org.apache.ws.scout.model.uddi.v2.TModelDetail;
-import org.apache.ws.scout.model.uddi.v2.TModelInfo;
-import org.apache.ws.scout.model.uddi.v2.TModelInfos;
-import org.apache.ws.scout.model.uddi.v2.TModelList;
-import org.apache.ws.scout.registry.infomodel.AssociationImpl;
-import org.apache.ws.scout.registry.infomodel.ClassificationSchemeImpl;
-import org.apache.ws.scout.registry.infomodel.ConceptImpl;
-import org.apache.ws.scout.registry.infomodel.InternationalStringImpl;
-import org.apache.ws.scout.registry.infomodel.KeyImpl;
-import org.apache.ws.scout.registry.infomodel.ServiceBindingImpl;
-import org.apache.ws.scout.registry.infomodel.ServiceImpl;
-import org.apache.ws.scout.util.EnumerationHelper;
-import org.apache.ws.scout.util.ScoutJaxrUddiHelper;
-import org.apache.ws.scout.util.ScoutUddiJaxrHelper;
-
-/**
- * Implements the JAXR BusinessQueryManager Interface
- * For futher details, look into the JAXR API Javadoc.
- *
- * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
- * @author <a href="mailto:anil@apache.org">Anil Saldhana</a>
- * @author <a href="mailto:jboynes@apache.org">Jeremy Boynes</a>
- * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
- */
-public class BusinessQueryManagerImpl implements BusinessQueryManager
-{
- private final RegistryServiceImpl registryService;
- private Log log = LogFactory.getLog(this.getClass());
-
- private static ObjectFactory objectFactory = new ObjectFactory();
-
- public BusinessQueryManagerImpl(RegistryServiceImpl registry)
- {
- this.registryService = registry;
- }
-
- public RegistryService getRegistryService()
- {
- return registryService;
- }
-
- /**
- * Finds organizations in the registry that match the specified parameters
- *
- * @param findQualifiers
- * @param namePatterns
- * @param classifications
- * @param specifications
- * @param externalIdentifiers
- * @param externalLinks
- * @return BulkResponse
- * @throws JAXRException
- */
- public BulkResponse findOrganizations(Collection findQualifiers,
- Collection namePatterns,
- Collection classifications,
- Collection specifications,
- Collection externalIdentifiers,
- Collection externalLinks) throws JAXRException
- {
- IRegistry registry = (IRegistry) registryService.getRegistry();
- try
- {
- FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
- Name[] nameArray = mapNamePatterns(namePatterns);
- BusinessList result = registry.findBusiness(nameArray,
- null,
- ScoutJaxrUddiHelper.getIdentifierBagFromExternalIdentifiers(externalIdentifiers),
- ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
- null,
- juddiFindQualifiers,
- registryService.getMaxRows());
-
- BusinessInfo[] bizInfoArr =null;
- BusinessInfos bizInfos = result.getBusinessInfos();
- LinkedHashSet<Organization> orgs = new LinkedHashSet<Organization>();
- if(bizInfos != null)
- {
- List<BusinessInfo> bizInfoList = bizInfos.getBusinessInfo();
- for (BusinessInfo businessInfo : bizInfoList) {
- //Now get the details on the individual biz
- BusinessDetail detail = registry.getBusinessDetail(businessInfo.getBusinessKey());
- orgs.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
- }
- bizInfoArr = new BusinessInfo[bizInfoList.size()];
- bizInfoList.toArray(bizInfoArr);
- }
- return new BulkResponseImpl(orgs);
- } catch (RegistryException e)
- {
- throw new JAXRException(e);
- }
- }
-
- public BulkResponse findAssociations(Collection findQualifiers,
- String sourceObjectId,
- String targetObjectId,
- Collection associationTypes) throws JAXRException
- {
- //TODO: Currently we just return all the Association objects owned by the caller
- IRegistry registry = (IRegistry) registryService.getRegistry();
- try
- {
- ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
- AuthToken auth = this.getAuthToken(con,registry);
- PublisherAssertions result =
- registry.getPublisherAssertions(auth.getAuthInfo());
- List<PublisherAssertion> publisherAssertionList = result.getPublisherAssertion();
- LinkedHashSet<Association> col = new LinkedHashSet<Association>();
- for (PublisherAssertion pas : publisherAssertionList) {
- String sourceKey = pas.getFromKey();
- String targetKey = pas.getToKey();
- Collection<Key> orgcol = new ArrayList<Key>();
- orgcol.add(new KeyImpl(sourceKey));
- orgcol.add(new KeyImpl(targetKey));
- BulkResponse bl = getRegistryObjects(orgcol, LifeCycleManager.ORGANIZATION);
- Association asso = ScoutUddiJaxrHelper.getAssociation(bl.getCollection(),
- registryService.getBusinessLifeCycleManager());
- KeyedReference keyr = pas.getKeyedReference();
- Concept c = new ConceptImpl(getRegistryService().getBusinessLifeCycleManager());
- c.setName(new InternationalStringImpl(keyr.getKeyName()));
- c.setKey( new KeyImpl(keyr.getTModelKey()) );
- c.setValue(keyr.getKeyValue());
- asso.setAssociationType(c);
- col.add(asso);
- }
- return new BulkResponseImpl(col);
- } catch (RegistryException e)
- {
- throw new JAXRException(e);
- }
- }
-
- public BulkResponse findCallerAssociations(Collection findQualifiers,
- Boolean confirmedByCaller,
- Boolean confirmedByOtherParty,
- Collection associationTypes) throws JAXRException
- {
- //TODO: Currently we just return all the Association objects owned by the caller
- IRegistry registry = (IRegistry) registryService.getRegistry();
- try
- {
- ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
- AuthToken auth = this.getAuthToken(con,registry);
-
- AssertionStatusReport report = null;
- String confirm = "";
- boolean caller = confirmedByCaller.booleanValue();
- boolean other = confirmedByOtherParty.booleanValue();
-
- if(caller && other )
- confirm = Constants.COMPLETION_STATUS_COMPLETE;
- else
- if(!caller && other )
- confirm = Constants.COMPLETION_STATUS_FROMKEY_INCOMPLETE;
- else
- if(caller && !other )
- confirm = Constants.COMPLETION_STATUS_TOKEY_INCOMPLETE;
-
- report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
-
-
- List<AssertionStatusItem> assertionStatusItemList = report.getAssertionStatusItem();
- LinkedHashSet<Association> col = new LinkedHashSet<Association>();
- for (AssertionStatusItem asi : assertionStatusItemList) {
- String sourceKey = asi.getFromKey();
- String targetKey = asi.getToKey();
- Collection<Key> orgcol = new ArrayList<Key>();
- orgcol.add(new KeyImpl(sourceKey));
- orgcol.add(new KeyImpl(targetKey));
- BulkResponse bl = getRegistryObjects(orgcol, LifeCycleManager.ORGANIZATION);
- Association asso = ScoutUddiJaxrHelper.getAssociation(bl.getCollection(),
- registryService.getBusinessLifeCycleManager());
- //Set Confirmation
- ((AssociationImpl)asso).setConfirmedBySourceOwner(caller);
- ((AssociationImpl)asso).setConfirmedByTargetOwner(other);
-
- if(confirm != Constants.COMPLETION_STATUS_COMPLETE)
- ((AssociationImpl)asso).setConfirmed(false);
-
- Concept c = new ConceptImpl(getRegistryService().getBusinessLifeCycleManager());
- KeyedReference keyr = asi.getKeyedReference();
- c.setKey(new KeyImpl(keyr.getTModelKey()));
- c.setName(new InternationalStringImpl(keyr.getKeyName()));
- c.setValue(keyr.getKeyValue());
- asso.setKey(new KeyImpl(keyr.getTModelKey())); //TODO:Validate this
- asso.setAssociationType(c);
- col.add(asso);
- }
-
-
- return new BulkResponseImpl(col);
- } catch (RegistryException e)
- {
- throw new JAXRException(e);
- }
- }
-
- /**
- * TODO - need to support the qualifiers
- *
- * @param findQualifiers
- * @param namePatterns
- * @return ClassificationScheme
- * @throws JAXRException
- */
- public ClassificationScheme findClassificationSchemeByName(Collection findQualifiers,
- String namePatterns) throws JAXRException
- {
- ClassificationScheme scheme = null;
-
- if (namePatterns.indexOf("uddi-org:types") != -1) {
-
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_TYPES_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("dnb-com:D-U-N-S") != -1) {
-
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_D_U_N_S_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("uddi-org:iso-ch:3166:1999") != -1)
- {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("uddi-org:iso-ch:3166-1999") != -1)
- {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("iso-ch:3166:1999") != -1)
- {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("iso-ch:3166-1999") != -1)
- {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("unspsc-org:unspsc") != -1) {
-
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
- }
- else if (namePatterns.indexOf("ntis-gov:naics") != -1) {
-
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(namePatterns));
- scheme.setKey(new KeyImpl(Constants.TMODEL_NAICS_TMODEL_KEY));
- }
- else
- { //TODO:Before going to the registry, check if it a predefined Enumeration
-
- /*
- * predefined Enumerations
- */
-
- if ("AssociationType".equals(namePatterns)) {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
-
- scheme.setName(new InternationalStringImpl(namePatterns));
-
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
-
- addChildConcept((ClassificationSchemeImpl)scheme, "RelatedTo");
- addChildConcept((ClassificationSchemeImpl)scheme, "HasChild");
- addChildConcept((ClassificationSchemeImpl)scheme, "HasMember");
- addChildConcept((ClassificationSchemeImpl)scheme, "HasParent");
- addChildConcept((ClassificationSchemeImpl)scheme, "ExternallyLinks");
- addChildConcept((ClassificationSchemeImpl)scheme, "Contains");
- addChildConcept((ClassificationSchemeImpl)scheme, "EquivalentTo");
- addChildConcept((ClassificationSchemeImpl)scheme, "Extends");
- addChildConcept((ClassificationSchemeImpl)scheme, "Implements");
- addChildConcept((ClassificationSchemeImpl)scheme, "InstanceOf");
- addChildConcept((ClassificationSchemeImpl)scheme, "Supersedes");
- addChildConcept((ClassificationSchemeImpl)scheme, "Uses");
- addChildConcept((ClassificationSchemeImpl)scheme, "Replaces");
- addChildConcept((ClassificationSchemeImpl)scheme, "ResponsibleFor");
- addChildConcept((ClassificationSchemeImpl)scheme, "SubmitterOf");
- }
- else if ("ObjectType".equals(namePatterns)) {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
-
- scheme.setName(new InternationalStringImpl(namePatterns));
-
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
-
- addChildConcept((ClassificationSchemeImpl)scheme, "CPP");
- addChildConcept((ClassificationSchemeImpl)scheme, "CPA");
- addChildConcept((ClassificationSchemeImpl)scheme, "Process");
- addChildConcept((ClassificationSchemeImpl)scheme, "WSDL");
- addChildConcept((ClassificationSchemeImpl)scheme, "Association");
- addChildConcept((ClassificationSchemeImpl)scheme, "AuditableEvent");
- addChildConcept((ClassificationSchemeImpl)scheme, "Classification");
- addChildConcept((ClassificationSchemeImpl)scheme, "Concept");
- addChildConcept((ClassificationSchemeImpl)scheme, "ExternalIdentifier");
- addChildConcept((ClassificationSchemeImpl)scheme, "ExternalLink");
- addChildConcept((ClassificationSchemeImpl)scheme, "ExtrinsicObject");
- addChildConcept((ClassificationSchemeImpl)scheme, "Organization");
- addChildConcept((ClassificationSchemeImpl)scheme, "Package");
- addChildConcept((ClassificationSchemeImpl)scheme, "Service");
- addChildConcept((ClassificationSchemeImpl)scheme, "ServiceBinding");
- addChildConcept((ClassificationSchemeImpl)scheme, "User");
- }
- else if ("PhoneType".equals(namePatterns)) {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
-
- scheme.setName(new InternationalStringImpl(namePatterns));
-
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
-
- addChildConcept((ClassificationSchemeImpl)scheme, "OfficePhone");
- addChildConcept((ClassificationSchemeImpl)scheme, "HomePhone");
- addChildConcept((ClassificationSchemeImpl)scheme, "MobilePhone");
- addChildConcept((ClassificationSchemeImpl)scheme, "Beeper");
- addChildConcept((ClassificationSchemeImpl)scheme, "FAX");
- }
- else if ("URLType".equals(namePatterns)) {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
-
- scheme.setName(new InternationalStringImpl(namePatterns));
-
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
-
- addChildConcept((ClassificationSchemeImpl)scheme, "HTTP");
- addChildConcept((ClassificationSchemeImpl)scheme, "HTTPS");
- addChildConcept((ClassificationSchemeImpl)scheme, "SMTP");
- addChildConcept((ClassificationSchemeImpl)scheme, "PHONE");
- addChildConcept((ClassificationSchemeImpl)scheme, "FAX");
- addChildConcept((ClassificationSchemeImpl)scheme, "OTHER");
- }
- else if ("PostalAddressAttributes".equals(namePatterns)) {
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
-
- scheme.setName(new InternationalStringImpl(namePatterns));
-
- scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
-
- addChildConcept((ClassificationSchemeImpl)scheme, "StreetNumber");
- addChildConcept((ClassificationSchemeImpl)scheme, "Street");
- addChildConcept((ClassificationSchemeImpl)scheme, "City");
- addChildConcept((ClassificationSchemeImpl)scheme, "State");
- addChildConcept((ClassificationSchemeImpl)scheme, "PostalCode");
- addChildConcept((ClassificationSchemeImpl)scheme, "Country");
- }
- else {
-
- //Lets ask the uddi registry if it has the TModels
- IRegistry registry = (IRegistry) registryService.getRegistry();
- FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
- try
- {
- //We are looking for one exact match, so getting upto 3 records is fine
- TModelList list = registry.findTModel(namePatterns, null, null, juddiFindQualifiers, 3);
- if (list != null) {
- TModelInfos infos = list.getTModelInfos();
- if (infos != null) {
- List<TModelInfo> tmodelInfoList = infos.getTModelInfo();
- if (tmodelInfoList.size() > 1) {
- throw new InvalidRequestException("Multiple matches found:" + tmodelInfoList.size());
- }
- if (tmodelInfoList.size() ==1) {
- TModelInfo info = tmodelInfoList.get(0);
- scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
- scheme.setName(new InternationalStringImpl(info.getName().getValue()));
- scheme.setKey(new KeyImpl(info.getTModelKey()));
- }
- }
- }
-
- } catch (RegistryException e)
- {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- }
- return scheme;
- }
-
- /**
- * Creates a new Concept, associates w/ parent scheme, and then
- * adds as decendent.
- * @param scheme
- * @param name
- * @throws JAXRException
- */
- private void addChildConcept(ClassificationSchemeImpl scheme, String name)
- throws JAXRException {
- Concept c = new ConceptImpl(registryService.getLifeCycleManagerImpl());
-
- c.setName(new InternationalStringImpl(name));
- c.setValue(name);
- ((ConceptImpl)c).setScheme((ClassificationSchemeImpl)scheme);
-
- scheme.addChildConcept(c);
- }
-
- public BulkResponse findClassificationSchemes(Collection findQualifiers,
- Collection namePatterns,
- Collection classifications,
- Collection externalLinks) throws JAXRException
- {
- //TODO: Handle this better
- LinkedHashSet<ClassificationScheme> col = new LinkedHashSet<ClassificationScheme>();
- Iterator iter = namePatterns.iterator();
- String name = "";
- while(iter.hasNext())
- {
- name = (String)iter.next();
- break;
- }
-
- ClassificationScheme classificationScheme = findClassificationSchemeByName(findQualifiers,name);
- if (classificationScheme!=null) {
- col.add(classificationScheme);
- }
- return new BulkResponseImpl(col);
- }
-
- public Concept findConceptByPath(String path) throws JAXRException
- {
- //We will store the enumerations datastructure in the util package
- /**
- * I am not clear about how this association type enumerations
- * are to be implemented.
- */
- return EnumerationHelper.getConceptByPath(path);
- }
-
- public BulkResponse findConcepts(Collection findQualifiers,
- Collection namePatterns,
- Collection classifications,
- Collection externalIdentifiers,
- Collection externalLinks) throws JAXRException
- {
- LinkedHashSet<Concept> col = new LinkedHashSet<Concept>();
-
- //Lets ask the uddi registry if it has the TModels
- IRegistry registry = (IRegistry) registryService.getRegistry();
- FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
- Iterator iter = null;
- if (namePatterns != null) iter = namePatterns.iterator();
- while (iter.hasNext())
- {
- String namestr = (String) iter.next();
- try
- {
- TModelList list = registry.findTModel(namestr,
- ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
- ScoutJaxrUddiHelper.getIdentifierBagFromExternalIdentifiers(externalIdentifiers),
- juddiFindQualifiers, 10);
-
- if (list != null && list.getTModelInfos()!=null) {
- List<TModelInfo> tmodelInfoList = list.getTModelInfos().getTModelInfo();
- if (tmodelInfoList!=null) {
- for (TModelInfo info: tmodelInfoList) {
- col.add(ScoutUddiJaxrHelper.getConcept(info, this.registryService.getBusinessLifeCycleManager()));
- }
- }
- }
- } catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
-
- return new BulkResponseImpl(col);
- }
-
- public BulkResponse findRegistryPackages(Collection findQualifiers,
- Collection namePatterns,
- Collection classifications,
- Collection externalLinks) throws JAXRException
- {
- throw new UnsupportedCapabilityException();
- }
-
- public BulkResponse findServiceBindings(Key serviceKey,
- Collection findQualifiers,
- Collection classifications,
- Collection specifications) throws JAXRException
- {
- BulkResponseImpl blkRes = new BulkResponseImpl();
-
- IRegistry iRegistry = (IRegistry) registryService.getRegistry();
- FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
-
- try
- {
-
- BindingDetail bindingDetail = iRegistry.findBinding(serviceKey.getId(),
- ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
- ScoutJaxrUddiHelper.getTModelBagFromSpecifications(specifications),
- juddiFindQualifiers,registryService.getMaxRows());
-
- /*
- * now convert from jUDDI ServiceInfo objects to JAXR Services
- */
- if (bindingDetail != null) {
-
- List<BindingTemplate> bindingTemplateList = bindingDetail.getBindingTemplate();
- BindingTemplate[] bindarr = new BindingTemplate[bindingTemplateList.size()];
- bindingTemplateList.toArray(bindarr);
-
- LinkedHashSet<ServiceBinding> col = new LinkedHashSet<ServiceBinding>();
-
- for (int i=0; bindarr != null && i < bindarr.length; i++) {
- BindingTemplate si = bindarr[i];
- ServiceBinding sb = ScoutUddiJaxrHelper.getServiceBinding(si,
- registryService.getBusinessLifeCycleManager());
- col.add(sb);
- //Fill the Service object by making a call to registry
- Service s = (Service)getRegistryObject(serviceKey.getId(), LifeCycleManager.SERVICE);
- ((ServiceBindingImpl)sb).setService(s);
- }
-
- blkRes.setCollection(col);
- }
- }
- catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
-
- return blkRes;
- }
-
-
- /**
- * Finds all Service objects that match all of the criteria specified by
- * the parameters of this call. This is a logical AND operation between
- * all non-null parameters
- *
- * TODO - support findQualifiers, classifications and specifications
- *
- * @param orgKey
- * @param findQualifiers
- * @param namePatterns
- * @param classifications
- * @param specificationa
- * @return BulkResponse
- * @throws JAXRException
- */
- public BulkResponse findServices(Key orgKey, Collection findQualifiers,
- Collection namePatterns,
- Collection classifications,
- Collection specificationa) throws JAXRException
- {
- BulkResponseImpl blkRes = new BulkResponseImpl();
-
- IRegistry iRegistry = (IRegistry) registryService.getRegistry();
- FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
- Name[] juddiNames = mapNamePatterns(namePatterns);
-
- try
- {
- /*
- * hit the registry. The key is not required for UDDI2
- */
-
- String id = null;
-
- if (orgKey != null) {
- id = orgKey.getId();
- }
-
- ServiceList serviceList = iRegistry.findService(id,
- juddiNames,
- ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
- null,
- juddiFindQualifiers, registryService.getMaxRows());
-
- /*
- * now convert from jUDDI ServiceInfo objects to JAXR Services
- */
- if (serviceList != null) {
-
- ServiceInfos serviceInfos = serviceList.getServiceInfos();
- LinkedHashSet<Service> col = new LinkedHashSet<Service>();
-
- if(serviceInfos != null && serviceInfos.getServiceInfo()!=null) {
- for (ServiceInfo si : serviceInfos.getServiceInfo()) {
- Service srv = (Service) getRegistryObject(si.getServiceKey(), LifeCycleManager.SERVICE);
- col.add(srv);
- }
-
- }
- blkRes.setCollection(col);
- }
- }
- catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
-
- return blkRes;
- }
-
- public RegistryObject getRegistryObject(String id) throws JAXRException
- {
- throw new UnsupportedCapabilityException();
- }
-
- public RegistryObject getRegistryObject(String id, String objectType) throws JAXRException
- {
- IRegistry registry = (IRegistry) registryService.getRegistry();
- BusinessLifeCycleManager lcm = registryService.getBusinessLifeCycleManager();
-
- if (LifeCycleManager.CLASSIFICATION_SCHEME.equalsIgnoreCase(objectType)) {
-
- try {
-
- TModelDetail tmodeldetail = registry.getTModelDetail(id);
- Concept c = ScoutUddiJaxrHelper.getConcept(tmodeldetail, lcm);
-
- /*
- * now turn into a concrete ClassificationScheme
- */
-
- ClassificationScheme scheme = new ClassificationSchemeImpl(lcm);
-
- scheme.setName(c.getName());
- scheme.setDescription(c.getDescription());
- scheme.setKey(c.getKey());
-
- return scheme;
- }
- catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- else if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(objectType)) {
- try
- {
- BusinessDetail orgdetail = registry.getBusinessDetail(id);
- return ScoutUddiJaxrHelper.getOrganization(orgdetail, lcm);
- }
- catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
-
- }
- else if (LifeCycleManager.CONCEPT.equalsIgnoreCase(objectType)) {
-
- try
- {
- TModelDetail tmodeldetail = registry.getTModelDetail(id);
- return ScoutUddiJaxrHelper.getConcept(tmodeldetail, lcm);
- }
- catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- else if (LifeCycleManager.SERVICE.equalsIgnoreCase(objectType)) {
-
- try {
- ServiceDetail sd = registry.getServiceDetail(id);
- if (sd != null && sd.getBusinessService()!=null) {
- for (BusinessService businessService : sd.getBusinessService()) {
- Service service = getServiceFromBusinessService(businessService, lcm);
- return service;
- }
- }
- }
- catch (RegistryException e) {
- throw new RuntimeException(e);
- }
- }
-
- return null;
- }
-
- /**
- * Helper routine to take a jUDDI business service and turn into a useful
- * Service. Needs to go back to the registry to get the organization to
- * properly hydrate the Service
- *
- * @param bs BusinessService object to turn in to a Service
- * @param lcm manager to use
- * @return new Service object
- * @throws JAXRException
- */
- protected Service getServiceFromBusinessService(BusinessService bs, LifeCycleManager lcm)
- throws JAXRException {
-
- ServiceImpl service = (ServiceImpl) ScoutUddiJaxrHelper.getService(bs, lcm);
- service.setSubmittingOrganizationKey(bs.getBusinessKey());
-
- return service;
- }
-
- /**
- * Gets the RegistryObjects owned by the caller. The objects
- * are returned as their concrete type (e.g. Organization, User etc.)
- *
- * TODO - need to figure out what the set are. This is just to get some
- * basic functionality
- *
- * @return BulkResponse
- * @throws JAXRException
- */
- public BulkResponse getRegistryObjects() throws JAXRException
- {
- String types[] = {
- LifeCycleManager.ORGANIZATION,
- LifeCycleManager.SERVICE};
-
- LinkedHashSet<Object> c = new LinkedHashSet<Object>();
-
- for (int i = 0; i < types.length; i++) {
- try {
- BulkResponse bk = getRegistryObjects(types[i]);
-
- if (bk.getCollection() != null) {
- c.addAll(bk.getCollection());
- }
- } catch(JAXRException e) {
- log.debug("ignore - just a problem with that type? " + e.getMessage(), e);
- }
- }
-
- return new BulkResponseImpl(c);
- }
-
- public BulkResponse getRegistryObjects(Collection objectKeys) throws JAXRException
- {
- throw new UnsupportedCapabilityException();
- }
-
- public BulkResponse getRegistryObjects(Collection objectKeys, String objectType) throws JAXRException
- {
- IRegistry registry = (IRegistry) registryService.getRegistry();
- //Convert into a vector of strings
- String[] keys = new String[objectKeys.size()];
- int currLoc = 0;
- for (Key key : (Collection<Key>) objectKeys) {
- keys[currLoc] = key.getId();
- currLoc++;
- }
- LinkedHashSet<RegistryObject> col = new LinkedHashSet<RegistryObject>();
- LifeCycleManager lcm = registryService.getLifeCycleManagerImpl();
-
- if (LifeCycleManager.CLASSIFICATION_SCHEME.equalsIgnoreCase(objectType))
- {
- try
- {
- TModelDetail tmodeldetail = registry.getTModelDetail(keys);
- List<TModel> tmodelList = tmodeldetail.getTModel();
-
- for (TModel tModel: tmodelList)
- {
- col.add(ScoutUddiJaxrHelper.getConcept(tModel, lcm));
- }
-
- } catch (RegistryException e)
- {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- else if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(objectType))
- {
- ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
- AuthToken auth = this.getAuthToken(con,registry);
-
- try
- {
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
- if (ri != null) {
- BusinessInfos infos = ri.getBusinessInfos();
- if (infos != null) {
- List<BusinessInfo> bizInfoList = infos.getBusinessInfo();
- for (BusinessInfo businessInfo: bizInfoList) {
- BusinessDetail detail = registry.getBusinessDetail(businessInfo.getBusinessKey());
- col.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
- }
- }
- }
- } catch (RegistryException e) {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- else if (LifeCycleManager.CONCEPT.equalsIgnoreCase(objectType))
- {
- try {
- TModelDetail tmodeldetail = registry.getTModelDetail(keys);
- List<TModel> tmodelList = tmodeldetail.getTModel();
-
- for (TModel tmodel: tmodelList)
- {
- col.add(ScoutUddiJaxrHelper.getConcept(tmodel, lcm));
- }
-
- }
- catch (RegistryException e)
- {
- throw new JAXRException(e.getLocalizedMessage());
- }
- }
- else if (LifeCycleManager.SERVICE.equalsIgnoreCase(objectType)) {
-
- try {
- ServiceDetail serviceDetail = registry.getServiceDetail(keys);
-
- if (serviceDetail != null) {
- List<BusinessService> bizServiceList = serviceDetail.getBusinessService();
-
- for (BusinessService businessService: bizServiceList) {
-
- Service service = getServiceFromBusinessService(businessService, lcm);
-
- col.add(service);
- }
- }
- }
- catch (RegistryException e) {
- throw new JAXRException(e);
- }
- }
- else {
- throw new JAXRException("Unsupported type " + objectType +
- " for getRegistryObjects() in Apache Scout");
- }
-
- return new BulkResponseImpl(col);
-
- }
-
- public BulkResponse getRegistryObjects(String id) throws JAXRException
- {
- if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(id)) {
- IRegistry registry = (IRegistry) registryService.getRegistry();
- ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
- AuthToken auth = this.getAuthToken(con,registry);
- LinkedHashSet<Organization> orgs = null;
- try
- {
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
- if (ri != null && ri.getBusinessInfos()!=null) {
- List<BusinessInfo> bizInfoList = ri.getBusinessInfos().getBusinessInfo();
- orgs = new LinkedHashSet<Organization>();
- for (BusinessInfo businessInfo : bizInfoList) {
- BusinessDetail detail = registry.getBusinessDetail(businessInfo.getBusinessKey());
- orgs.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
- }
- }
-
- } catch (RegistryException re) {
- throw new JAXRException(re);
- }
- return new BulkResponseImpl(orgs);
- }
- else if (LifeCycleManager.SERVICE.equalsIgnoreCase(id)) {
- List<String> a = new ArrayList<String>();
- a.add("%");
-
- BulkResponse br = this.findServices(null,null, a, null, null);
-
- return br;
- }
- else
- {
- throw new JAXRException("Unsupported type for getRegistryObjects() :" + id);
- }
-
- }
-
- static FindQualifiers mapFindQualifiers(Collection jaxrQualifiers) throws UnsupportedCapabilityException
- {
- if (jaxrQualifiers == null)
- {
- return null;
- }
- FindQualifiers result = objectFactory.createFindQualifiers();
- for (Iterator i = jaxrQualifiers.iterator(); i.hasNext();)
- {
- String jaxrQualifier = (String) i.next();
- String juddiQualifier = jaxrQualifier;
- if (juddiQualifier == null)
- {
- throw new UnsupportedCapabilityException("jUDDI does not support FindQualifer: " + jaxrQualifier);
- }
- result.getFindQualifier().add(juddiQualifier);
- }
- return result;
- }
-
- static Name[] mapNamePatterns(Collection namePatterns)
- throws JAXRException
- {
- if (namePatterns == null)
- return null;
- Name[] result = new Name[namePatterns.size()];
- int currLoc = 0;
- for (Iterator i = namePatterns.iterator(); i.hasNext();)
- {
- Object obj = i.next();
- Name name = objectFactory.createName();
- if (obj instanceof String) {
- name.setValue((String)obj);
- } else if (obj instanceof LocalizedString) {
- LocalizedString ls = (LocalizedString)obj;
- name.setValue(ls.getValue());
- name.setLang(ls.getLocale().getLanguage());
- }
- result[currLoc] = name;
- currLoc++;
- }
- return result;
- }
-
- /**
- * Get the Auth Token from the registry
- *
- * @param connection
- * @param ireg
- * @return auth token
- * @throws JAXRException
- */
- private AuthToken getAuthToken(ConnectionImpl connection, IRegistry ireg)
- throws JAXRException {
- Set creds = connection.getCredentials();
- Iterator it = creds.iterator();
- String username = "", pwd = "";
- while (it.hasNext()) {
- PasswordAuthentication pass = (PasswordAuthentication) it.next();
- username = pass.getUserName();
- pwd = new String(pass.getPassword());
- }
- AuthToken token = null;
- try {
- token = ireg.getAuthToken(username, pwd);
- }
- catch (Exception e) {
- throw new JAXRException(e);
- }
- return token;
- }
-}
+/**
+ *
+ * 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.registry;
+
+import java.net.PasswordAuthentication;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.registry.BulkResponse;
+import javax.xml.registry.BusinessLifeCycleManager;
+import javax.xml.registry.BusinessQueryManager;
+import javax.xml.registry.InvalidRequestException;
+import javax.xml.registry.JAXRException;
+import javax.xml.registry.LifeCycleManager;
+import javax.xml.registry.RegistryService;
+import javax.xml.registry.UnsupportedCapabilityException;
+import javax.xml.registry.infomodel.Association;
+import javax.xml.registry.infomodel.ClassificationScheme;
+import javax.xml.registry.infomodel.Concept;
+import javax.xml.registry.infomodel.Key;
+import javax.xml.registry.infomodel.LocalizedString;
+import javax.xml.registry.infomodel.Organization;
+import javax.xml.registry.infomodel.RegistryObject;
+import javax.xml.registry.infomodel.Service;
+import javax.xml.registry.infomodel.ServiceBinding;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.scout.model.uddi.v2.AssertionStatusItem;
+import org.apache.ws.scout.model.uddi.v2.AssertionStatusReport;
+import org.apache.ws.scout.model.uddi.v2.AuthToken;
+import org.apache.ws.scout.model.uddi.v2.BindingDetail;
+import org.apache.ws.scout.model.uddi.v2.BindingTemplate;
+import org.apache.ws.scout.model.uddi.v2.BusinessDetail;
+import org.apache.ws.scout.model.uddi.v2.BusinessInfo;
+import org.apache.ws.scout.model.uddi.v2.BusinessInfos;
+import org.apache.ws.scout.model.uddi.v2.BusinessList;
+import org.apache.ws.scout.model.uddi.v2.BusinessService;
+import org.apache.ws.scout.model.uddi.v2.FindQualifiers;
+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.PublisherAssertion;
+import org.apache.ws.scout.model.uddi.v2.PublisherAssertions;
+import org.apache.ws.scout.model.uddi.v2.RegisteredInfo;
+import org.apache.ws.scout.model.uddi.v2.ServiceDetail;
+import org.apache.ws.scout.model.uddi.v2.ServiceInfo;
+import org.apache.ws.scout.model.uddi.v2.ServiceInfos;
+import org.apache.ws.scout.model.uddi.v2.ServiceList;
+import org.apache.ws.scout.model.uddi.v2.TModel;
+import org.apache.ws.scout.model.uddi.v2.TModelDetail;
+import org.apache.ws.scout.model.uddi.v2.TModelInfo;
+import org.apache.ws.scout.model.uddi.v2.TModelInfos;
+import org.apache.ws.scout.model.uddi.v2.TModelList;
+import org.apache.ws.scout.registry.infomodel.AssociationImpl;
+import org.apache.ws.scout.registry.infomodel.ClassificationSchemeImpl;
+import org.apache.ws.scout.registry.infomodel.ConceptImpl;
+import org.apache.ws.scout.registry.infomodel.InternationalStringImpl;
+import org.apache.ws.scout.registry.infomodel.KeyImpl;
+import org.apache.ws.scout.registry.infomodel.ServiceBindingImpl;
+import org.apache.ws.scout.registry.infomodel.ServiceImpl;
+import org.apache.ws.scout.util.EnumerationHelper;
+import org.apache.ws.scout.util.ScoutJaxrUddiHelper;
+import org.apache.ws.scout.util.ScoutUddiJaxrHelper;
+
+/**
+ * Implements the JAXR BusinessQueryManager Interface
+ * For futher details, look into the JAXR API Javadoc.
+ *
+ * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
+ * @author <a href="mailto:anil@apache.org">Anil Saldhana</a>
+ * @author <a href="mailto:jboynes@apache.org">Jeremy Boynes</a>
+ * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
+ */
+public class BusinessQueryManagerImpl implements BusinessQueryManager
+{
+ private final RegistryServiceImpl registryService;
+ private Log log = LogFactory.getLog(this.getClass());
+
+ private static ObjectFactory objectFactory = new ObjectFactory();
+
+ public BusinessQueryManagerImpl(RegistryServiceImpl registry)
+ {
+ this.registryService = registry;
+ }
+
+ public RegistryService getRegistryService()
+ {
+ return registryService;
+ }
+
+ /**
+ * Finds organizations in the registry that match the specified parameters
+ *
+ * @param findQualifiers
+ * @param namePatterns
+ * @param classifications
+ * @param specifications
+ * @param externalIdentifiers
+ * @param externalLinks
+ * @return BulkResponse
+ * @throws JAXRException
+ */
+ public BulkResponse findOrganizations(Collection findQualifiers,
+ Collection namePatterns,
+ Collection classifications,
+ Collection specifications,
+ Collection externalIdentifiers,
+ Collection externalLinks) throws JAXRException
+ {
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ try
+ {
+ FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
+ Name[] nameArray = mapNamePatterns(namePatterns);
+ BusinessList result = registry.findBusiness(nameArray,
+ null,
+ ScoutJaxrUddiHelper.getIdentifierBagFromExternalIdentifiers(externalIdentifiers),
+ ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
+ null,
+ juddiFindQualifiers,
+ registryService.getMaxRows());
+
+ BusinessInfo[] bizInfoArr =null;
+ BusinessInfos bizInfos = result.getBusinessInfos();
+ LinkedHashSet<Organization> orgs = new LinkedHashSet<Organization>();
+ if(bizInfos != null)
+ {
+ List<BusinessInfo> bizInfoList = bizInfos.getBusinessInfo();
+ for (BusinessInfo businessInfo : bizInfoList) {
+ //Now get the details on the individual biz
+ BusinessDetail detail = registry.getBusinessDetail(businessInfo.getBusinessKey());
+ orgs.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
+ }
+ bizInfoArr = new BusinessInfo[bizInfoList.size()];
+ bizInfoList.toArray(bizInfoArr);
+ }
+ return new BulkResponseImpl(orgs);
+ } catch (RegistryException e)
+ {
+ throw new JAXRException(e);
+ }
+ }
+
+ public BulkResponse findAssociations(Collection findQualifiers,
+ String sourceObjectId,
+ String targetObjectId,
+ Collection associationTypes) throws JAXRException
+ {
+ //TODO: Currently we just return all the Association objects owned by the caller
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ try
+ {
+ ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
+ AuthToken auth = this.getAuthToken(con,registry);
+ PublisherAssertions result =
+ registry.getPublisherAssertions(auth.getAuthInfo());
+ List<PublisherAssertion> publisherAssertionList = result.getPublisherAssertion();
+ LinkedHashSet<Association> col = new LinkedHashSet<Association>();
+ for (PublisherAssertion pas : publisherAssertionList) {
+ String sourceKey = pas.getFromKey();
+ String targetKey = pas.getToKey();
+
+ if ((sourceObjectId==null || sourceObjectId.equals(sourceKey))
+ && (targetObjectId==null || targetObjectId.equals(targetKey))) {
+ Collection<Key> orgcol = new ArrayList<Key>();
+ orgcol.add(new KeyImpl(sourceKey));
+ orgcol.add(new KeyImpl(targetKey));
+ BulkResponse bl = getRegistryObjects(orgcol, LifeCycleManager.ORGANIZATION);
+ Association asso = ScoutUddiJaxrHelper.getAssociation(bl.getCollection(),
+ registryService.getBusinessLifeCycleManager());
+ KeyedReference keyr = pas.getKeyedReference();
+ Concept c = new ConceptImpl(getRegistryService().getBusinessLifeCycleManager());
+ c.setName(new InternationalStringImpl(keyr.getKeyName()));
+ c.setKey( new KeyImpl(keyr.getTModelKey()) );
+ c.setValue(keyr.getKeyValue());
+ asso.setAssociationType(c);
+ col.add(asso);
+ }
+
+ }
+ return new BulkResponseImpl(col);
+ } catch (RegistryException e)
+ {
+ throw new JAXRException(e);
+ }
+ }
+
+ public BulkResponse findCallerAssociations(Collection findQualifiers,
+ Boolean confirmedByCaller,
+ Boolean confirmedByOtherParty,
+ Collection associationTypes) throws JAXRException
+ {
+ //TODO: Currently we just return all the Association objects owned by the caller
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ try
+ {
+ ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
+ AuthToken auth = this.getAuthToken(con,registry);
+
+ AssertionStatusReport report = null;
+ String confirm = "";
+ boolean caller = confirmedByCaller.booleanValue();
+ boolean other = confirmedByOtherParty.booleanValue();
+
+ if(caller && other )
+ confirm = Constants.COMPLETION_STATUS_COMPLETE;
+ else
+ if(!caller && other )
+ confirm = Constants.COMPLETION_STATUS_FROMKEY_INCOMPLETE;
+ else
+ if(caller && !other )
+ confirm = Constants.COMPLETION_STATUS_TOKEY_INCOMPLETE;
+
+ report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
+
+
+ List<AssertionStatusItem> assertionStatusItemList = report.getAssertionStatusItem();
+ LinkedHashSet<Association> col = new LinkedHashSet<Association>();
+ for (AssertionStatusItem asi : assertionStatusItemList) {
+ String sourceKey = asi.getFromKey();
+ String targetKey = asi.getToKey();
+ Collection<Key> orgcol = new ArrayList<Key>();
+ orgcol.add(new KeyImpl(sourceKey));
+ orgcol.add(new KeyImpl(targetKey));
+ BulkResponse bl = getRegistryObjects(orgcol, LifeCycleManager.ORGANIZATION);
+ Association asso = ScoutUddiJaxrHelper.getAssociation(bl.getCollection(),
+ registryService.getBusinessLifeCycleManager());
+ //Set Confirmation
+ ((AssociationImpl)asso).setConfirmedBySourceOwner(caller);
+ ((AssociationImpl)asso).setConfirmedByTargetOwner(other);
+
+ if(confirm != Constants.COMPLETION_STATUS_COMPLETE)
+ ((AssociationImpl)asso).setConfirmed(false);
+
+ Concept c = new ConceptImpl(getRegistryService().getBusinessLifeCycleManager());
+ KeyedReference keyr = asi.getKeyedReference();
+ c.setKey(new KeyImpl(keyr.getTModelKey()));
+ c.setName(new InternationalStringImpl(keyr.getKeyName()));
+ c.setValue(keyr.getKeyValue());
+ asso.setKey(new KeyImpl(keyr.getTModelKey())); //TODO:Validate this
+ asso.setAssociationType(c);
+ col.add(asso);
+ }
+
+
+ return new BulkResponseImpl(col);
+ } catch (RegistryException e)
+ {
+ throw new JAXRException(e);
+ }
+ }
+
+ /**
+ * TODO - need to support the qualifiers
+ *
+ * @param findQualifiers
+ * @param namePatterns
+ * @return ClassificationScheme
+ * @throws JAXRException
+ */
+ public ClassificationScheme findClassificationSchemeByName(Collection findQualifiers,
+ String namePatterns) throws JAXRException
+ {
+ ClassificationScheme scheme = null;
+
+ if (namePatterns.indexOf("uddi-org:types") != -1) {
+
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_TYPES_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("dnb-com:D-U-N-S") != -1) {
+
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_D_U_N_S_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("uddi-org:iso-ch:3166:1999") != -1)
+ {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("uddi-org:iso-ch:3166-1999") != -1)
+ {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("iso-ch:3166:1999") != -1)
+ {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("iso-ch:3166-1999") != -1)
+ {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_ISO_CH_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("unspsc-org:unspsc") != -1) {
+
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+ }
+ else if (namePatterns.indexOf("ntis-gov:naics") != -1) {
+
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(namePatterns));
+ scheme.setKey(new KeyImpl(Constants.TMODEL_NAICS_TMODEL_KEY));
+ }
+ else
+ { //TODO:Before going to the registry, check if it a predefined Enumeration
+
+ /*
+ * predefined Enumerations
+ */
+
+ if ("AssociationType".equals(namePatterns)) {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+
+ scheme.setName(new InternationalStringImpl(namePatterns));
+
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+
+ addChildConcept((ClassificationSchemeImpl)scheme, "RelatedTo");
+ addChildConcept((ClassificationSchemeImpl)scheme, "HasChild");
+ addChildConcept((ClassificationSchemeImpl)scheme, "HasMember");
+ addChildConcept((ClassificationSchemeImpl)scheme, "HasParent");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ExternallyLinks");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Contains");
+ addChildConcept((ClassificationSchemeImpl)scheme, "EquivalentTo");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Extends");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Implements");
+ addChildConcept((ClassificationSchemeImpl)scheme, "InstanceOf");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Supersedes");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Uses");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Replaces");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ResponsibleFor");
+ addChildConcept((ClassificationSchemeImpl)scheme, "SubmitterOf");
+ }
+ else if ("ObjectType".equals(namePatterns)) {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+
+ scheme.setName(new InternationalStringImpl(namePatterns));
+
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+
+ addChildConcept((ClassificationSchemeImpl)scheme, "CPP");
+ addChildConcept((ClassificationSchemeImpl)scheme, "CPA");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Process");
+ addChildConcept((ClassificationSchemeImpl)scheme, "WSDL");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Association");
+ addChildConcept((ClassificationSchemeImpl)scheme, "AuditableEvent");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Classification");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Concept");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ExternalIdentifier");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ExternalLink");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ExtrinsicObject");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Organization");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Package");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Service");
+ addChildConcept((ClassificationSchemeImpl)scheme, "ServiceBinding");
+ addChildConcept((ClassificationSchemeImpl)scheme, "User");
+ }
+ else if ("PhoneType".equals(namePatterns)) {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+
+ scheme.setName(new InternationalStringImpl(namePatterns));
+
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+
+ addChildConcept((ClassificationSchemeImpl)scheme, "OfficePhone");
+ addChildConcept((ClassificationSchemeImpl)scheme, "HomePhone");
+ addChildConcept((ClassificationSchemeImpl)scheme, "MobilePhone");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Beeper");
+ addChildConcept((ClassificationSchemeImpl)scheme, "FAX");
+ }
+ else if ("URLType".equals(namePatterns)) {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+
+ scheme.setName(new InternationalStringImpl(namePatterns));
+
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+
+ addChildConcept((ClassificationSchemeImpl)scheme, "HTTP");
+ addChildConcept((ClassificationSchemeImpl)scheme, "HTTPS");
+ addChildConcept((ClassificationSchemeImpl)scheme, "SMTP");
+ addChildConcept((ClassificationSchemeImpl)scheme, "PHONE");
+ addChildConcept((ClassificationSchemeImpl)scheme, "FAX");
+ addChildConcept((ClassificationSchemeImpl)scheme, "OTHER");
+ }
+ else if ("PostalAddressAttributes".equals(namePatterns)) {
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+
+ scheme.setName(new InternationalStringImpl(namePatterns));
+
+ scheme.setKey(new KeyImpl(Constants.TMODEL_UNSPSC_TMODEL_KEY));
+
+ addChildConcept((ClassificationSchemeImpl)scheme, "StreetNumber");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Street");
+ addChildConcept((ClassificationSchemeImpl)scheme, "City");
+ addChildConcept((ClassificationSchemeImpl)scheme, "State");
+ addChildConcept((ClassificationSchemeImpl)scheme, "PostalCode");
+ addChildConcept((ClassificationSchemeImpl)scheme, "Country");
+ }
+ else {
+
+ //Lets ask the uddi registry if it has the TModels
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
+ try
+ {
+ //We are looking for one exact match, so getting upto 3 records is fine
+ TModelList list = registry.findTModel(namePatterns, null, null, juddiFindQualifiers, 3);
+ if (list != null) {
+ TModelInfos infos = list.getTModelInfos();
+ if (infos != null) {
+ List<TModelInfo> tmodelInfoList = infos.getTModelInfo();
+ if (tmodelInfoList.size() > 1) {
+ throw new InvalidRequestException("Multiple matches found:" + tmodelInfoList.size());
+ }
+ if (tmodelInfoList.size() ==1) {
+ TModelInfo info = tmodelInfoList.get(0);
+ scheme = new ClassificationSchemeImpl(registryService.getLifeCycleManagerImpl());
+ scheme.setName(new InternationalStringImpl(info.getName().getValue()));
+ scheme.setKey(new KeyImpl(info.getTModelKey()));
+ }
+ }
+ }
+
+ } catch (RegistryException e)
+ {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ }
+ return scheme;
+ }
+
+ /**
+ * Creates a new Concept, associates w/ parent scheme, and then
+ * adds as decendent.
+ * @param scheme
+ * @param name
+ * @throws JAXRException
+ */
+ private void addChildConcept(ClassificationSchemeImpl scheme, String name)
+ throws JAXRException {
+ Concept c = new ConceptImpl(registryService.getLifeCycleManagerImpl());
+
+ c.setName(new InternationalStringImpl(name));
+ c.setValue(name);
+ ((ConceptImpl)c).setScheme((ClassificationSchemeImpl)scheme);
+
+ scheme.addChildConcept(c);
+ }
+
+ public BulkResponse findClassificationSchemes(Collection findQualifiers,
+ Collection namePatterns,
+ Collection classifications,
+ Collection externalLinks) throws JAXRException
+ {
+ //TODO: Handle this better
+ LinkedHashSet<ClassificationScheme> col = new LinkedHashSet<ClassificationScheme>();
+ Iterator iter = namePatterns.iterator();
+ String name = "";
+ while(iter.hasNext())
+ {
+ name = (String)iter.next();
+ break;
+ }
+
+ ClassificationScheme classificationScheme = findClassificationSchemeByName(findQualifiers,name);
+ if (classificationScheme!=null) {
+ col.add(classificationScheme);
+ }
+ return new BulkResponseImpl(col);
+ }
+
+ public Concept findConceptByPath(String path) throws JAXRException
+ {
+ //We will store the enumerations datastructure in the util package
+ /**
+ * I am not clear about how this association type enumerations
+ * are to be implemented.
+ */
+ return EnumerationHelper.getConceptByPath(path);
+ }
+
+ public BulkResponse findConcepts(Collection findQualifiers,
+ Collection namePatterns,
+ Collection classifications,
+ Collection externalIdentifiers,
+ Collection externalLinks) throws JAXRException
+ {
+ LinkedHashSet<Concept> col = new LinkedHashSet<Concept>();
+
+ //Lets ask the uddi registry if it has the TModels
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
+ Iterator iter = null;
+ if (namePatterns != null) iter = namePatterns.iterator();
+ while (iter.hasNext())
+ {
+ String namestr = (String) iter.next();
+ try
+ {
+ TModelList list = registry.findTModel(namestr,
+ ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
+ ScoutJaxrUddiHelper.getIdentifierBagFromExternalIdentifiers(externalIdentifiers),
+ juddiFindQualifiers, 10);
+
+ if (list != null && list.getTModelInfos()!=null) {
+ List<TModelInfo> tmodelInfoList = list.getTModelInfos().getTModelInfo();
+ if (tmodelInfoList!=null) {
+ for (TModelInfo info: tmodelInfoList) {
+ col.add(ScoutUddiJaxrHelper.getConcept(info, this.registryService.getBusinessLifeCycleManager()));
+ }
+ }
+ }
+ } catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+
+ return new BulkResponseImpl(col);
+ }
+
+ public BulkResponse findRegistryPackages(Collection findQualifiers,
+ Collection namePatterns,
+ Collection classifications,
+ Collection externalLinks) throws JAXRException
+ {
+ throw new UnsupportedCapabilityException();
+ }
+
+ public BulkResponse findServiceBindings(Key serviceKey,
+ Collection findQualifiers,
+ Collection classifications,
+ Collection specifications) throws JAXRException
+ {
+ BulkResponseImpl blkRes = new BulkResponseImpl();
+
+ IRegistry iRegistry = (IRegistry) registryService.getRegistry();
+ FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
+
+ try
+ {
+
+ BindingDetail bindingDetail = iRegistry.findBinding(serviceKey.getId(),
+ ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
+ ScoutJaxrUddiHelper.getTModelBagFromSpecifications(specifications),
+ juddiFindQualifiers,registryService.getMaxRows());
+
+ /*
+ * now convert from jUDDI ServiceInfo objects to JAXR Services
+ */
+ if (bindingDetail != null) {
+
+ List<BindingTemplate> bindingTemplateList = bindingDetail.getBindingTemplate();
+ BindingTemplate[] bindarr = new BindingTemplate[bindingTemplateList.size()];
+ bindingTemplateList.toArray(bindarr);
+
+ LinkedHashSet<ServiceBinding> col = new LinkedHashSet<ServiceBinding>();
+
+ for (int i=0; bindarr != null && i < bindarr.length; i++) {
+ BindingTemplate si = bindarr[i];
+ ServiceBinding sb = ScoutUddiJaxrHelper.getServiceBinding(si,
+ registryService.getBusinessLifeCycleManager());
+ col.add(sb);
+ //Fill the Service object by making a call to registry
+ Service s = (Service)getRegistryObject(serviceKey.getId(), LifeCycleManager.SERVICE);
+ ((ServiceBindingImpl)sb).setService(s);
+ }
+
+ blkRes.setCollection(col);
+ }
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+
+ return blkRes;
+ }
+
+
+ /**
+ * Finds all Service objects that match all of the criteria specified by
+ * the parameters of this call. This is a logical AND operation between
+ * all non-null parameters
+ *
+ * TODO - support findQualifiers, classifications and specifications
+ *
+ * @param orgKey
+ * @param findQualifiers
+ * @param namePatterns
+ * @param classifications
+ * @param specificationa
+ * @return BulkResponse
+ * @throws JAXRException
+ */
+ public BulkResponse findServices(Key orgKey, Collection findQualifiers,
+ Collection namePatterns,
+ Collection classifications,
+ Collection specificationa) throws JAXRException
+ {
+ BulkResponseImpl blkRes = new BulkResponseImpl();
+
+ IRegistry iRegistry = (IRegistry) registryService.getRegistry();
+ FindQualifiers juddiFindQualifiers = mapFindQualifiers(findQualifiers);
+ Name[] juddiNames = mapNamePatterns(namePatterns);
+
+ try
+ {
+ /*
+ * hit the registry. The key is not required for UDDI2
+ */
+
+ String id = null;
+
+ if (orgKey != null) {
+ id = orgKey.getId();
+ }
+
+ ServiceList serviceList = iRegistry.findService(id,
+ juddiNames,
+ ScoutJaxrUddiHelper.getCategoryBagFromClassifications(classifications),
+ null,
+ juddiFindQualifiers, registryService.getMaxRows());
+
+ /*
+ * now convert from jUDDI ServiceInfo objects to JAXR Services
+ */
+ if (serviceList != null) {
+
+ ServiceInfos serviceInfos = serviceList.getServiceInfos();
+ LinkedHashSet<Service> col = new LinkedHashSet<Service>();
+
+ if(serviceInfos != null && serviceInfos.getServiceInfo()!=null) {
+ for (ServiceInfo si : serviceInfos.getServiceInfo()) {
+ Service srv = (Service) getRegistryObject(si.getServiceKey(), LifeCycleManager.SERVICE);
+ col.add(srv);
+ }
+
+ }
+ blkRes.setCollection(col);
+ }
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+
+ return blkRes;
+ }
+
+ public RegistryObject getRegistryObject(String id) throws JAXRException
+ {
+ throw new UnsupportedCapabilityException();
+ }
+
+ public RegistryObject getRegistryObject(String id, String objectType) throws JAXRException
+ {
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ BusinessLifeCycleManager lcm = registryService.getBusinessLifeCycleManager();
+
+ if (LifeCycleManager.CLASSIFICATION_SCHEME.equalsIgnoreCase(objectType)) {
+
+ try {
+
+ TModelDetail tmodeldetail = registry.getTModelDetail(id);
+ Concept c = ScoutUddiJaxrHelper.getConcept(tmodeldetail, lcm);
+
+ /*
+ * now turn into a concrete ClassificationScheme
+ */
+
+ ClassificationScheme scheme = new ClassificationSchemeImpl(lcm);
+
+ scheme.setName(c.getName());
+ scheme.setDescription(c.getDescription());
+ scheme.setKey(c.getKey());
+
+ return scheme;
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ else if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(objectType)) {
+ try
+ {
+ BusinessDetail orgdetail = registry.getBusinessDetail(id);
+ return ScoutUddiJaxrHelper.getOrganization(orgdetail, lcm);
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+
+ }
+ else if (LifeCycleManager.CONCEPT.equalsIgnoreCase(objectType)) {
+
+ try
+ {
+ TModelDetail tmodeldetail = registry.getTModelDetail(id);
+ return ScoutUddiJaxrHelper.getConcept(tmodeldetail, lcm);
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ else if (LifeCycleManager.SERVICE.equalsIgnoreCase(objectType)) {
+
+ try {
+ ServiceDetail sd = registry.getServiceDetail(id);
+ if (sd != null && sd.getBusinessService()!=null) {
+ for (BusinessService businessService : sd.getBusinessService()) {
+ Service service = getServiceFromBusinessService(businessService, lcm);
+ return service;
+ }
+ }
+ }
+ catch (RegistryException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Helper routine to take a jUDDI business service and turn into a useful
+ * Service. Needs to go back to the registry to get the organization to
+ * properly hydrate the Service
+ *
+ * @param bs BusinessService object to turn in to a Service
+ * @param lcm manager to use
+ * @return new Service object
+ * @throws JAXRException
+ */
+ protected Service getServiceFromBusinessService(BusinessService bs, LifeCycleManager lcm)
+ throws JAXRException {
+
+ ServiceImpl service = (ServiceImpl) ScoutUddiJaxrHelper.getService(bs, lcm);
+ service.setSubmittingOrganizationKey(bs.getBusinessKey());
+
+ return service;
+ }
+
+ /**
+ * Gets the RegistryObjects owned by the caller. The objects
+ * are returned as their concrete type (e.g. Organization, User etc.)
+ *
+ * TODO - need to figure out what the set are. This is just to get some
+ * basic functionality
+ *
+ * @return BulkResponse
+ * @throws JAXRException
+ */
+ public BulkResponse getRegistryObjects() throws JAXRException
+ {
+ String types[] = {
+ LifeCycleManager.ORGANIZATION,
+ LifeCycleManager.SERVICE};
+
+ LinkedHashSet<Object> c = new LinkedHashSet<Object>();
+
+ for (int i = 0; i < types.length; i++) {
+ try {
+ BulkResponse bk = getRegistryObjects(types[i]);
+
+ if (bk.getCollection() != null) {
+ c.addAll(bk.getCollection());
+ }
+ } catch(JAXRException e) {
+ log.debug("ignore - just a problem with that type? " + e.getMessage(), e);
+ }
+ }
+
+ return new BulkResponseImpl(c);
+ }
+
+ public BulkResponse getRegistryObjects(Collection objectKeys) throws JAXRException
+ {
+ throw new UnsupportedCapabilityException();
+ }
+
+ public BulkResponse getRegistryObjects(Collection objectKeys, String objectType) throws JAXRException
+ {
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ //Convert into a vector of strings
+ String[] keys = new String[objectKeys.size()];
+ int currLoc = 0;
+ for (Key key : (Collection<Key>) objectKeys) {
+ keys[currLoc] = key.getId();
+ currLoc++;
+ }
+ LinkedHashSet<RegistryObject> col = new LinkedHashSet<RegistryObject>();
+ LifeCycleManager lcm = registryService.getLifeCycleManagerImpl();
+
+ if (LifeCycleManager.CLASSIFICATION_SCHEME.equalsIgnoreCase(objectType))
+ {
+ try
+ {
+ TModelDetail tmodeldetail = registry.getTModelDetail(keys);
+ List<TModel> tmodelList = tmodeldetail.getTModel();
+
+ for (TModel tModel: tmodelList)
+ {
+ col.add(ScoutUddiJaxrHelper.getConcept(tModel, lcm));
+ }
+
+ } catch (RegistryException e)
+ {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ else if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(objectType))
+ {
+ ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
+ AuthToken auth = this.getAuthToken(con,registry);
+
+ try
+ {
+ RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ if (ri != null) {
+ for (String key:keys) {
+ BusinessDetail detail = registry.getBusinessDetail(key);
+ col.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
+ }
+
+ }
+ } catch (RegistryException e) {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ else if (LifeCycleManager.CONCEPT.equalsIgnoreCase(objectType))
+ {
+ try {
+ TModelDetail tmodeldetail = registry.getTModelDetail(keys);
+ List<TModel> tmodelList = tmodeldetail.getTModel();
+
+ for (TModel tmodel: tmodelList)
+ {
+ col.add(ScoutUddiJaxrHelper.getConcept(tmodel, lcm));
+ }
+
+ }
+ catch (RegistryException e)
+ {
+ throw new JAXRException(e.getLocalizedMessage());
+ }
+ }
+ else if (LifeCycleManager.SERVICE.equalsIgnoreCase(objectType)) {
+
+ try {
+ ServiceDetail serviceDetail = registry.getServiceDetail(keys);
+
+ if (serviceDetail != null) {
+ List<BusinessService> bizServiceList = serviceDetail.getBusinessService();
+
+ for (BusinessService businessService: bizServiceList) {
+
+ Service service = getServiceFromBusinessService(businessService, lcm);
+
+ col.add(service);
+ }
+ }
+ }
+ catch (RegistryException e) {
+ throw new JAXRException(e);
+ }
+ }
+ else {
+ throw new JAXRException("Unsupported type " + objectType +
+ " for getRegistryObjects() in Apache Scout");
+ }
+
+ return new BulkResponseImpl(col);
+
+ }
+
+ public BulkResponse getRegistryObjects(String id) throws JAXRException
+ {
+ if (LifeCycleManager.ORGANIZATION.equalsIgnoreCase(id)) {
+ IRegistry registry = (IRegistry) registryService.getRegistry();
+ ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
+ AuthToken auth = this.getAuthToken(con,registry);
+ LinkedHashSet<Organization> orgs = null;
+ try
+ {
+ RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ if (ri != null && ri.getBusinessInfos()!=null) {
+ List<BusinessInfo> bizInfoList = ri.getBusinessInfos().getBusinessInfo();
+ orgs = new LinkedHashSet<Organization>();
+ for (BusinessInfo businessInfo : bizInfoList) {
+ BusinessDetail detail = registry.getBusinessDetail(businessInfo.getBusinessKey());
+ orgs.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
+ }
+ }
+
+ } catch (RegistryException re) {
+ throw new JAXRException(re);
+ }
+ return new BulkResponseImpl(orgs);
+ }
+ else if (LifeCycleManager.SERVICE.equalsIgnoreCase(id)) {
+ List<String> a = new ArrayList<String>();
+ a.add("%");
+
+ BulkResponse br = this.findServices(null,null, a, null, null);
+
+ return br;
+ }
+ else
+ {
+ throw new JAXRException("Unsupported type for getRegistryObjects() :" + id);
+ }
+
+ }
+
+ static FindQualifiers mapFindQualifiers(Collection jaxrQualifiers) throws UnsupportedCapabilityException
+ {
+ if (jaxrQualifiers == null)
+ {
+ return null;
+ }
+ FindQualifiers result = objectFactory.createFindQualifiers();
+ for (Iterator i = jaxrQualifiers.iterator(); i.hasNext();)
+ {
+ String jaxrQualifier = (String) i.next();
+ String juddiQualifier = jaxrQualifier;
+ if (juddiQualifier == null)
+ {
+ throw new UnsupportedCapabilityException("jUDDI does not support FindQualifer: " + jaxrQualifier);
+ }
+ result.getFindQualifier().add(juddiQualifier);
+ }
+ return result;
+ }
+
+ static Name[] mapNamePatterns(Collection namePatterns)
+ throws JAXRException
+ {
+ if (namePatterns == null)
+ return null;
+ Name[] result = new Name[namePatterns.size()];
+ int currLoc = 0;
+ for (Iterator i = namePatterns.iterator(); i.hasNext();)
+ {
+ Object obj = i.next();
+ Name name = objectFactory.createName();
+ if (obj instanceof String) {
+ name.setValue((String)obj);
+ } else if (obj instanceof LocalizedString) {
+ LocalizedString ls = (LocalizedString)obj;
+ name.setValue(ls.getValue());
+ name.setLang(ls.getLocale().getLanguage());
+ }
+ result[currLoc] = name;
+ currLoc++;
+ }
+ return result;
+ }
+
+ /**
+ * Get the Auth Token from the registry
+ *
+ * @param connection
+ * @param ireg
+ * @return auth token
+ * @throws JAXRException
+ */
+ private AuthToken getAuthToken(ConnectionImpl connection, IRegistry ireg)
+ throws JAXRException {
+ Set creds = connection.getCredentials();
+ Iterator it = creds.iterator();
+ String username = "", pwd = "";
+ while (it.hasNext()) {
+ PasswordAuthentication pass = (PasswordAuthentication) it.next();
+ username = pass.getUserName();
+ pwd = new String(pass.getPassword());
+ }
+ AuthToken token = null;
+ try {
+ token = ireg.getAuthToken(username, pwd);
+ }
+ catch (Exception e) {
+ throw new JAXRException(e);
+ }
[... 4 lines stripped ...]
---------------------------------------------------------------------
To unsubscribe, e-mail: scout-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: scout-dev-help@ws.apache.org