src/main/java/org/intellimate/izou/sdk/output/OutputPluginArgument.java
@Override
    public void run() {
        while (!stop) {
            EventModel event;
            try {
                event = blockingQueueHandling();  //gets the new Event if one was added to the blockingQueue
            } catch (InterruptedException e) {
                getContext().getLogger().warn(e);
                continue;
            }

            List<CompletableFuture<X>> outputExtensions = getContext().getOutput()
                    .generateAllOutputExtensions(this, getArgument(), event);

            try {
                outputExtensions = timeOut(outputExtensions, getTimeoutLimit());
            } catch (InterruptedException e) {
                getContext().getLogger().warn(e);
            }

            handleFutures(outputExtensions, event);

            //notifies output-manager when done processing
            isDone(event);
        }
    }
@Override
    public void run() {
        while (!stop) {
            EventModel event;
            try {
                event = blockingQueueHandling();  //gets the new Event if one was added to the blockingQueue
            } catch (InterruptedException e) {
                getContext().getLogger().warn(e);
                continue;
            }

            List<CompletableFuture<X>> outputExtensions = getContext().getOutput()
                    .generateAllOutputExtensions(this, getArgument(), event);

            try {
                outputExtensions = timeOut(outputExtensions, getTimeoutLimit());
            } catch (InterruptedException e) {
                getContext().getLogger().warn(e);
            }

            handleFutures(outputExtensions, event);

            //notifies output-manager when done processing
            isDone(event);
        }
    }
@ Override public void run ( ) { while ( ! stop ) { EventModel event ; try { event = blockingQueueHandling ( ) ; //gets the new Event if one was added to the blockingQueue } catch ( InterruptedException e ) { getContext ( ) . getLogger ( ) . warn ( e ) ; continue ; } List < CompletableFuture < X > > outputExtensions = getContext ( ) . getOutput ( ) . generateAllOutputExtensions ( this , getArgument ( ) , event ) ; try { outputExtensions = timeOut ( outputExtensions , getTimeoutLimit ( ) ) ; } catch ( InterruptedException e ) { getContext ( ) . getLogger ( ) . warn ( e ) ; } handleFutures ( outputExtensions , event ) ; //notifies output-manager when done processing isDone ( event ) ; } }
main method for outputPlugin, runs the data-conversion and output-renderer

it will instruct the outputManager to let the outputExtensions generate the data. Wait for the time specified
in getTimeoutLimit() (standard is 1000 milliseconds) abd the call renderFinalOutput() with the resulting data.
main method for outputPlugin runs the data - conversion and output - renderer