Package org.jboss.seam.test

Source Code of org.jboss.seam.test.AbstractScenario

package org.jboss.seam.test;

import javax.el.ELContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import com.steeplesoft.jsf.facestester.FacesTester;
import org.jboss.webbeans.context.RequestContext;
import org.jboss.webbeans.context.SessionContext;
import org.jboss.webbeans.context.api.BeanStore;
import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
import org.jboss.webbeans.environment.servlet.Listener;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;

/**
* A base class for scenarios that execute JSF pages
* in a JCDI environment.
* <p/>
* TODO move me to a Seam module (perhaps the test module)
*
* @author Dan Allen
*/
public class AbstractScenario {
    protected FacesTester tester;

    protected Listener wbListener;

    @AfterClass(alwaysRun = true)
    public void afterClass() throws Exception {
        ServletContext sc = (ServletContext) tester.getFacesContext().getExternalContext().getContext();
        wbListener.contextDestroyed(new ServletContextEvent(sc));
    }

    @AfterMethod(alwaysRun = true)
    public void afterMethod() {
        SessionContext.instance().destroy();
        SessionContext.instance().setActive(false);
        RequestContext.instance().destroy();
        RequestContext.instance().setActive(false);
    }

    @BeforeClass
    public void beforeClass() throws Exception {
        tester = FacesTesterHolder.instance();
        ServletContext sc = (ServletContext) tester.getFacesContext().getExternalContext().getContext();
        wbListener = new Listener();
        wbListener.contextInitialized(new ServletContextEvent(sc));
    }

    @BeforeMethod
    public void beforeMethod() {
        BeanStore reqBS = new ConcurrentHashMapBeanStore();
        RequestContext.instance().setBeanStore(reqBS);
        RequestContext.instance().setActive(true);
        BeanStore sessBS = new ConcurrentHashMapBeanStore();
        SessionContext.instance().setBeanStore(sessBS);
        SessionContext.instance().setActive(true);
    }

    protected <T> T getValue(String expression, Class<T> expectedClass) {
        if (!expression.startsWith("#{")) {
            expression = "#{" + expression + "}";
        }
        FacesContext context = FacesContext.getCurrentInstance();
        ELContext elContext = context.getELContext();
        return (T) context.getApplication().getExpressionFactory().createValueExpression(elContext, expression, expectedClass).getValue(elContext);
    }
}
TOP

Related Classes of org.jboss.seam.test.AbstractScenario

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.