public void resultAvailable(Collection<IServiceProvider> result) { // SEARCH.set(search); addChildren(start, src, provi, context, ret, result, 0);//, res); // SEARCH.set(null); }
/** * Add children to the current search. */ protected void addChildren(IServiceProvider start, IServiceProvider source, IServiceProvider provider, SearchContext context, TerminableIntermediateFuture<IService> ret, Collection<IServiceProvider> children, int callstack)//, List res) { // if(!context.selector.isFinished(ret.getIntermediateResults()) && children!=null && !children.isEmpty()) if(!checkFinished(context.selector, ret) && children!=null && !children.isEmpty()) { List<IServiceProvider> ccs = new LinkedList<IServiceProvider>(children); ccs.remove(source); if(!ccs.isEmpty()) { context.todo.put(CURRENT_CHILDREN, ccs); } } processChildNodes(start, provider, context, ret, callstack+1);//, res); }
public void run() { // SEARCH.set(search); processNode(start, source, provider, context, ret, up, 0, ischild);//, res); // SEARCH.set(null); } }).start();
public void finished() { // SEARCH.set(search); removeOpenCall(ret, future); processParent(start, source, provider, context, ret, up, 0);//, res); // SEARCH.set(null); }
if(!checkFinished(context.selector, ret) && provider!=null) addOpenCall(ret, future); processParent(start, source, provider, context, ret, up, callstack+1);//, res); processParent(start, source, provider, context, ret, up, callstack+1);//, res); processChildNodes(start, provider, context, ret, callstack+1);//, res); processChildNodes(start, provider, context, ret, callstack+1);//, res);
if(context.todo.isEmpty() || checkFinished(context.selector, ret)) processNode(start, provider, child, context, ret, false, callstack+1, true); addChildren(start, src, provi, context, ret, result, callstack+1);//, res);
if(!checkFinished(context.selector, ret) && up) result = null; processNode(start, provider, (IServiceProvider)result, context, ret, up, callstack+1, false); processChildNodes(start, provider, context, ret, callstack+1);//, res);
public void exceptionOccurred(Exception exception) { removeOpenCall(ret, future); // System.out.println("nothing found: "+provider.getId()); // do not terminate serach when one node fails // what to do with exception? resultAvailable(null); // ret.setException(exception); } });
public void resultAvailable(Collection<IService> res) { removeOpenCall(ret, future); // System.out.println("found: "+context+", "+provider.getId()+" "+result); if(res!=null) { // Collection res = (Collection)result; for(Iterator<IService> it=res.iterator(); it.hasNext(); ) { IService o = it.next(); // System.out.println("found: "+provider.getId()+" "+o); ret.addIntermediateResult(o); } } // SEARCH.set(search); processParent(start, source, provider, context, ret, up, 0);//, res); // SEARCH.set(null); }
public void resultAvailable(IServiceProvider result) { // Cut search if parent was already visisted. if(SUtil.equals(source, result)) result = null; // SEARCH.set(search); processNode(start, provider, (IServiceProvider)result, context, ret, up, 0, false); // SEARCH.set(null); }
processNode(provider, null, provider, context, ret, up, 0, false);//, res);