/** * query the network registry for <tt>0..*</tt> of servers based on a * filter. if the filter is null, it is considered a wildcard. * * @param filter * @return */ public NetworkInstance[] queryServers(NetworkFilter filter) { NetworkInstance servers[] = getServers(); if(servers == null || servers.length <= 0) { return new NetworkInstance[0]; } Set result = new HashSet(); for(int c = 0; c < servers.length; c++) { NetworkInstance instance = (NetworkInstance) this.servers.get(servers[c]); if(filter == null || filter.filter(servers[c].getIdentity(), instance.getLocators())) { if(result.contains(servers[c]) == false) { // the filter passed, add it result.add(servers[c]); } } } return (NetworkInstance[]) result.toArray(new NetworkInstance[result.size()]); }