Return-Path: Delivered-To: apmail-ws-scout-dev-archive@www.apache.org Received: (qmail 86297 invoked from network); 2 Nov 2007 01:31:35 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Nov 2007 01:31:35 -0000 Received: (qmail 50697 invoked by uid 500); 2 Nov 2007 01:31:22 -0000 Delivered-To: apmail-ws-scout-dev-archive@ws.apache.org Received: (qmail 50683 invoked by uid 500); 2 Nov 2007 01:31:22 -0000 Mailing-List: contact scout-dev-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: scout-dev@ws.apache.org List-Id: Delivered-To: mailing list scout-dev@ws.apache.org Received: (qmail 50672 invoked by uid 500); 2 Nov 2007 01:31:22 -0000 Delivered-To: apmail-ws-scout-cvs@ws.apache.org Received: (qmail 50669 invoked by uid 99); 2 Nov 2007 01:31:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2007 18:31:22 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Nov 2007 01:31:50 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 390D91A9832; Thu, 1 Nov 2007 18:31:10 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r591187 - in /webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util: ScoutJaxrUddiHelper.java ScoutUddiJaxrHelper.java Date: Fri, 02 Nov 2007 01:31:09 -0000 To: scout-cvs@ws.apache.org From: kstam@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071102013110.390D91A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kstam Date: Thu Nov 1 18:31:09 2007 New Revision: 591187 URL: http://svn.apache.org/viewvc?rev=591187&view=rev Log: SCOUT-47, Adding the handling of SpecificationLinks. Completing the 0.7 branch to trunk. Modified: webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java Modified: webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java URL: http://svn.apache.org/viewvc/webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java?rev=591187&r1=591186&r2=591187&view=diff ============================================================================== --- webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java (original) +++ webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java Thu Nov 1 18:31:09 2007 @@ -61,8 +61,10 @@ import org.apache.ws.scout.uddi.Email; import org.apache.ws.scout.uddi.HostingRedirector; import org.apache.ws.scout.uddi.IdentifierBag; +import org.apache.ws.scout.uddi.InstanceDetails; import org.apache.ws.scout.uddi.KeyedReference; import org.apache.ws.scout.uddi.Name; +import org.apache.ws.scout.uddi.OverviewDoc; import org.apache.ws.scout.uddi.Phone; import org.apache.ws.scout.uddi.PublisherAssertion; import org.apache.ws.scout.uddi.TModel; @@ -76,9 +78,11 @@ * * @author Anil Saldhana * @author Geir Magnusson Jr. + * @author Kurt T Stam */ -public class ScoutJaxrUddiHelper { - +public class ScoutJaxrUddiHelper +{ + private static final String UDDI_ORG_TYPES = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"; private static Log log = LogFactory.getLog(ScoutJaxrUddiHelper.class); /** * Get UDDI Address given JAXR Postal Address @@ -200,10 +204,30 @@ TModelInstanceInfo emptyTInfo = tid .addNewTModelInstanceInfo(); - if (slink.getSpecificationObject().getKey() != null && - slink.getSpecificationObject().getKey().getId() != null) { - emptyTInfo.setTModelKey(slink.getSpecificationObject() - .getKey().getId()); + RegistryObject specificationObject = slink.getSpecificationObject(); + if (specificationObject.getKey() != null && specificationObject.getKey().getId() != null) { + emptyTInfo.setTModelKey(specificationObject.getKey().getId()); + if (specificationObject.getDescription()!=null) { + for (LocalizedString locDesc : specificationObject.getDescription().getLocalizedStrings()) { + Description description = emptyTInfo.addNewDescription(); + description.setStringValue(locDesc.getValue()); + description.setLang(locDesc.getLocale().getLanguage()); + } + } + Collection externalLinks = slink.getExternalLinks(); + if (externalLinks!=null && externalLinks.size()>0) { + for (ExternalLink link : externalLinks) { + InstanceDetails ids = emptyTInfo.addNewInstanceDetails(); + if (link.getDescription()!=null) { + Description description = ids.addNewDescription(); + description.setStringValue(link.getDescription().getValue()); + } + if (link.getExternalURI()!=null) { + OverviewDoc overviewDoc = ids.addNewOverviewDoc(); + overviewDoc.setOverviewURL(link.getExternalURI()); + } + } + } } } bt.setTModelInstanceDetails(tid); @@ -452,6 +476,12 @@ desc.setLang(locName.getLocale().getLanguage()); } } +// External Links + Collection externalLinks = scheme.getExternalLinks(); + if(externalLinks != null && externalLinks.size() > 0) + { + tm.setOverviewDoc(getOverviewDocFromExternalLink((ExternalLink)externalLinks.iterator().next())); + } IdentifierBag idBag = getIdentifierBagFromExternalIdentifiers(scheme.getExternalIdentifiers()); if (idBag!=null) { @@ -462,8 +492,6 @@ tm.setCategoryBag(catBag); } - // ToDO: overviewDoc - } catch (Exception ud) { throw new JAXRException("Apache JAXR Impl:", ud); } @@ -561,9 +589,6 @@ carr = new Contact[carrSize]; - // TODO - remove this - log.debug("?Org has users=" + users.isEmpty()); - /* * first do primary, and then filter that out in the loop */ @@ -739,7 +764,7 @@ return uri; } - + /** * According to JAXR Javadoc, there are two types of classification, internal and external and they use the Classification, Concept, * and ClassificationScheme objects. It seems the only difference between internal and external (as related to UDDI) is that the @@ -770,33 +795,43 @@ InternationalStringImpl iname = null; String value = null; ClassificationScheme scheme = classification.getClassificationScheme(); - if (classification.isExternal()) { - iname = (InternationalStringImpl) ((RegistryObject) classification).getName(); - value = classification.getValue(); - scheme = classification.getClassificationScheme(); - } - else { - Concept concept = classification.getConcept(); - if (concept != null) { - iname = (InternationalStringImpl) ((RegistryObject) concept).getName(); - value = concept.getValue(); - scheme = concept.getClassificationScheme(); - } - } - - String name = iname.getValue(); - if (name != null) - keyr.setKeyName(name); - - if (value != null) - keyr.setKeyValue(value); - - if (scheme != null) { - Key key = scheme.getKey(); - if (key != null && key.getId() != null) - keyr.setTModelKey(key.getId()); - } - } + if (scheme==null || (classification.isExternal() && classification.getConcept()==null)) { + /* + * JAXR 1.0 Specification: Section D6.4.4 + * Specification related tModels mapped from Concept may be automatically + * categorized by the well-known uddi-org:types taxonomy in UDDI (with + * tModelKey uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4) as follows: + * The keyed reference is assigned a taxonomy value of specification. + */ + keyr.setTModelKey(UDDI_ORG_TYPES); + keyr.setKeyValue("specification"); + } else { + if (classification.isExternal()) { + iname = (InternationalStringImpl) ((RegistryObject) classification).getName(); + value = classification.getValue(); + } else { + Concept concept = classification.getConcept(); + if (concept != null) { + iname = (InternationalStringImpl) ((RegistryObject) concept).getName(); + value = concept.getValue(); + scheme = concept.getClassificationScheme(); + } + } + + String name = iname.getValue(); + if (name != null) + keyr.setKeyName(name); + + if (value != null) + keyr.setKeyValue(value); + + if (scheme != null) { + Key key = scheme.getKey(); + if (key != null && key.getId() != null) + keyr.setTModelKey(key.getId()); + } + } + } } return cbag; } catch (Exception ud) { @@ -847,6 +882,21 @@ throw new JAXRException("Apache JAXR Impl:", ud); } } + + private static OverviewDoc getOverviewDocFromExternalLink(ExternalLink link) + throws JAXRException + { + OverviewDoc od = (OverviewDoc)(XmlObject.Factory.newInstance()).changeType(OverviewDoc.type); + String url = link.getExternalURI(); + if(url != null) + od.setOverviewURL(url); + InternationalString extDesc = link.getDescription(); + if(extDesc != null) { + Description description = od.addNewDescription(); + description.setStringValue(extDesc.getValue()); + } + return od; + } private static BindingTemplates getBindingTemplates(Collection serviceBindings) throws JAXRException { Modified: webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java URL: http://svn.apache.org/viewvc/webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java?rev=591187&r1=591186&r2=591187&view=diff ============================================================================== --- webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java (original) +++ webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java Thu Nov 1 18:31:09 2007 @@ -47,6 +47,7 @@ import org.apache.ws.scout.registry.infomodel.PersonNameImpl; import org.apache.ws.scout.registry.infomodel.ServiceBindingImpl; import org.apache.ws.scout.registry.infomodel.ServiceImpl; +import org.apache.ws.scout.registry.infomodel.SpecificationLinkImpl; import org.apache.ws.scout.registry.infomodel.UserImpl; import org.apache.ws.scout.uddi.AccessPoint; import org.apache.ws.scout.uddi.BindingTemplate; @@ -61,13 +62,18 @@ import org.apache.ws.scout.uddi.Description; import org.apache.ws.scout.uddi.DiscoveryURL; import org.apache.ws.scout.uddi.DiscoveryURLs; +import org.apache.ws.scout.uddi.HostingRedirector; import org.apache.ws.scout.uddi.IdentifierBag; +import org.apache.ws.scout.uddi.InstanceDetails; import org.apache.ws.scout.uddi.KeyedReference; import org.apache.ws.scout.uddi.Name; +import org.apache.ws.scout.uddi.OverviewDoc; import org.apache.ws.scout.uddi.ServiceInfo; import org.apache.ws.scout.uddi.TModel; import org.apache.ws.scout.uddi.TModelDetail; import org.apache.ws.scout.uddi.TModelInfo; +import org.apache.ws.scout.uddi.TModelInstanceDetails; +import org.apache.ws.scout.uddi.TModelInstanceInfo; /** * Helper class that does UDDI->Jaxr Mapping @@ -327,32 +333,60 @@ public static ServiceBinding getServiceBinding(BindingTemplate bs, LifeCycleManager lcm) throws JAXRException { - ServiceBinding serve = new ServiceBindingImpl(lcm); + ServiceBinding serviceBinding = new ServiceBindingImpl(lcm); String keystr = bs.getServiceKey(); if (keystr != null) { Service svc = new ServiceImpl(lcm); svc.setKey(lcm.createKey(keystr)); - ((ServiceBindingImpl)serve).setService(svc); + ((ServiceBindingImpl)serviceBinding).setService(svc); } String bindingKey = bs.getBindingKey(); - if(bindingKey != null) serve.setKey(new KeyImpl(bindingKey)); - //TODO:Add more stuff + if(bindingKey != null) serviceBinding.setKey(new KeyImpl(bindingKey)); + //Access URI AccessPoint access = bs.getAccessPoint(); - //FIXME: accesspoint should have a getURL? - if (access != null) serve.setAccessURI(access.getStringValue()); + if (access != null) serviceBinding.setAccessURI(access.getStringValue()); //Description Description[] da = bs.getDescriptionArray(); if (da != null && da.length > 0) { Description des = da[0]; - serve.setDescription(new InternationalStringImpl(des.getStringValue())); + serviceBinding.setDescription(new InternationalStringImpl(des.getStringValue())); + } + /**Section D.10 of JAXR 1.0 Specification */ + + TModelInstanceDetails details = bs.getTModelInstanceDetails(); + TModelInstanceInfo[] tmodelInstanceInfoArray = details.getTModelInstanceInfoArray(); + for (int i = 0; tmodelInstanceInfoArray != null && i < tmodelInstanceInfoArray.length; i++) + { + TModelInstanceInfo info = (TModelInstanceInfo)tmodelInstanceInfoArray[i]; + InstanceDetails idetails = info.getInstanceDetails(); + Collection elinks = getExternalLinks(idetails.getOverviewDoc(),lcm); + SpecificationLinkImpl slink = new SpecificationLinkImpl(lcm); + slink.addExternalIdentifiers(elinks); + serviceBinding.addSpecificationLink(slink); + + ConceptImpl c = new ConceptImpl(lcm); + c.setExternalLinks(elinks); + c.setKey(lcm.createKey(info.getTModelKey())); + c.setName(lcm.createInternationalString(idetails.getInstanceParms())); + c.setValue(idetails.getInstanceParms()); + + slink.setSpecificationObject(c); + } + + HostingRedirector hr = bs.getHostingRedirector(); + if(hr != null) + { + ServiceBinding sb = lcm.createServiceBinding(); + sb.setKey(new KeyImpl(hr.getBindingKey())); + serviceBinding.setTargetBinding(sb); } - return serve; + return serviceBinding; } public static Concept getConcept(TModelDetail tm, LifeCycleManager lcm) @@ -443,6 +477,23 @@ } return classifications; } + + public static Collection getExternalLinks(OverviewDoc odoc , LifeCycleManager lcm) + throws JAXRException + { + ArrayList alist = new ArrayList(1); + if(odoc != null) + { + Description[] descVect = odoc.getDescriptionArray(); + String desc = ""; + if(descVect != null && descVect.length > 0) { + desc = ((Description)descVect[0]).getStringValue(); + } + alist.add(lcm.createExternalLink(odoc.getOverviewURL(),desc)); + } + + return alist; + } /** * External Identifiers --------------------------------------------------------------------- To unsubscribe, e-mail: scout-dev-unsubscribe@ws.apache.org For additional commands, e-mail: scout-dev-help@ws.apache.org