org.apache.commons.javaflow.examples.cdi.owb.OWBApplication.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.commons.javaflow.examples.cdi.owb.OWBApplication.java

Source

package org.apache.commons.javaflow.examples.cdi.owb;

import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;

import org.apache.commons.javaflow.api.Continuation;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.spi.ContainerLifecycle;

public class OWBApplication {

    @Inject
    Execution execution;

    public void run() {
        int i = 0;
        for (Continuation cc = Continuation.startWith(execution); null != cc; cc = cc.resume(i += 100)) {
            System.out.println("SUSPENDED " + cc.value());
        }

        System.out.println("===");
    }

    public static void main(final String[] argv) throws Exception {
        boot(null);
        try {
            BeanManager beanManager = lifecycle.getBeanManager();
            Bean<?> bean = beanManager.getBeans(OWBApplication.class).iterator().next();
            OWBApplication app = (OWBApplication) lifecycle.getBeanManager().getReference(bean,
                    OWBApplication.class, beanManager.createCreationalContext(bean));
            app.run();
        } finally {
            shutdown(null);
        }
    }

    private static ContainerLifecycle lifecycle = null;

    private static void boot(Object startupObject) throws Exception {
        lifecycle = WebBeansContext.getInstance().getService(ContainerLifecycle.class);
        lifecycle.startApplication(startupObject);
    }

    private static void shutdown(Object endObject) throws Exception {
        lifecycle.stopApplication(endObject);
    }
}