Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DonePipe cannot be use when() together #168

Open
j796160836 opened this issue Sep 6, 2018 · 2 comments
Open

DonePipe cannot be use when() together #168

j796160836 opened this issue Sep 6, 2018 · 2 comments

Comments

@j796160836
Copy link

j796160836 commented Sep 6, 2018

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>)  
@saturnism
Copy link
Member

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

@j796160836
Copy link
Author

@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'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants