i
Size: a a a
i
i
i
A
A
A
i
i
A
A
i
i
i
i
A
A
М
public Observable<Object> cookRecipeObservable(Recipe recipe, Object input, Bundle bundle,
String[] params) {
Observable<Object> dynamicParserObservable = Observable.create(subscriber -> {
try {
// Make sure recipe and input is valid.
checkCookRecipeInput(recipe, input);
// Parse input into a list of maps for translation
List<Map<String, Object>> resultList = parseInput(recipe, input.toString(), params);
// Translate each map in the result list into the model object defined in the
// recipe. Return each model once it completes translation via subscriber.
translateMapsToObjects(false, recipe, resultList, new IRecipeCookerCallbacks() {
@Override
public void onPreRecipeCook(Recipe recipe, Object output, Bundle bundle) {
}
@Override
public void onRecipeCooked(Recipe recipe, Object output, Bundle bundle, boolean
done) {
if (!subscriber.isUnsubscribed()) {
subscriber.onNext(output);
if (done) {
subscriber.onCompleted();
}
}
}
@Override
public void onPostRecipeCooked(Recipe recipe, Object output, Bundle bundle) {
}
@Override
public void onRecipeError(Recipe recipe, Exception e, String msg) {
if (e instanceof ValueNotFoundException) {
Log.e(TAG, "Error during parsing, skipping an item:", e);
}
else {
subscriber.onError(e);
}
}
}, bundle);
}
catch (Exception e) {
subscriber.onError(e);
}
});
return dynamicParserObservable;
}
A
A