[
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