How to cause or emit a Rebound?

Description

The Rebound is in-build feature so all you have to do is use it in your component creation.

In order to cause a rebound you need to emit rebound event with a cause as a second argument. The cause may be an Error or a String with a description of the cause.

The basic principle and syntax could be written following examples presented here.

Causing Rebound in JavaScript code

Here is how to implement Rebound in Node.js code:

exports.process = processTrigger;

function processTrigger(msg, cfg){
    var that = this;
    that.emit('rebound', new Error('Rebound reason'));
    that.emit('end');
}

Here is an example of Rebound feature usage in Commercetools component component action called addVariants:

function addVariant(productId, payload) {
        if (!productId) {
            console.log('No product with masterVariantSku %s found.', masterVariantSku);
            return self.emit('rebound', 'No product with masterVariantSku' + masterVariantSku + 'found.');
        }

        function emitData(response) {
            self.emit('data', response.body);
        }

        return client.products
            .byId(productId)
            .update(payload)
            .then(emitData);
    }

Causing Rebound in Java code

Here is how to implement the Rebound feature in the component code written in Java String:

package io.elastic.demo;

import io.elastic.api.Component;
import io.elastic.api.EventEmitter;
import io.elastic.api.ExecutionParameters;

public class ReboundingComponent extends Component {

    public ReboundingComponent(EventEmitter eventEmitter) {
        super(eventEmitter);
    }

    @Override
    public void execute(ExecutionParameters parameters) {
        this.getEventEmitter().emitRebound("Rebound for a reason!");
    }

}

Here is how to do with Java Exception:

package io.elastic.demo;

import io.elastic.api.Component;
import io.elastic.api.EventEmitter;
import io.elastic.api.ExecutionParameters;

public class ReboundingReasonExceptionComponent extends Component{

    public ReboundingReasonExceptionComponent(EventEmitter eventEmitter) {
        super(eventEmitter);
    }

    @Override
    public void execute(ExecutionParameters parameters) {
        this.getEventEmitter().emitRebound(new RuntimeException("Rebound"));
    }

}