/* * Copyright 2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ratpack.func; /** * A generic pair implementation that can be used to cumulatively aggregate a data structure during a promise pipeline. *
* This can sometimes be useful when collecting facts about something as part of a data stream without using mutable data structures. *
{@code
* import ratpack.func.Pair;
* import ratpack.exec.Promise;
* import ratpack.test.embed.EmbeddedApp;
*
* import static org.junit.Assert.assertEquals;
*
* public class Example {
*
* public static void main(String[] args) throws Exception {
* EmbeddedApp.fromHandler(ctx -> {
* int id = 1;
* int age = 21;
* String name = "John";
*
* Promise.value(id)
* .map(idValue -> Pair.of(idValue, age))
* .flatMap(pair -> Promise.value(name).map(pair::nestRight))
* .then(pair -> {
* int receivedId = pair.left;
* int receivedAge = pair.right.right;
* String receivedName = pair.right.left;
* ctx.render(receivedName + " [" + receivedId + "] - age: " + receivedAge);
* });
* }).test(httpClient -> {
* assertEquals("John [1] - age: 21", httpClient.getText());
* });
* }
* }
* }
*
*
* @param unpackLeft() {
return null;
}
public static unpackRight() {
return null;
}
}