package org.jboss.weld.tests.scope; import org.jboss.weld.test.util.Utils; import org.junit.Assert; import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.util.AnnotationLiteral; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.annotation.Annotation; @WebServlet("/") public class RemoteClient extends HttpServlet { private static Annotation USELESS_LITERAL = new AnnotationLiteral<Useless>() { }; private static Annotation SPECIAL_LITERAL = new AnnotationLiteral<Special>() { }; @Inject BeanManager beanManager; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String pathInfo = req.getPathInfo(); if (pathInfo == null) return; try { Bean<Temp> specialTempBean = Utils.getBean(beanManager, Temp.class, SPECIAL_LITERAL); Bean<Temp> uselessTempBean = Utils.getBean(beanManager, Temp.class, USELESS_LITERAL); TempConsumer tempConsumer = Utils.getReference(beanManager, TempConsumer.class); if (pathInfo.equals("/request1")) { Assert.assertEquals(RequestScoped.class, specialTempBean.getScope()); Assert.assertEquals(RequestScoped.class, uselessTempBean.getScope()); Assert.assertEquals(10, Utils.getReference(beanManager, specialTempBean).getNumber()); Assert.assertEquals(11, Utils.getReference(beanManager, uselessTempBean).getNumber()); tempConsumer.getSpecialTemp().setNumber(101); tempConsumer.getUselessTemp().setNumber(102); Assert.assertEquals(101, tempConsumer.getSpecialTemp().getNumber()); Assert.assertEquals(102, tempConsumer.getUselessTemp().getNumber()); Assert.assertEquals(101, Utils.getReference(beanManager, specialTempBean).getNumber()); Assert.assertEquals(102, Utils.getReference(beanManager, uselessTempBean).getNumber()); return; } else if (pathInfo.equals("/request2")) { Assert.assertEquals(10, tempConsumer.getSpecialTemp().getNumber()); Assert.assertEquals(102, tempConsumer.getUselessTemp().getNumber()); Assert.assertEquals(10, Utils.getReference(beanManager, specialTempBean).getNumber()); Assert.assertEquals(102, Utils.getReference(beanManager, uselessTempBean).getNumber()); return; } } catch (AssertionError e) { resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); } resp.sendError(HttpServletResponse.SC_NOT_FOUND); } }