package org.testfun.jee; import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.SessionContext; import javax.ejb.Stateless; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; @Stateless public class EjbStateless implements EjbLocal { @EJB private MockEjbLocal mockEjb; @EJB private EjbSingleton ejbSingleton; @EJB private NoInterfaceEjb noInterfaceEjb; @Resource private SessionContext sessionContext; @Override public String returnFromNoInterfaceEjb() { return noInterfaceEjb.returnSomething(); } @Override public String mockAnswer(String question) { return mockEjb.mockAnswer(question); } @Override public String realAnswer(String question) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); return engine.eval(question).toString(); } @Override public void nonAppException() { throw new IllegalStateException("Should rollback non application exceptions"); } @Override public void appException() { throw new AppException(); } @Override public void appExceptionWithRollback() { throw new RollbackAppException(); } @Override public String askSingleton() { return ejbSingleton.whoAmI(); } @Override public String getCurrentUser() { return sessionContext.getCallerPrincipal().getName(); } }