Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] [jira] Created: (UDIG-351) Catalog.find appears to call blocking method members.

Catalog.find appears to call blocking method members.
-----------------------------------------------------

         Key: UDIG-351
         URL: http://jira.codehaus.org/browse/UDIG-351
     Project: uDIG
        Type: Bug
  Components: catalog  
    Versions: UDIG 0.9    
    Reporter: Richard Gould
 Assigned to: David Zwiers 
     Fix For: UDIG 0.9


The method Catalog.find doesn't appear to declare that it blocks, but it calls Service.members, which is clearly a blocking method.

Around line 185 of CatalogImpl.java

----------------

    public List<IResolve> find(URL query){
        List<IResolve> list=new ArrayList<IResolve>();
        for( Iterator iter = services.iterator(); iter.hasNext(); ) {
            IService service = (IService) iter.next();

            if( service.getIdentifier().getProtocol().equalsIgnoreCase(query.getProtocol()) &&
                    ((service.getIdentifier().getHost()==null || "".equals(service.getIdentifier().getHost())) || (service.getIdentifier().getHost()!=null && service.getIdentifier().getHost().equalsIgnoreCase(query.getHost()))) && //$NON-NLS-1$
                    ((service.getIdentifier().getPath()==null || "".equals(service.getIdentifier().getPath()))|| (service.getIdentifier().getPath()!=null && service.getIdentifier().getPath().equalsIgnoreCase(query.getPath()))) && //$NON-NLS-1$
                    ((service.getIdentifier().getQuery()==null || "".equals(service.getIdentifier().getQuery()))|| (service.getIdentifier().getQuery()!=null && service.getIdentifier().getQuery().equalsIgnoreCase(query.getQuery()))) && //$NON-NLS-1$
                    ((service.getIdentifier().getAuthority()==null || "".equals(service.getIdentifier().getAuthority()))|| (service.getIdentifier().getAuthority()!=null && service.getIdentifier().getAuthority().equalsIgnoreCase(query.getAuthority()))) ){ //$NON-NLS-1$
                Iterator<IResolve> i;
                try {
                    List t =service.members(null); 
                    i = t==null?(new LinkedList<IResolve>()).iterator():t.iterator();
                    if(query.getRef()!=null){
                        //  it's a resource
                        while(i.hasNext()){
                            IGeoResource res = (IGeoResource)i.next();
                            if(query.getRef().equals(res.getIdentifier().getRef()))
                                list.add(res);
                        }
                    }else{
                  	    while(i.hasNext())
                  	    list.add(i.next());
                    }
                } catch (IOException e) {
                    CorePlugin.log(CatalogPlugin.getDefault(), e);
                }

            }
        }
        return list;
    }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



Back to the top