[SOLVED] juddiv3 (3.0.4) finding all business/services

View: New views
4 Messages — Rating Filter:   Alert me  

[SOLVED] juddiv3 (3.0.4) finding all business/services

by chainerlt () :: Rate this Message:

| View Threaded | Show Only this Message

Hello,

I've been looking for this answer for like a week now. Seems like I've googled everything and everywhere. Even posted in this forum: here. So here is my story:
I'm using juddi-portal-bundle-3.0.4 at the moment. Juddy behaves happy and works properly, but here comes some problems (or lack of my knowledge) when I wanna get a list of all business and/or services.
So I was learning juddi for a while and now I'm able to manage business/services via soapui (let's say in a manual way) or programmatically (via java). So I've created some temp business with services and here's how they look from UDDIBrowser Portlet:

I've read that for searching all business you need to use search name "%", but seems like it is not working for me. I've tried both: programmatically and via soapui:
import org.apache.juddi.ClassUtil;
import org.apache.juddi.api_v3.*;
import org.apache.juddi.v3.client.config.UDDIClientContainer;
import org.apache.juddi.v3.client.transport.Transport;
import org.apache.juddi.v3_service.JUDDIApiPortType;
import org.uddi.api_v3.*;
import org.uddi.v3_service.*;
...
        private static UDDISecurityPortType security = null;
        private static JUDDIApiPortType juddiApi = null;
        private static UDDIPublicationPortType publish = null;
        private static UDDIInquiryPortType inquiry = null;

        public Tools() throws Exception
        {
                String clazz = UDDIClientContainer.getUDDIClerkManager(null).getClientConfig()
                                .getUDDINode("default").getProxyTransport();
                Class<?> transportClass = ClassUtil.forName(clazz, Transport.class);
                if (transportClass != null)
                {
                        Transport transport = (Transport) transportClass.getConstructor(String.class)
                                        .newInstance("default");
                        security = transport.getUDDISecurityService();
                        juddiApi = transport.getJUDDIApiService();
                        publish = transport.getUDDIPublishService();
                        inquiry = transport.getUDDIInquiryService();
                }
        }
...
        public BusinessList findBusiness(String searchPattern) throws Exception
        {
                FindBusiness fb = new FindBusiness();
                Name findName = new Name();
                findName.setValue(searchPattern);
                fb.getName().add(findName);
                return inquiry.findBusiness(fb);
        }
...
findBusiness("%");
It brings me empty BusinessList. Here's how it looks while debugging:



However it works when I search for exact business name, for instance "My Business2":



Same via soapUI (3.6.1):
Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:uddi-org:api_v3">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:find_business>
         <!--Zero or more repetitions:-->
         <urn:name>My Business2</urn:name>
      </urn:find_business>
   </soapenv:Body>
</soapenv:Envelope>
Respond:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <businessList xmlns:ns10="urn:uddi-org:policy_v3_instanceParms" xmlns:ns9="urn:uddi-org:vs_v3" xmlns:ns8="urn:uddi-org:repl_v3" xmlns:ns7="urn:uddi-org:policy_v3" xmlns:ns6="urn:uddi-org:subr_v3" xmlns:ns5="urn:uddi-org:sub_v3" xmlns:ns4="urn:uddi-org:vscache_v3" xmlns:ns3="urn:uddi-org:custody_v3" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:uddi-org:api_v3">
         <listDescription>
            <includeCount>1</includeCount>
            <actualCount>1</actualCount>
            <listHead>1</listHead>
         </listDescription>
         <businessInfos>
            <businessInfo businessKey="uddi:juddi.apache.org:c0d12d2f-9f8b-4444-acae-675f8f53383f">
               <name>My Business2</name>
               <serviceInfos>
                  <serviceInfo businessKey="uddi:juddi.apache.org:c0d12d2f-9f8b-4444-acae-675f8f53383f" serviceKey="uddi:juddi.apache.org:beed92d4-57b5-4974-9e56-17d846f2cca2">
                     <name>My Service2</name>
                  </serviceInfo>
               </serviceInfos>
            </businessInfo>
         </businessInfos>
      </businessList>
   </soap:Body>
</soap:Envelope>
But finds nothing with "%" (or "*" or other 100 symbols and combinations I've tried (including xpath and other expressions):
Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:uddi-org:api_v3">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:find_business>
         <!--Zero or more repetitions:-->
         <urn:name>%</urn:name>
      </urn:find_business>
   </soapenv:Body>
</soapenv:Envelope>
Respond:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <businessList xmlns:ns10="urn:uddi-org:policy_v3_instanceParms" xmlns:ns9="urn:uddi-org:vs_v3" xmlns:ns8="urn:uddi-org:repl_v3" xmlns:ns7="urn:uddi-org:policy_v3" xmlns:ns6="urn:uddi-org:subr_v3" xmlns:ns5="urn:uddi-org:sub_v3" xmlns:ns4="urn:uddi-org:vscache_v3" xmlns:ns3="urn:uddi-org:custody_v3" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:uddi-org:api_v3">
         <listDescription>
            <includeCount>0</includeCount>
            <actualCount>0</actualCount>
            <listHead>0</listHead>
         </listDescription>
      </businessList>
   </soap:Body>
</soap:Envelope>
I've read about MetaMatrix (found smth: here) but seems like it's not free. Also tried using some other libraries, but vainly. However that "%" pattern seems to be very logic and seems like everybody is using this way of finding all objects, but I cannot figure out why it does not work. I really would love to get some answers or suggestions cause I feel stuck :/ . Thanks for reading and taking time.

Re: juddiv3 (3.0.4) finding all business/services

by chainerlt :: Rate this Message:

| View Threaded | Show Only this Message

I also noticed, that search pattern "%" works on juddi 0.9rc4. But juddi 0.9rc4 itself works only on java15. So I tried to run juddiv3 (3.0.4) on java15, but the wildcard "%" still searches zero business/services. Any ideas?

Re: juddiv3 (3.0.4) finding all business/services

by chainerlt :: Rate this Message:

| View Threaded | Show Only this Message

Solution:
So the main trick was to set findqualifier "APPROXIMATE_MATCH" or if you would look into its class:
package org.apache.juddi.query.util;

import org.uddi.api_v3.FindQualifiers;

public class FindQualifiers
{
    ...
    public static final String APPROXIMATE_MATCH = "approximateMatch";
    ...
And now only adding this approximate match qualifier + name "%" it works.
        org.uddi.api_v3.Name name = new org.uddi.api_v3.Name();
        name.setValue("%");
        org.uddi.api_v3.FindQualifiers qualifiers = new org.uddi.api_v3.FindQualifiers();
        qualifiers.getFindQualifier().add(org.apache.juddi.query.util.FindQualifiers.APPROXIMATE_MATCH);

        // find business
        org.uddi.api_v3.FindBusiness findBusiness = new org.uddi.api_v3.FindBusiness();
        findBusiness.getName().add(name);
        findBusiness.setFindQualifiers(qualifiers);

        BusinessList lst = inquiry.findBusiness(findBusiness);
Note:
you can find this class in "juddi-core-3.0.4.jar". Or you can just write String manualy:
...
qualifiers.getFindQualifier().add("approximateMatch");
...
Making request via soapUI:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:uddi-org:api_v3">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:find_business>
         <!--Optional:-->
         <urn:findQualifiers>
            <!--1 or more repetitions:-->
            <urn:findQualifier>approximateMatch</urn:findQualifier>
         </urn:findQualifiers>
         <!--Zero or more repetitions:-->
         <urn:name>%</urn:name>
      </urn:find_business>
   </soapenv:Body>
</soapenv:Envelope>
Maybe this will help someone, since I had to find out this by myself and it took few days :/
Good luck!

RE: juddiv3 (3.0.4) finding all business/services

by jfaath :: Rate this Message:

| View Threaded | Show Only this Message

You should switch over to the new mailing list:

user@...

I've been telling you to use that solution for the last week.  Would have
saved you a week's worth of work anyway.

-JF

-----Original Message-----
From: chainerlt [mailto:chainerlt@...]
Sent: Friday, February 25, 2011 6:01 AM
To: juddi-user@...
Subject: Re: juddiv3 (3.0.4) finding all business/services


Solution:
So the main trick was to set findqualifier "APPROXIMATE_MATCH" or if you
would look into its class:


> package org.apache.juddi.query.util;
>
> import org.uddi.api_v3.FindQualifiers;
>
> public class FindQualifiers
> {
>     ...
>     public static final String APPROXIMATE_MATCH = "approximateMatch";
>     ...
>
And now only adding this approximate match qualifier + name "%" it works.


>         org.uddi.api_v3.Name name = new org.uddi.api_v3.Name();
>         name.setValue("%");
>         org.uddi.api_v3.FindQualifiers qualifiers = new
> org.uddi.api_v3.FindQualifiers();
>        
>
qualifiers.getFindQualifier().add(org.apache.juddi.query.util.FindQualifiers
.APPROXIMATE_MATCH);
>
>         // find business
>         org.uddi.api_v3.FindBusiness findBusiness = new
> org.uddi.api_v3.FindBusiness();
>         findBusiness.getName().add(name);
>         findBusiness.setFindQualifiers(qualifiers);
>
>         BusinessList lst; = inquiry.findBusiness(findBusiness);
>
Note:
you can find this class in "[b]juddi-core-3.0.4.jar[/b]". Or you can just
write String manualy:


> ...
> qualifiers.getFindQualifier().add("approximateMatch");
> ...
>
Maybe this will help someone, since I had to find out this by myself and it
took few days :/
Good luck!
--
View this message in context:
http://old.nabble.com/juddiv3-%283.0.4%29-finding-all-business-services-tp30
975809p31012395.html
Sent from the jUDDI - User mailing list archive at Nabble.com.