An open API service indexing awesome lists of open source software.

https://github.com/ioweyou/iou-java

IOU for Java - Promises/A+ implementation for Java
https://github.com/ioweyou/iou-java

aplus iou java promise

Last synced: 6 months ago
JSON representation

IOU for Java - Promises/A+ implementation for Java

Awesome Lists containing this project

README

          

# IOU Java

[![Travis CI](https://travis-ci.org/ioweyou/iou-java.svg)](https://travis-ci.org/ioweyou/iou-java)
[![License MIT](https://img.shields.io/:license-mit-blue.svg)](http://badges.mit-license.org)


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
-----
```xml

nl.brusque.iou
iou-java
1.0.0-beta-01

```

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

## Example
-----
### Call with single then

```java
IOU iou = new IOU<>();

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

return null;
}
});

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

### Chained or piped promise
```java
IOU iou = new IOU<>();

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

return null;
}
});

iou.resolve(42); // prints "The result: 420"
```
### Rejecting a promise
```java
IOU iou = new IOU<>();

iou.getPromise()
.then(new IThenCallable() {
@Override
public Integer apply(Integer integer) throws Exception {
return integer * 42;
}
})
.fail(new IThenCallable() {
@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
```java
IOU iou = new IOU<>();

iou.getPromise()
.then(new IThenCallable() {
@Override
public Integer apply(Integer input) throws Exception {
return input * 42;
}
}, new IThenCallable() {
@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
```java
IOU iou = new IOU<>();

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

return null;
}
})
.fail(new IThenCallable() {
@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."
```