jdeferred / jdeferred

Java Deferred/Promise library similar to JQuery.

Home Page:jdeferred.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DonePipe cannot be use when() together

j796160836 opened this issue · comments

Here is the scenario in pseudo code with my case.

private Promise<ObjectA, Exception, Double> grabObjectAandFilter() {
    return grabObjectA().then(new DoneFilter<ArrayList<ObjectA>, ObjectA>() {
        @Override
        public ObjectA filterDone(ArrayList<ObjectA> result) {
            // Do some filter
            return getFilteredOne();
        }
    });
}

private Promise<ArrayList<ObjectB>, OneReject<Object>, MasterProgress> grabB1andB2ThenMerge() {
    return dm.when(grabObjectB1(), grabObjectB2()
    ).then(new DoneFilter<MultipleResults2<ArrayList<ObjectB>, ArrayList<ObjectB>>, ArrayList<ObjectB>>() {
        @Override
        public ArrayList<ObjectB> filterDone(MultipleResults2<ArrayList<ObjectB>, ArrayList<ObjectB>> result) {
            ArrayList<ObjectB> list = new ArrayList<>();
            list.addAll(result.getFirst().getResult());
            list.addAll(result.getSecond().getResult());
            // Do some filter
            return list;
        }
    });
}

So here is my try.

grabObjectAandFilter().then(new DonePipe<ObjectA, ArrayList<ObjectB>, OneReject<Object>, MasterProgress>() {
    @Override
    public Promise<ArrayList<ObjectB>, OneReject<Object>, MasterProgress> pipeDone(ObjectA result) {
        return grabB1andB2ThenMerge();
    }
});

I got this error

error: no suitable method found for then(<anonymous DonePipe<ObjectA,ArrayList<ObjectB>,OneReject<Object>,MasterProgress>>)
method Promise.then(DoneCallback<? super ObjectA>) is not applicable
(argument mismatch; <anonymous DonePipe<ObjectA,ArrayList<ObjectB>,OneReject<Object>,MasterProgress>> cannot be converted to DoneCallback<? super ObjectA>)
method Promise.<D_OUT#1>then(DoneFilter<? super ObjectA,? extends D_OUT#1>) is not applicable
(cannot infer type-variable(s) D_OUT#1
(argument mismatch; <anonymous DonePipe<ObjectA,ArrayList<ObjectB>,OneReject<Object>,MasterProgress>> cannot be converted to DoneFilter<? super ObjectA,? extends D_OUT#1>))
method Promise.<D_OUT#2,F_OUT#1>then(DoneFilter<? super ObjectA,? extends D_OUT#2>,FailFilter<? super Exception,? extends F_OUT#1>) is not applicable
(cannot infer type-variable(s) D_OUT#2,F_OUT#1
(actual and formal argument lists differ in length))
method Promise.<D_OUT#3,F_OUT#2,P_OUT#1>then(DoneFilter<? super ObjectA,? extends D_OUT#3>,FailFilter<? super Exception,? extends F_OUT#2>,ProgressFilter<? super Double,? extends P_OUT#1>) is not applicable
(cannot infer type-variable(s) D_OUT#3,F_OUT#2,P_OUT#1
(actual and formal argument lists differ in length))
method Promise.<D_OUT#4>then(DonePipe<? super ObjectA,? extends D_OUT#4,? extends Exception,? extends Double>) is not applicable
(cannot infer type-variable(s) D_OUT#4
(argument mismatch; <anonymous DonePipe<ObjectA,ArrayList<ObjectB>,OneReject<Object>,MasterProgress>> cannot be converted to DonePipe<? super ObjectA,? extends D_OUT#4,? extends Exception,? extends Double>))
method Promise.<D_OUT#5,F_OUT#3>then(DonePipe<? super ObjectA,? extends D_OUT#5,? extends F_OUT#3,? extends Double>,FailPipe<? super Exception,? extends D_OUT#5,? extends F_OUT#3,? extends Double>) is not applicable
(cannot infer type-variable(s) D_OUT#5,F_OUT#3
(actual and formal argument lists differ in length))
method Promise.<D_OUT#6,F_OUT#4,P_OUT#2>then(DonePipe<? super ObjectA,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,FailPipe<? super Exception,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,ProgressPipe<? super Double,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>) is not applicable
(cannot infer type-variable(s) D_OUT#6,F_OUT#4,P_OUT#2
(actual and formal argument lists differ in length))
where D_OUT#1,D,F,P,D_OUT#2,F_OUT#1,D_OUT#3,F_OUT#2,P_OUT#1,D_OUT#4,D_OUT#5,F_OUT#3,D_OUT#6,F_OUT#4,P_OUT#2 are type-variables:
D_OUT#1 extends Object declared in method <D_OUT#1>then(DoneFilter<? super D,? extends D_OUT#1>)
D extends Object declared in interface Promise
F extends Object declared in interface Promise
P extends Object declared in interface Promise
D_OUT#2 extends Object declared in method <D_OUT#2,F_OUT#1>then(DoneFilter<? super D,? extends D_OUT#2>,FailFilter<? super F,? extends F_OUT#1>)
F_OUT#1 extends Object declared in method <D_OUT#2,F_OUT#1>then(DoneFilter<? super D,? extends D_OUT#2>,FailFilter<? super F,? extends F_OUT#1>)
D_OUT#3 extends Object declared in method <D_OUT#3,F_OUT#2,P_OUT#1>then(DoneFilter<? super D,? extends D_OUT#3>,FailFilter<? super F,? extends F_OUT#2>,ProgressFilter<? super P,? extends P_OUT#1>)
F_OUT#2 extends Object declared in method <D_OUT#3,F_OUT#2,P_OUT#1>then(DoneFilter<? super D,? extends D_OUT#3>,FailFilter<? super F,? extends F_OUT#2>,ProgressFilter<? super P,? extends P_OUT#1>)
P_OUT#1 extends Object declared in method <D_OUT#3,F_OUT#2,P_OUT#1>then(DoneFilter<? super D,? extends D_OUT#3>,FailFilter<? super F,? extends F_OUT#2>,ProgressFilter<? super P,? extends P_OUT#1>)
D_OUT#4 extends Object declared in method <D_OUT#4>then(DonePipe<? super D,? extends D_OUT#4,? extends F,? extends P>)
D_OUT#5 extends Object declared in method <D_OUT#5,F_OUT#3>then(DonePipe<? super D,? extends D_OUT#5,? extends F_OUT#3,? extends P>,FailPipe<? super F,? extends D_OUT#5,? extends F_OUT#3,? extends P>)
F_OUT#3 extends Object declared in method <D_OUT#5,F_OUT#3>then(DonePipe<? super D,? extends D_OUT#5,? extends F_OUT#3,? extends P>,FailPipe<? super F,? extends D_OUT#5,? extends F_OUT#3,? extends P>)
D_OUT#6 extends Object declared in method <D_OUT#6,F_OUT#4,P_OUT#2>then(DonePipe<? super D,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,FailPipe<? super F,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,ProgressPipe<? super P,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>)
F_OUT#4 extends Object declared in method <D_OUT#6,F_OUT#4,P_OUT#2>then(DonePipe<? super D,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,FailPipe<? super F,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,ProgressPipe<? super P,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>)
P_OUT#2 extends Object declared in method <D_OUT#6,F_OUT#4,P_OUT#2>then(DonePipe<? super D,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,FailPipe<? super F,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>,ProgressPipe<? super P,? extends D_OUT#6,? extends F_OUT#4,? extends P_OUT#2>)  

hiya! which version are you using? 1.x or 2.0-beta? thanks!

@saturnism It's 2.0.0-beta1. Feel free to ask me if lack something.

implementation 'org.jdeferred.v2:jdeferred-core:2.0.0-beta1'
implementation 'org.jdeferred.v2:jdeferred-android:2.0.0-beta1'