Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

IOU Java

Travis CI License MIT

Promises/A+ logo IOU Java is a [Promises/A+](https://github.com/promises-aplus/promises-spec) compliant promise library that extends [IOU Core](https://github.com/ioweyou/iou-core).

Maven


<dependency>
    <groupId>nl.brusque.iou</groupId>
    <artifactId>iou-java</artifactId>
    <version>1.0.0-beta-01</version>
</dependency>

Gradle


compile 'nl.brusque.iou:iou-java:1.0.0-beta-01' { transitive = true }

Example


Call with single then

IOU<Integer> iou = new IOU<>();

iou.getPromise()
        .then(new IThenCallable<Integer, Void>() {
            @Override
            public Void apply(Integer input) throws Exception {
                System.out.println(input.toString());

                return null;
            }
        });

iou.resolve(42); // prints "42"

Chained or piped promise

IOU<Integer> iou = new IOU<>();

iou.getPromise()
        .then(new IThenCallable<Integer, Integer>() {
            @Override
            public Integer apply(Integer input) throws Exception {
                return input * 10;
            }
        })
        .then(new IThenCallable<Integer, String>() {
            @Override
            public String apply(Integer input) throws Exception {
                return String.format("The result: %d", input);
            }
        })
        .then(new IThenCallable<String, Void>() {
            @Override
            public Void apply(String input) throws Exception {
                System.out.println(input);

                return null;
            }
        });

iou.resolve(42); // prints "The result: 420"

Rejecting a promise

IOU<Integer> iou = new IOU<>();

iou.getPromise()
        .then(new IThenCallable<Integer, Integer>() {
            @Override
            public Integer apply(Integer integer) throws Exception {
                return integer * 42;
            }
        })
        .fail(new IThenCallable<Object, Void>() {
            @Override
            public Void apply(Object input) throws Exception {
                System.out.println(String.format("%s I can't do that.", input));

                return null;
            }
        });

iou.reject("I'm sorry, Dave."); // prints "I'm sorry, Dave. I can't do that."

Or if you like the A+ way better

IOU<Integer> iou = new IOU<>();

iou.getPromise()
        .then(new IThenCallable<Integer, Integer>() {
            @Override
            public Integer apply(Integer input) throws Exception {
                return input * 42;
            }
        }, new IThenCallable<Object, Integer>() {
            @Override
            public Integer apply(Object input) throws Exception {
                System.out.println(String.format("%s I can't do that.", input));

                return null;
            }
        });

iou.reject("I'm sorry, A+."); // prints "I'm sorry, A+. I can't do that."

Failing a promise

IOU<Integer> iou = new IOU<>();

iou.getPromise()
        .then(new IThenCallable<Integer, Integer>() {
            @Override
            public Integer apply(Integer input) throws Exception {
                throw new Exception("I just don't care.");
            }
        })
        .then(new IThenCallable<Integer, Void>() {
            @Override
            public Void apply(Integer input) throws Exception {
                System.out.println("What would you say you do here?");

                return null;
            }
        })
        .fail(new IThenCallable<Object, Void>() {
            @Override
            public Void apply(Object reason) throws Exception {
                System.out.println(
                    String.format("It's not that I'm lazy, it's that %s",
                            ((Exception)reason).getMessage()));

                return null;
            }
        });

iou.resolve(42); // prints "It's not that I'm lazy, it's that I just don't care."

About

IOU for Java - Promises/A+ implementation for Java

Topics

Resources

License

Languages

You can’t perform that action at this time.