/** * Creates an {@link IIntermediateResultListener} that delegates results and exceptions to a given IntermediateFuture. * * @param delegate The future used for intermediate and final result delegation. * @param undone Flag if undone methods should be used. * @param customResultListener Custom result listener that overwrites the delegation behaviour. * @param customIntermediateResultListener Custom intermediate result listener that overwrites the delegation behaviour. * @return {@link IntermediateDelegationResultListener} */ public static <E> IIntermediateResultListener<E> delegate(final IntermediateFuture<E> delegate, boolean undone, IFunctionalResultListener<Collection<E>> customResultListener, IFunctionalIntermediateResultListener<E> customIntermediateResultListener) { return new IntermediateDelegationResultListener<E>(delegate, undone, customResultListener, customIntermediateResultListener); }
public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } });
/** * Declare that the future is finished. This method is only called for * intermediate futures, i.e. when this method is called it is guaranteed * that the intermediateResultAvailable method was called for all * intermediate results before. */ public void finishedIfUndone() { undone = true; finished(); }
customIntermediateResultAvailable(result); handleException(e); handleException(e);
customResultAvailable(result); handleException(e); handleException(e);
/** * Called when the result is available. * * @param result The result. */ public void resultAvailableIfUndone(Collection<E> result) { undone = true; resultAvailable(result); }
/** * Called when an exception occurred. * * @param exception The exception. */ public void exceptionOccurredIfUndone(Exception exception) { undone = true; exceptionOccurred(exception); }
public void exceptionOccurred(Exception exception) { TestReport tr = new TestReport("#"+testno, "Tests if a long running call works."); tr.setFailed(exception); List<TestReport> li = new ArrayList<TestReport>(); super.resultAvailable(li); } });
public void exceptionOccurred(Exception exception) { checkAsyncFilters(filter, it).addResultListener(new IntermediateDelegationResultListener<T>(ret)); } });
public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } });
public void customResultAvailable(final IComponentIdentifier cid) { callServices(cid, testno, -1).addResultListener(new IntermediateDelegationResultListener<TestReport>(ret)); }
public void customIntermediateResultAvailable(T result) { super.customIntermediateResultAvailable(SServiceProvider.createRequiredProxy(component, result, type)); } }
public void resultAvailable(Boolean result) { if(result!=null && result.booleanValue()) { ret.addIntermediateResult(ser); } checkAsyncFilters(filter, it).addResultListener(new IntermediateDelegationResultListener<T>(ret)); }
public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } });
public void customResultAvailable(Boolean result) { if(result.booleanValue() && !ret.getIntermediateResults().contains(services[i])) { ret.addIntermediateResult(services[i]); } if(i+1<services.length) { getAllResults(filter, services, i+1) .addResultListener(new IntermediateDelegationResultListener<IService>(ret)); } else { ret.setFinished(); } } });
public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } });
/** * Search for services. */ // read public <T> ISubscriptionIntermediateFuture<T> searchServices(ClassInfo type, IComponentIdentifier cid, String scope, IAsyncFilter<T> filter) { final SubscriptionIntermediateFuture<T> ret = new SubscriptionIntermediateFuture<T>(); Iterator<T> sers = (Iterator<T>)getServices(type); if(sers!=null && sers.hasNext() && !RequiredServiceInfo.SCOPE_NONE.equals(scope)) { Collection<T> ssers = checkScope(sers, cid, scope, false); checkAsyncFilters(filter, ssers.iterator()).addResultListener(new IntermediateDelegationResultListener<T>(ret)); // filter checks in loop are possibly performed outside of synchornized block // searchLoopServices(filter, sers, cid, scope).addResultListener(new IntermediateDelegationResultListener<T>(ret)); } else { ret.setFinished(); } return ret; }
/** * Check results before sending them further. */ public void customIntermediateResultAvailable(E result) { if(filter.add(objectToByteArray(result))) { System.out.println("addfil: "+result+" "+filter.hashCode()); super.customIntermediateResultAvailable(result); } // else // { // System.out.println("Filtered out duplicate: "+result); // } }