Java tutorial
/* * Copyright 2014 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.juddi.v3.client.mapping; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.xml.soap.SOAPFault; import javax.xml.ws.soap.SOAPFaultException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.juddi.api_v3.AccessPointType; import org.apache.juddi.v3.client.UDDIConstants; import org.apache.juddi.v3.client.UDDIv2Constants; import org.uddi.api_v2.AssertionStatusReport; import org.uddi.api_v2.GetBusinessDetailExt; import org.uddi.api_v2.GetTModelDetail; import org.uddi.api_v2.SetPublisherAssertions; import org.uddi.api_v2.Truncated; import org.uddi.api_v3.AccessPoint; import org.uddi.api_v3.AddPublisherAssertions; import org.uddi.api_v3.Address; import org.uddi.api_v3.AssertionStatusItem; import org.uddi.api_v3.BindingTemplate; import org.uddi.api_v3.BindingTemplates; import org.uddi.api_v3.BusinessDetail; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.BusinessInfo; import org.uddi.api_v3.BusinessInfos; import org.uddi.api_v3.BusinessList; import org.uddi.api_v3.BusinessService; import org.uddi.api_v3.BusinessServices; import org.uddi.api_v3.CategoryBag; import org.uddi.api_v3.CompletionStatus; import org.uddi.api_v3.Contact; import org.uddi.api_v3.Contacts; import org.uddi.api_v3.DeleteBinding; import org.uddi.api_v3.DeleteBusiness; import org.uddi.api_v3.DeletePublisherAssertions; import org.uddi.api_v3.DeleteService; import org.uddi.api_v3.DeleteTModel; import org.uddi.api_v3.Description; import org.uddi.api_v3.Direction; import org.uddi.api_v3.DiscoveryURL; import org.uddi.api_v3.DiscoveryURLs; import org.uddi.api_v3.Email; import org.uddi.api_v3.ErrInfo; import org.uddi.api_v3.FindBinding; import org.uddi.api_v3.FindBusiness; import org.uddi.api_v3.FindQualifiers; import org.uddi.api_v3.FindRelatedBusinesses; import org.uddi.api_v3.FindService; import org.uddi.api_v3.FindTModel; import org.uddi.api_v3.GetBindingDetail; import org.uddi.api_v3.GetBusinessDetail; import org.uddi.api_v3.GetRegisteredInfo; import org.uddi.api_v3.GetServiceDetail; import org.uddi.api_v3.HostingRedirector; import org.uddi.api_v3.IdentifierBag; import org.uddi.api_v3.InfoSelection; import org.uddi.api_v3.InstanceDetails; import org.uddi.api_v3.KeyType; import org.uddi.api_v3.KeyedReference; import org.uddi.api_v3.KeysOwned; import org.uddi.api_v3.ListDescription; import org.uddi.api_v3.Name; import org.uddi.api_v3.OverviewDoc; import org.uddi.api_v3.OverviewURL; import org.uddi.api_v3.PersonName; import org.uddi.api_v3.Phone; import org.uddi.api_v3.PublisherAssertion; import org.uddi.api_v3.RegisteredInfo; import org.uddi.api_v3.RelatedBusinessInfo; import org.uddi.api_v3.RelatedBusinessInfos; import org.uddi.api_v3.RelatedBusinessesList; import org.uddi.api_v3.Result; import org.uddi.api_v3.SaveBinding; import org.uddi.api_v3.SaveBusiness; import org.uddi.api_v3.SaveService; import org.uddi.api_v3.SaveTModel; import org.uddi.api_v3.ServiceDetail; import org.uddi.api_v3.ServiceInfo; import org.uddi.api_v3.ServiceInfos; import org.uddi.api_v3.ServiceList; import org.uddi.api_v3.SharedRelationships; import org.uddi.api_v3.TModel; import org.uddi.api_v3.TModelBag; import org.uddi.api_v3.TModelDetail; import org.uddi.api_v3.TModelInfo; import org.uddi.api_v3.TModelInfos; import org.uddi.api_v3.TModelInstanceDetails; import org.uddi.api_v3.TModelInstanceInfo; import org.uddi.api_v3.TModelList; import org.uddi.v2_service.DispositionReport; import org.uddi.v3_service.DispositionReportFaultMessage; /** * Converts UDDIv2 objects to UDDI v3 objects. Note: these functions do not take * into account the differences in key naming conventions. The good news is that * UDDIv3 has backwards compatibility with v2. * * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a> */ public class MapUDDIv2Tov3 { public static org.uddi.api_v3.BusinessEntity MapBusiness(org.uddi.api_v2.BusinessEntity be) { if (be == null) { return null; } BusinessEntity item = new org.uddi.api_v3.BusinessEntity(); item.setBusinessKey(be.getBusinessKey()); item.getName().addAll(MapName(be.getName())); item.setCategoryBag(MapCategoryBag(be.getCategoryBag())); item.setDiscoveryURLs(MapDiscoveryURLs(be.getDiscoveryURLs())); item.getDescription().addAll(MapDescription(be.getDescription())); item.setContacts(MapContacts(be.getContacts())); item.setIdentifierBag(MapIdentBag(be.getIdentifierBag())); if (be.getBusinessServices() != null && !be.getBusinessServices().getBusinessService().isEmpty()) { item.setBusinessServices(new BusinessServices()); item.getBusinessServices().getBusinessService() .addAll(MapService(be.getBusinessServices().getBusinessService())); } return item; } public static org.uddi.api_v3.BusinessService MapService(org.uddi.api_v2.BusinessService be) { if (be == null) { return null; } BusinessService item = new org.uddi.api_v3.BusinessService(); item.setBusinessKey(be.getBusinessKey()); item.setServiceKey(be.getServiceKey()); item.getName().addAll(MapName(be.getName())); if (be.getBindingTemplates() != null && !be.getBindingTemplates().getBindingTemplate().isEmpty()) { item.setBindingTemplates(new BindingTemplates()); item.getBindingTemplates().getBindingTemplate() .addAll(MapBinding(be.getBindingTemplates().getBindingTemplate())); } item.setCategoryBag(MapCategoryBag(be.getCategoryBag())); item.getDescription().addAll(MapDescription(be.getDescription())); return item; } public static List<org.uddi.api_v3.BusinessService> MapService(List<org.uddi.api_v2.BusinessService> be) { if (be == null) { return null; } List<org.uddi.api_v3.BusinessService> item = new ArrayList<BusinessService>(); for (int i = 0; i < be.size(); i++) { item.add(MapService(be.get(i))); } return item; } public static org.uddi.api_v3.BindingTemplate MapBinding(org.uddi.api_v2.BindingTemplate be) { if (be == null) { return null; } BindingTemplate item = new org.uddi.api_v3.BindingTemplate(); item.setBindingKey(be.getBindingKey()); item.setServiceKey(be.getServiceKey()); item.setAccessPoint(MapAccessPoint(be.getAccessPoint())); item.setHostingRedirector(MapHostingRedir(be.getHostingRedirector())); item.getDescription().addAll(MapDescription(be.getDescription())); item.setTModelInstanceDetails(MapTModelInstanceDetails(be.getTModelInstanceDetails())); return item; } public static List<org.uddi.api_v3.BindingTemplate> MapBinding(List<org.uddi.api_v2.BindingTemplate> be) { if (be == null) { return null; } List<org.uddi.api_v3.BindingTemplate> item = new ArrayList<BindingTemplate>(); for (int i = 0; i < be.size(); i++) { item.add(MapBinding(be.get(i))); } return item; } public static org.uddi.api_v3.TModel MapTModel(org.uddi.api_v2.TModel be) { if (be == null) { return null; } TModel item = new org.uddi.api_v3.TModel(); item.setTModelKey(be.getTModelKey()); item.setName(new Name(be.getName().getValue(), be.getName().getLang())); item.setCategoryBag(MapCategoryBag(be.getCategoryBag())); item.setIdentifierBag(MapIdentBag(be.getIdentifierBag())); item.getDescription().addAll(MapDescription(be.getDescription())); OverviewDoc MapOverviewDoc = MapOverviewDoc(be.getOverviewDoc()); if (MapOverviewDoc != null) { item.getOverviewDoc().add(MapOverviewDoc); } return item; } private static List<Name> MapName(List<org.uddi.api_v2.Name> name) { List<Name> items = new ArrayList<Name>(); for (int i = 0; i < name.size(); i++) { Name n = new Name(name.get(i).getValue(), name.get(i).getLang()); items.add(n); } return items; } private static CategoryBag MapCategoryBag(org.uddi.api_v2.CategoryBag categoryBag) { if (categoryBag == null) { return null; } CategoryBag c = new CategoryBag(); c.getKeyedReference().addAll(MapKeyedReference(categoryBag.getKeyedReference())); return c; } private static List<Description> MapDescription(List<org.uddi.api_v2.Description> description) { List<Description> ret = new ArrayList<Description>(); if (description == null || description.isEmpty()) { return ret; } for (int i = 0; i < description.size(); i++) { ret.add(new Description(description.get(i).getValue(), description.get(i).getLang())); } return ret; } private static IdentifierBag MapIdentBag(org.uddi.api_v2.IdentifierBag identifierBag) { if (identifierBag == null) { return null; } IdentifierBag r = new IdentifierBag(); r.getKeyedReference().addAll(MapKeyedReference(identifierBag.getKeyedReference())); return r; } /** * limitation, only the first overview doc is mapped * * @param overviewDoc * @return overdoc or null */ private static OverviewDoc MapOverviewDoc(org.uddi.api_v2.OverviewDoc overviewDoc) { if (overviewDoc == null) { return null; } OverviewDoc r = new OverviewDoc(); r.getDescription().addAll(MapDescription(overviewDoc.getDescription())); if (overviewDoc.getOverviewURL() != null) { r.setOverviewURL(new OverviewURL()); overviewDoc.getDescription(); r.getOverviewURL().setValue(overviewDoc.getOverviewURL()); } return r; } private static AccessPoint MapAccessPoint(org.uddi.api_v2.AccessPoint accessPoint) { if (accessPoint == null) { return null; } return new AccessPoint(accessPoint.getValue(), MapURLType(accessPoint.getValue())); } private static HostingRedirector MapHostingRedir(org.uddi.api_v2.HostingRedirector hostingRedirector) { if (hostingRedirector == null) { return null; } HostingRedirector r = new HostingRedirector(); r.setBindingKey(hostingRedirector.getBindingKey()); return r; } private static TModelInstanceDetails MapTModelInstanceDetails( org.uddi.api_v2.TModelInstanceDetails tModelInstanceDetails) { if (tModelInstanceDetails == null | tModelInstanceDetails.getTModelInstanceInfo().isEmpty()) { return null; } TModelInstanceDetails r = new TModelInstanceDetails(); r.getTModelInstanceInfo().addAll(MapTModelInstanceInfo(tModelInstanceDetails.getTModelInstanceInfo())); return r; } private static List<KeyedReference> MapKeyedReference(List<org.uddi.api_v2.KeyedReference> keyedReference) { List<KeyedReference> r = new ArrayList<KeyedReference>(); if (keyedReference == null) { return r; } for (int i = 0; i < keyedReference.size(); i++) { r.add(new KeyedReference(keyedReference.get(i).getTModelKey(), keyedReference.get(i).getKeyName(), keyedReference.get(i).getKeyValue())); } return r; } private static String MapURLType(String url) { if (url == null) { return null; } if (url.toLowerCase().endsWith("wsdl")) { return AccessPointType.WSDL_DEPLOYMENT.toString(); } return AccessPointType.END_POINT.toString(); } private static List<TModelInstanceInfo> MapTModelInstanceInfo( List<org.uddi.api_v2.TModelInstanceInfo> tModelInstanceInfo) { List<TModelInstanceInfo> r = new ArrayList<TModelInstanceInfo>(); if (tModelInstanceInfo == null) { return r; } for (int i = 0; i < tModelInstanceInfo.size(); i++) { TModelInstanceInfo t = new TModelInstanceInfo(); t.setTModelKey(tModelInstanceInfo.get(i).getTModelKey()); t.getDescription().addAll(MapDescription(tModelInstanceInfo.get(i).getDescription())); if (tModelInstanceInfo.get(i).getInstanceDetails() != null) { t.setInstanceDetails(new InstanceDetails()); t.getInstanceDetails().getDescription() .addAll(MapDescription(tModelInstanceInfo.get(i).getInstanceDetails().getDescription())); t.getInstanceDetails() .setInstanceParms(tModelInstanceInfo.get(i).getInstanceDetails().getInstanceParms()); t.getInstanceDetails().getOverviewDoc() .add(MapOverviewDoc(tModelInstanceInfo.get(i).getInstanceDetails().getOverviewDoc())); } r.add(t); } return r; } public static org.uddi.api_v3.BindingDetail MapBindingDetail(org.uddi.api_v2.BindingDetail findBinding) { org.uddi.api_v3.BindingDetail r = new org.uddi.api_v3.BindingDetail(); for (int i = 0; i < findBinding.getBindingTemplate().size(); i++) { r.getBindingTemplate().addAll(MapBinding(findBinding.getBindingTemplate())); } r.setTruncated(findBinding.getTruncated() == Truncated.TRUE); return r; } public static BusinessList MapBusinessList(org.uddi.api_v2.BusinessList findBinding) { org.uddi.api_v3.BusinessList r = new org.uddi.api_v3.BusinessList(); r.setListDescription(new ListDescription()); r.getListDescription().setActualCount(0); r.getListDescription().setIncludeCount(0); r.getListDescription().setListHead(0); if (findBinding.getBusinessInfos() != null) { r.getListDescription().setIncludeCount(findBinding.getBusinessInfos().getBusinessInfo().size()); r.getListDescription().setActualCount(findBinding.getBusinessInfos().getBusinessInfo().size()); r.setBusinessInfos(new BusinessInfos()); r.getBusinessInfos().getBusinessInfo() .addAll(MapBusinessInfo(findBinding.getBusinessInfos().getBusinessInfo())); } r.setTruncated(findBinding.getTruncated() == Truncated.TRUE); return r; } public static DispositionReportFaultMessage MapException(DispositionReport ex) { org.uddi.api_v3.DispositionReport r = new org.uddi.api_v3.DispositionReport(); r.setTruncated(ex.getFaultInfo().getTruncated() == Truncated.TRUE); r.getResult().addAll(MapResult(ex.getFaultInfo().getResult())); DispositionReportFaultMessage x = new DispositionReportFaultMessage(ex.getMessage(), r); return x; } public static RelatedBusinessesList MapRelatedBusinessesList( org.uddi.api_v2.RelatedBusinessesList findRelatedBusinesses) { if (findRelatedBusinesses == null) { return null; } RelatedBusinessesList r = new RelatedBusinessesList(); r.setTruncated(findRelatedBusinesses.getTruncated() == Truncated.TRUE); r.setBusinessKey(findRelatedBusinesses.getBusinessKey()); if (findRelatedBusinesses.getRelatedBusinessInfos() != null) { r.setRelatedBusinessInfos(new RelatedBusinessInfos()); for (int i = 0; i < findRelatedBusinesses.getRelatedBusinessInfos().getRelatedBusinessInfo() .size(); i++) { RelatedBusinessInfo x = new RelatedBusinessInfo(); x.setBusinessKey(findRelatedBusinesses.getRelatedBusinessInfos().getRelatedBusinessInfo().get(i) .getBusinessKey()); x.getDescription().addAll(MapDescription(findRelatedBusinesses.getRelatedBusinessInfos() .getRelatedBusinessInfo().get(i).getDescription())); x.getName().addAll(MapName( findRelatedBusinesses.getRelatedBusinessInfos().getRelatedBusinessInfo().get(i).getName())); x.getSharedRelationships().addAll(MapSharedRelationship(findRelatedBusinesses .getRelatedBusinessInfos().getRelatedBusinessInfo().get(i).getSharedRelationships())); r.getRelatedBusinessInfos().getRelatedBusinessInfo().add(x); } } return r; } public static ServiceList MapServiceList(org.uddi.api_v2.ServiceList serviceDetail) { if (serviceDetail == null) { return null; } ServiceList r = new ServiceList(); r.setListDescription(new ListDescription()); r.getListDescription().setActualCount(0); r.getListDescription().setIncludeCount(0); r.getListDescription().setListHead(0); if (serviceDetail.getServiceInfos() != null) { r.setServiceInfos(new ServiceInfos()); r.getListDescription().setIncludeCount(serviceDetail.getServiceInfos().getServiceInfo().size()); r.getListDescription().setActualCount(serviceDetail.getServiceInfos().getServiceInfo().size()); for (int i = 0; i < serviceDetail.getServiceInfos().getServiceInfo().size(); i++) { ServiceInfo x = new ServiceInfo(); x.setBusinessKey(serviceDetail.getServiceInfos().getServiceInfo().get(i).getBusinessKey()); x.setServiceKey(serviceDetail.getServiceInfos().getServiceInfo().get(i).getServiceKey()); x.getName().addAll(MapName(serviceDetail.getServiceInfos().getServiceInfo().get(i).getName())); r.getServiceInfos().getServiceInfo().add(x); } } r.setTruncated(serviceDetail.getTruncated() == Truncated.TRUE); return r; } public static BusinessDetail MapBusinessDetail(org.uddi.api_v2.BusinessDetail businessDetail) { if (businessDetail == null) { return null; } BusinessDetail r = new BusinessDetail(); for (int i = 0; i < businessDetail.getBusinessEntity().size(); i++) { r.getBusinessEntity().add(MapBusiness(businessDetail.getBusinessEntity().get(i))); } r.setTruncated(businessDetail.getTruncated() == Truncated.TRUE); return r; } public static ServiceDetail MapServiceDetail(org.uddi.api_v2.ServiceDetail serviceDetail) { if (serviceDetail == null) { return null; } ServiceDetail r = new ServiceDetail(); for (int i = 0; i < serviceDetail.getBusinessService().size(); i++) { r.getBusinessService().add(MapService(serviceDetail.getBusinessService().get(i))); } r.setTruncated(serviceDetail.getTruncated() == Truncated.TRUE); return r; } public static TModelDetail MapTModelDetail(org.uddi.api_v2.TModelDetail tModelDetail) { if (tModelDetail == null) { return null; } TModelDetail r = new TModelDetail(); for (int i = 0; i < tModelDetail.getTModel().size(); i++) { r.getTModel().add(MapTModel(tModelDetail.getTModel().get(i))); } r.setTruncated(tModelDetail.getTruncated() == Truncated.TRUE); return r; } public static TModelList MapTModelList(org.uddi.api_v2.TModelList findTModel) { org.uddi.api_v3.TModelList r = new org.uddi.api_v3.TModelList(); r.setListDescription(new ListDescription()); r.getListDescription().setActualCount(0); r.getListDescription().setIncludeCount(0); r.getListDescription().setListHead(0); if (findTModel.getTModelInfos() != null && !findTModel.getTModelInfos().getTModelInfo().isEmpty()) { r.setTModelInfos(new TModelInfos()); r.getListDescription().setIncludeCount(findTModel.getTModelInfos().getTModelInfo().size()); r.getListDescription().setActualCount(findTModel.getTModelInfos().getTModelInfo().size()); for (int i = 0; i < findTModel.getTModelInfos().getTModelInfo().size(); i++) { TModelInfo x = new TModelInfo(); x.setName(new Name(findTModel.getTModelInfos().getTModelInfo().get(i).getName().getValue(), findTModel.getTModelInfos().getTModelInfo().get(i).getName().getLang())); x.setTModelKey(findTModel.getTModelInfos().getTModelInfo().get(i).getTModelKey()); r.getTModelInfos().getTModelInfo().add(x); } } r.setTruncated(findTModel.getTruncated() == Truncated.TRUE); return r; } public static List<PublisherAssertion> MapListPublisherAssertion( List<org.uddi.api_v2.PublisherAssertion> publisherAssertions) { List<PublisherAssertion> r = new ArrayList<PublisherAssertion>(); if (publisherAssertions == null) { return r; } for (int i = 0; i < publisherAssertions.size(); i++) { PublisherAssertion x = new PublisherAssertion(); x.setFromKey(publisherAssertions.get(i).getFromKey()); x.setToKey(publisherAssertions.get(i).getToKey()); if (publisherAssertions.get(i).getKeyedReference() != null) { x.setKeyedReference( new KeyedReference(publisherAssertions.get(i).getKeyedReference().getTModelKey(), publisherAssertions.get(i).getKeyedReference().getKeyName(), publisherAssertions.get(i).getKeyedReference().getKeyValue())); } r.add(x); } return r; } public static List<PublisherAssertion> MapListPublisherAssertion( org.uddi.api_v2.PublisherAssertions publisherAssertions) { List<PublisherAssertion> r = new ArrayList<PublisherAssertion>(); if (publisherAssertions == null) { return r; } r.addAll(MapListPublisherAssertion(publisherAssertions.getPublisherAssertion())); return r; } public static RegisteredInfo MapListRegisteredInfo(org.uddi.api_v2.RegisteredInfo registeredInfo) { if (registeredInfo == null) { return null; } RegisteredInfo r = new RegisteredInfo(); if (registeredInfo.getBusinessInfos() != null) { r.setBusinessInfos(new BusinessInfos()); r.getBusinessInfos().getBusinessInfo() .addAll(MapBusinessInfo(registeredInfo.getBusinessInfos().getBusinessInfo())); } if (registeredInfo.getTModelInfos() != null) { r.setTModelInfos(new TModelInfos()); for (int i = 0; i < registeredInfo.getTModelInfos().getTModelInfo().size(); i++) { TModelInfo x = new TModelInfo(); x.setTModelKey(registeredInfo.getTModelInfos().getTModelInfo().get(i).getTModelKey()); x.setName(new Name(registeredInfo.getTModelInfos().getTModelInfo().get(i).getName().getValue(), registeredInfo.getTModelInfos().getTModelInfo().get(i).getName().getValue())); r.getTModelInfos().getTModelInfo().add(x); } } r.setTruncated(registeredInfo.getTruncated() == Truncated.TRUE); return r; } private static List<BusinessInfo> MapBusinessInfo(List<org.uddi.api_v2.BusinessInfo> businessInfo) { List<BusinessInfo> r = new ArrayList<BusinessInfo>(); if (businessInfo == null) { return r; } for (int i = 0; i < businessInfo.size(); i++) { BusinessInfo x = new BusinessInfo(); x.setBusinessKey(businessInfo.get(i).getBusinessKey()); x.setServiceInfos(MapServiceInfo(businessInfo.get(i).getServiceInfos())); x.getName().addAll(MapName(businessInfo.get(i).getName())); x.getDescription().addAll(MapDescription(businessInfo.get(i).getDescription())); r.add(x); } return r; } private static ServiceInfos MapServiceInfo(org.uddi.api_v2.ServiceInfos serviceInfos) { if (serviceInfos == null) { return null; } ServiceInfos r = new ServiceInfos(); for (int i = 0; i < serviceInfos.getServiceInfo().size(); i++) { ServiceInfo x = new ServiceInfo(); x.setBusinessKey(serviceInfos.getServiceInfo().get(i).getBusinessKey()); x.setServiceKey(serviceInfos.getServiceInfo().get(i).getServiceKey()); x.getName().addAll(MapName(serviceInfos.getServiceInfo().get(i).getName())); r.getServiceInfo().add(x); } return r; } private static List<Result> MapResult(List<org.uddi.api_v2.Result> result) { List<Result> r = new ArrayList<Result>(); if (result == null) { return r; } for (int i = 0; i < result.size(); i++) { Result x = new Result(); x.setErrno(result.get(i).getErrno()); if (result.get(i).getKeyType() != null) { switch (result.get(i).getKeyType()) { case BINDING_KEY: x.setKeyType(KeyType.BINDING_KEY); break; case BUSINESS_KEY: x.setKeyType(KeyType.BUSINESS_KEY); break; case SERVICE_KEY: x.setKeyType(KeyType.SERVICE_KEY); break; case T_MODEL_KEY: x.setKeyType(KeyType.T_MODEL_KEY); break; } } if (result.get(i).getErrInfo() != null) { x.setErrInfo(new ErrInfo()); x.getErrInfo().setErrCode(result.get(i).getErrInfo().getErrCode()); x.getErrInfo().setValue(result.get(i).getErrInfo().getValue()); } r.add(x); } return r; } public static DispositionReportFaultMessage MapException(SOAPFaultException ex) { org.uddi.api_v3.DispositionReport r = new org.uddi.api_v3.DispositionReport(); r.setTruncated(false); r.getResult().addAll(MapFault(ex.getFault())); DispositionReportFaultMessage x = new DispositionReportFaultMessage(ex.getMessage(), r); return x; } private static List<Result> MapFault(SOAPFault result) { List<Result> r = new ArrayList<Result>(); if (result == null) { return r; } if (result.getDetail() != null) { while (result.getDetail().getDetailEntries().hasNext()) { Object next = result.getDetail().getDetailEntries().next(); if (next instanceof DispositionReport) { DispositionReport z = (DispositionReport) next; Result x = new Result(); r.addAll(MapResult(z.getFaultInfo().getResult())); } logger.warn("unable to parse fault detail, type:" + next.getClass().getCanonicalName() + " " + next.toString()); } } return r; } private static Log logger = LogFactory.getLog(MapUDDIv2Tov3.class); public static FindBinding MapFindBinding(org.uddi.api_v2.FindBinding body) { if (body == null) { return null; } FindBinding r = new FindBinding(); r.setServiceKey(body.getServiceKey()); r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), true)); r.setMaxRows(body.getMaxRows()); r.setTModelBag(MapTModelBag(body.getTModelBag())); return r; } private static TModelBag MapTModelBag(org.uddi.api_v2.TModelBag tModelBag) { if (tModelBag == null || tModelBag.getTModelKey().isEmpty()) { return null; } TModelBag r = new TModelBag(); r.getTModelKey().addAll(tModelBag.getTModelKey()); return r; } private static FindQualifiers MapFindQualifiers(org.uddi.api_v2.FindQualifiers findQualifiers, boolean isBinding) { if (findQualifiers == null || findQualifiers.getFindQualifier().isEmpty()) { return null; } FindQualifiers r = new FindQualifiers(); for (int i = 0; i < findQualifiers.getFindQualifier().size(); i++) { if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:68DE9E80-AD09-469D-8A37-088422BFBC36")) { r.getFindQualifier().add(UDDIConstants.TRANSPORT_HTTP); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:93335D49-3EFB-48A0-ACEA-EA102B60DDC6")) { r.getFindQualifier().add(UDDIConstants.TRANSPORT_EMAIL); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:5FCF5CD0-629A-4C50-8B16-F94E9CF2A674")) { r.getFindQualifier().add(UDDIConstants.TRANSPORT_FTP); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:1A2B00BE-6E2C-42F5-875B-56F32686E0E7")) { r.getFindQualifier().add(UDDIConstants.TRANSPORT_FAX); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:38E12427-5536-4260-A6F9-B5B530E63A07")) { r.getFindQualifier().add(UDDIConstants.TRANSPORT_POTS); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:E59AE320-77A5-11D5-B898-0004AC49CC1E")) { r.getFindQualifier().add(UDDIConstants.IS_REPLACED_BY); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:4064C064-6D14-4F35-8953-9652106476A9")) { r.getFindQualifier().add(UDDIConstants.OWNING_BUSINESS); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:807A2C6A-EE22-470D-ADC7-E0424A337C03")) { r.getFindQualifier().add(UDDIConstants.RELATIONSHIPS); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:327A56F0-3299-4461-BC23-5CD513E95C55")) { r.getFindQualifier().add("uddi:uddi.org:categorization:nodes"); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:A035A07C-F362-44dd-8F95-E2B134BF43B4")) { r.getFindQualifier().add("uddi:uddi.org:categorization:general_keywords"); } if (findQualifiers.getFindQualifier().get(i) .equalsIgnoreCase("uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4")) { r.getFindQualifier().add("uddi:uddi.org:categorization:types"); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase("exactNameMatch")) { r.getFindQualifier().add(UDDIConstants.EXACT_MATCH); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.EXACT_MATCH)) { r.getFindQualifier().add(UDDIConstants.EXACT_MATCH); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.CASE_SENSITIVE_MATCH)) { r.getFindQualifier().add("caseSensitiveMatch"); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.OR_ALL_KEYS)) { r.getFindQualifier().add("orAllKeys"); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.OR_LIKE_KEYS)) { r.getFindQualifier().add("orLikeKeys"); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.AND_ALL_KEYS)) { r.getFindQualifier().add("andAllKeys"); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.SORT_BY_DATE_ASC)) { r.getFindQualifier().add(UDDIConstants.SORT_BY_DATE_ASC); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.SORT_BY_DATE_DESC)) { r.getFindQualifier().add(UDDIConstants.SORT_BY_DATE_DESC); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.SORT_BY_NAME_ASC)) { r.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_ASC); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.SORT_BY_NAME_DESC)) { r.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_DESC); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.SERVICE_SUBSET)) { r.getFindQualifier().add(UDDIConstants.SERVICE_SUBSET); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.COMBINE_CATEGORY_BAGS)) { r.getFindQualifier().add(UDDIConstants.COMBINE_CATEGORY_BAGS); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIv2Constants.exactNameMatch)) { r.getFindQualifier().add(UDDIConstants.EXACT_MATCH); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.APPROXIMATE_MATCH)) { r.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH); } if (findQualifiers.getFindQualifier().get(i).equalsIgnoreCase(UDDIConstants.APPROXIMATE_MATCH_TMODEL)) { r.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH); } } //default behavior of v2, caseInsensitive, sortByNameAsc or sortByDateAsc, approximateMatch if (!r.getFindQualifier().contains(UDDIConstants.CASE_INSENSITIVE_MATCH) && !r.getFindQualifier().contains(UDDIConstants.CASE_INSENSITIVE_MATCH_TMODEL) && !r.getFindQualifier().contains(UDDIConstants.CASE_SENSITIVE_MATCH) && !r.getFindQualifier().contains(UDDIConstants.EXACT_MATCH) && !isBinding) r.getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH); if (!r.getFindQualifier().contains(UDDIConstants.APPROXIMATE_MATCH) && !r.getFindQualifier().contains(UDDIConstants.APPROXIMATE_MATCH_TMODEL) && !r.getFindQualifier().contains(UDDIConstants.EXACT_MATCH) && !isBinding) r.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH); //dedup HashSet<String> s = new HashSet<String>(r.getFindQualifier()); r.getFindQualifier().clear(); r.getFindQualifier().addAll(s); if (r.getFindQualifier().isEmpty()) return null; return r; } public static FindBusiness MapFindBusiness(org.uddi.api_v2.FindBusiness body) { if (body == null) { return null; } FindBusiness r = new FindBusiness(); r.setCategoryBag(MapCategoryBag(body.getCategoryBag())); r.setDiscoveryURLs(MapDiscoveryURLs(body.getDiscoveryURLs())); r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), false)); r.setTModelBag(MapTModelBag(body.getTModelBag())); r.setMaxRows(body.getMaxRows()); r.getName().addAll(MapName(body.getName())); if (ContainsWildCard(r.getName())) { r.setFindQualifiers(AddApproximateMatch(r.getFindQualifiers())); } return r; } private static org.uddi.api_v3.FindQualifiers AddApproximateMatch( org.uddi.api_v3.FindQualifiers findQualifiers) { if (findQualifiers == null) { findQualifiers = new org.uddi.api_v3.FindQualifiers(); } Set<String> s = new HashSet<String>(findQualifiers.getFindQualifier()); s.add(UDDIConstants.APPROXIMATE_MATCH); findQualifiers.getFindQualifier().clear(); findQualifiers.getFindQualifier().addAll(s); return findQualifiers; } private static boolean ContainsWildCard(List<org.uddi.api_v3.Name> name) { for (int i = 0; i < name.size(); i++) { if (name.get(i).getValue() != null && name.get(i).getValue().contains(UDDIConstants.WILDCARD)) { return true; } if (name.get(i).getValue() != null && name.get(i).getValue().contains(UDDIConstants.WILDCARD_CHAR)) { return true; } if (name.get(i).getLang() != null && name.get(i).getLang().contains(UDDIConstants.WILDCARD)) { return true; } if (name.get(i).getLang() != null && name.get(i).getLang().contains(UDDIConstants.WILDCARD_CHAR)) { return true; } } return false; } private static DiscoveryURLs MapDiscoveryURLs(org.uddi.api_v2.DiscoveryURLs discoveryURLs) { if (discoveryURLs == null) { return null; } DiscoveryURLs r = new DiscoveryURLs(); for (int i = 0; i < discoveryURLs.getDiscoveryURL().size(); i++) { DiscoveryURL x = new DiscoveryURL(discoveryURLs.getDiscoveryURL().get(i).getUseType(), discoveryURLs.getDiscoveryURL().get(i).getValue()); r.getDiscoveryURL().add(x); } return r; } public static FindRelatedBusinesses MapFindRelatedBusiness(org.uddi.api_v2.FindRelatedBusinesses body) { if (body == null) { return null; } FindRelatedBusinesses r = new FindRelatedBusinesses(); r.setBusinessKey(body.getBusinessKey()); r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), false)); if (body.getKeyedReference() != null) { r.setKeyedReference(new KeyedReference(body.getKeyedReference().getTModelKey(), body.getKeyedReference().getKeyName(), body.getKeyedReference().getKeyValue())); } r.setMaxRows(body.getMaxRows()); return r; } public static FindService MapFindService(org.uddi.api_v2.FindService body) { if (body == null) { return null; } FindService r = new FindService(); r.setBusinessKey(body.getBusinessKey()); r.setCategoryBag(MapCategoryBag(body.getCategoryBag())); r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), false)); r.setMaxRows(body.getMaxRows()); r.setTModelBag(MapTModelBag(body.getTModelBag())); r.getName().addAll(MapName(body.getName())); if (ContainsWildCard(r.getName())) { r.setFindQualifiers(AddApproximateMatch(r.getFindQualifiers())); } return r; } public static FindTModel MapFindTModel(org.uddi.api_v2.FindTModel body) { if (body == null) { return null; } FindTModel r = new FindTModel(); r.setCategoryBag(MapCategoryBag(body.getCategoryBag())); r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), false)); r.setMaxRows(body.getMaxRows()); if (body.getName() != null) { r.setName(new Name(body.getName().getValue(), body.getName().getLang())); } if (ContainsWildCardSingle(r.getName())) { r.setFindQualifiers(AddApproximateMatch(r.getFindQualifiers())); } return r; } public static GetBusinessDetail MapGetBusinessDetailExt(GetBusinessDetailExt body) { if (body == null) { return null; } GetBusinessDetail r = new GetBusinessDetail(); r.getBusinessKey().addAll(body.getBusinessKey()); return r; } public static GetServiceDetail MapGetServiceDetail(org.uddi.api_v2.GetServiceDetail body) { if (body == null) { return null; } GetServiceDetail r = new GetServiceDetail(); r.getServiceKey().addAll(body.getServiceKey()); return r; } public static org.uddi.api_v3.GetTModelDetail MapGetTModelDetail(GetTModelDetail body) { if (body == null) { return null; } org.uddi.api_v3.GetTModelDetail r = new org.uddi.api_v3.GetTModelDetail(); r.getTModelKey().addAll(body.getTModelKey()); return r; } public static GetBindingDetail MapGetBindingDetail(org.uddi.api_v2.GetBindingDetail body) { if (body == null) { return null; } GetBindingDetail r = new GetBindingDetail(); r.getBindingKey().addAll(body.getBindingKey()); return r; } public static GetBusinessDetail MapGetBusinessDetail(org.uddi.api_v2.GetBusinessDetail body) { if (body == null) { return null; } GetBusinessDetail r = new GetBusinessDetail(); r.getBusinessKey().addAll(body.getBusinessKey()); return r; } private static List<SharedRelationships> MapSharedRelationship( List<org.uddi.api_v2.SharedRelationships> sharedRelationships) { if (sharedRelationships == null) { return null; } List<SharedRelationships> r = new ArrayList<SharedRelationships>(); for (int i = 0; i < sharedRelationships.size(); i++) { SharedRelationships x = new SharedRelationships(); switch (sharedRelationships.get(i).getDirection()) { case FROM_KEY: x.setDirection(Direction.FROM_KEY); break; case TO_KEY: x.setDirection(Direction.TO_KEY); break; } x.getKeyedReference().addAll(MapKeyedReference(sharedRelationships.get(i).getKeyedReference())); r.add(x); } return r; } public static DeleteBinding MapDeleteBinding(org.uddi.api_v2.DeleteBinding body) { if (body == null) { return null; } DeleteBinding r = new DeleteBinding(); r.setAuthInfo(body.getAuthInfo()); r.getBindingKey().addAll(body.getBindingKey()); return r; } public static DeleteBusiness MapDeleteBusiness(org.uddi.api_v2.DeleteBusiness body) { if (body == null) { return null; } DeleteBusiness r = new DeleteBusiness(); r.setAuthInfo(body.getAuthInfo()); r.getBusinessKey().addAll(body.getBusinessKey()); return r; } public static DeletePublisherAssertions MapDeletePublisherAssertion( org.uddi.api_v2.DeletePublisherAssertions body) { if (body == null) { return null; } DeletePublisherAssertions r = new DeletePublisherAssertions(); r.setAuthInfo(body.getAuthInfo()); r.getPublisherAssertion().addAll(MapListPublisherAssertion(body.getPublisherAssertion())); return r; } public static DeleteService MapDeleteService(org.uddi.api_v2.DeleteService body) { if (body == null) { return null; } DeleteService r = new DeleteService(); r.setAuthInfo(body.getAuthInfo()); r.getServiceKey().addAll(body.getServiceKey()); return r; } public static DeleteTModel MapDeleteTModel(org.uddi.api_v2.DeleteTModel body) { if (body == null) { return null; } DeleteTModel r = new DeleteTModel(); r.setAuthInfo(body.getAuthInfo()); r.getTModelKey().addAll(body.getTModelKey()); return r; } public static SaveTModel MapSaveTModel(org.uddi.api_v2.SaveTModel body) { if (body == null) { return null; } SaveTModel r = new SaveTModel(); r.setAuthInfo(body.getAuthInfo()); for (int i = 0; i < body.getTModel().size(); i++) { r.getTModel().add(MapTModel(body.getTModel().get(i))); } return r; } public static SaveService MapSaveService(org.uddi.api_v2.SaveService body) { if (body == null) { return null; } SaveService r = new SaveService(); r.setAuthInfo(body.getAuthInfo()); for (int i = 0; i < body.getBusinessService().size(); i++) { r.getBusinessService().add(MapService(body.getBusinessService().get(i))); } return r; } public static SaveBusiness MapSaveBusiness(org.uddi.api_v2.SaveBusiness body) { if (body == null) { return null; } SaveBusiness r = new SaveBusiness(); r.setAuthInfo(body.getAuthInfo()); for (int i = 0; i < body.getBusinessEntity().size(); i++) { r.getBusinessEntity().add(MapBusiness(body.getBusinessEntity().get(i))); } return r; } public static GetRegisteredInfo MapGetRegisteredInfo(org.uddi.api_v2.GetRegisteredInfo body) { if (body == null) { return null; } GetRegisteredInfo r = new GetRegisteredInfo(); r.setAuthInfo(body.getAuthInfo()); r.setInfoSelection(InfoSelection.ALL); return r; } public static SaveBinding MapSaveBinding(org.uddi.api_v2.SaveBinding body) { if (body == null) { return null; } SaveBinding r = new SaveBinding(); r.setAuthInfo(body.getAuthInfo()); for (int i = 0; i < body.getBindingTemplate().size(); i++) { r.getBindingTemplate().add(MapBinding(body.getBindingTemplate().get(i))); } return r; } public static List<PublisherAssertion> MapSetPublisherAssertions(SetPublisherAssertions body) { if (body == null) { return null; } return MapListPublisherAssertion(body.getPublisherAssertion()); } private static boolean ContainsWildCardSingle(Name name) { if (name != null) { if (name.getValue() != null && name.getValue().contains(UDDIConstants.WILDCARD)) { return true; } if (name.getValue() != null && name.getValue().contains(UDDIConstants.WILDCARD_CHAR)) { return true; } if (name.getLang() != null && name.getLang().contains(UDDIConstants.WILDCARD)) { return true; } if (name.getLang() != null && name.getLang().contains(UDDIConstants.WILDCARD_CHAR)) { return true; } } return false; } public static List<AssertionStatusItem> MapAssertionStatusItems(AssertionStatusReport assertionStatusReport) { List<AssertionStatusItem> r = new ArrayList<AssertionStatusItem>(); if (assertionStatusReport == null) { return r; } for (int i = 0; i < assertionStatusReport.getAssertionStatusItem().size(); i++) { AssertionStatusItem x = new AssertionStatusItem(); x.setFromKey(assertionStatusReport.getAssertionStatusItem().get(i).getFromKey()); x.setToKey(assertionStatusReport.getAssertionStatusItem().get(i).getToKey()); x.setCompletionStatus(MapCompletionStatus( assertionStatusReport.getAssertionStatusItem().get(i).getCompletionStatus())); x.setKeysOwned(MapKeysOwned(assertionStatusReport.getAssertionStatusItem().get(i).getKeysOwned())); if (assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference() != null) { x.setKeyedReference(new KeyedReference( assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference().getTModelKey(), assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference().getKeyName(), assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference().getKeyValue())); } } return r; } private static KeysOwned MapKeysOwned(org.uddi.api_v2.KeysOwned keysOwned) { if (keysOwned == null) { return null; } KeysOwned r = new KeysOwned(); r.setFromKey(keysOwned.getFromKey()); r.setToKey(keysOwned.getToKey()); return r; } private static Contacts MapContacts(org.uddi.api_v2.Contacts contacts) { if (contacts == null) { return null; } Contacts c = new Contacts(); c.getContact().addAll(MapContactList(contacts.getContact())); return c; } private static List<Contact> MapContactList(List<org.uddi.api_v2.Contact> contact) { List<Contact> r = new ArrayList<Contact>(); if (contact == null) { return r; } for (int i = 0; i < contact.size(); i++) { Contact c = new Contact(); c.setUseType(contact.get(i).getUseType()); if (contact.get(i).getPersonName() != null) { c.getPersonName().add(new PersonName(contact.get(i).getPersonName(), null)); } c.getAddress().addAll(MapAddress(contact.get(i).getAddress())); c.getDescription().addAll(MapDescription(contact.get(i).getDescription())); c.getEmail().addAll(MapEmail(contact.get(i).getEmail())); c.getPhone().addAll(MapPhone(contact.get(i).getPhone())); r.add(c); } return r; } private static Collection<? extends Address> MapAddress(List<org.uddi.api_v2.Address> address) { List<Address> r = new ArrayList<Address>(); if (address == null) { return r; } for (int i = 0; i < address.size(); i++) { Address x = new Address(); x.setSortCode(address.get(i).getSortCode()); x.setTModelKey(address.get(i).getTModelKey()); x.setUseType(address.get(i).getUseType()); x.getAddressLine().addAll(MapAddressLine(address.get(i).getAddressLine())); r.add(x); } return r; } private static Collection<? extends Email> MapEmail(List<org.uddi.api_v2.Email> email) { List<Email> r = new ArrayList<Email>(); if (email == null) { return r; } for (int i = 0; i < email.size(); i++) { Email x = new Email(); x.setUseType(email.get(i).getUseType()); x.setValue(email.get(i).getValue()); r.add(x); } return r; } private static Collection<? extends Phone> MapPhone(List<org.uddi.api_v2.Phone> phone) { List<Phone> r = new ArrayList<Phone>(); if (phone == null) { return r; } for (int i = 0; i < phone.size(); i++) { Phone x = new Phone(); x.setUseType(phone.get(i).getUseType()); x.setValue(phone.get(i).getValue()); r.add(x); } return r; } private static List<org.uddi.api_v3.AddressLine> MapAddressLine(List<org.uddi.api_v2.AddressLine> addressLine) { List<org.uddi.api_v3.AddressLine> r = new ArrayList<org.uddi.api_v3.AddressLine>(); if (addressLine == null) { return r; } for (int i = 0; i < addressLine.size(); i++) { org.uddi.api_v3.AddressLine x = new org.uddi.api_v3.AddressLine(); x.setKeyName(addressLine.get(i).getKeyName()); x.setKeyValue(addressLine.get(i).getKeyValue()); x.setValue(addressLine.get(i).getValue()); r.add(x); } return r; } public static AddPublisherAssertions MapAddPublisherAssertions(org.uddi.api_v2.AddPublisherAssertions body) { if (body == null) { return null; } AddPublisherAssertions r = new AddPublisherAssertions(); r.setAuthInfo(body.getAuthInfo()); r.getPublisherAssertion().addAll(MapListPublisherAssertion(body.getPublisherAssertion())); return r; } public static CompletionStatus MapCompletionStatus(String completionStatus) { if ("status:complete".equalsIgnoreCase(completionStatus)) { return (CompletionStatus.STATUS_COMPLETE); } else if ("status:toKey_incomplete".equalsIgnoreCase(completionStatus)) { return (CompletionStatus.STATUS_TO_KEY_INCOMPLETE); } else if ("status:fromKey_incomplete".equalsIgnoreCase(completionStatus)) { return (CompletionStatus.STATUS_FROM_KEY_INCOMPLETE); } else { return (CompletionStatus.STATUS_BOTH_INCOMPLETE); } } }