// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package org.jdeferred.multiple; import java.util.concurrent.atomic.AtomicInteger; import org.jdeferred.DoneCallback; import org.jdeferred.FailCallback; import org.jdeferred.ProgressCallback; import org.jdeferred.Promise; import org.jdeferred.impl.DeferredObject; // Referenced classes of package org.jdeferred.multiple: // MultipleResults, OneResult, MasterProgress, OneProgress, // OneReject public class MasterDeferredObject extends DeferredObject implements Promise { private final AtomicInteger doneCount = new AtomicInteger(); private final AtomicInteger failCount = new AtomicInteger(); private final int numberOfPromises; private final MultipleResults results; public transient MasterDeferredObject(Promise apromise[]) { if (apromise == null || apromise.length == 0) { throw new IllegalArgumentException("Promises is null or empty"); } numberOfPromises = apromise.length; results = new MultipleResults(numberOfPromises); int j = apromise.length; int i = 0; for (final int index = 0; i < j; index++) { final Promise promise = apromise[i]; promise.fail(new FailCallback() { final MasterDeferredObject this$0; final int val$index; final Promise val$promise; public void onFail(Object obj) { label0: { synchronized (MasterDeferredObject.this) { if (isPending()) { break label0; } } return; } int k = failCount.incrementAndGet(); notify(new MasterProgress(doneCount.get(), k, numberOfPromises)); reject(new OneReject(index, promise, obj)); masterdeferredobject; JVM INSTR monitorexit ; return; obj; masterdeferredobject; JVM INSTR monitorexit ; throw obj; } { this$0 = MasterDeferredObject.this; index = i; promise = promise1; super(); } }).progress(new ProgressCallback() { final MasterDeferredObject this$0; final int val$index; final Promise val$promise; public void onProgress(Object obj) { label0: { synchronized (MasterDeferredObject.this) { if (isPending()) { break label0; } } return; } notify(new OneProgress(doneCount.get(), failCount.get(), numberOfPromises, index, promise, obj)); masterdeferredobject; JVM INSTR monitorexit ; return; obj; masterdeferredobject; JVM INSTR monitorexit ; throw obj; } { this$0 = MasterDeferredObject.this; index = i; promise = promise1; super(); } }).done(new DoneCallback() { final MasterDeferredObject this$0; final int val$index; final Promise val$promise; public void onDone(Object obj) { label0: { synchronized (MasterDeferredObject.this) { if (isPending()) { break label0; } } return; } results.set(index, new OneResult(index, promise, obj)); int k = doneCount.incrementAndGet(); notify(new MasterProgress(k, failCount.get(), numberOfPromises)); if (k == numberOfPromises) { resolve(results); } masterdeferredobject; JVM INSTR monitorexit ; return; obj; masterdeferredobject; JVM INSTR monitorexit ; throw obj; } { this$0 = MasterDeferredObject.this; index = i; promise = promise1; super(); } }); i++; } } }