package example; import javax.inject.Inject; import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class GetServlet extends HttpServlet { // service pattern private @Inject MyService _service; // plugin/extension pattern private @Inject @Any Instance<MyResource> _resources; // startup pattern private @Inject StartupResourceBean _startupResource; @Override public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html; charset=utf-8"); PrintWriter out = response.getWriter(); writeHeader(out); // service pattern out.println("<h2>CanDI Service Pattern</h2>"); out.println("<table class='deftable'>"); out.println("<tr><th>Binding<th>Value"); out.println("<tr><td>@Inject MyService<td>" + _service); out.println("</table>"); // plugin/extension pattern out.println("<h2>CanDI Plugin/Extension Pattern</h2>"); out.println("<ol>"); for (MyResource resource : _resources) { out.println("<li>" + resource); } out.println("</ol>"); // startup pattern out.println("<h2>CanDI Startup Pattern</h2>"); out.println("<table class='deftable'>"); out.println("<tr><th>Binding<th>Value"); out.println("<tr><td>@Inject StartupResourceBean<td>" + _startupResource); out.println("</table>"); writeFooter(out); } private void writeHeader(PrintWriter out) throws IOException { out.println("<title>CanDI Pattern Tutorial: GetServlet</title>"); out.println("<head><link rel='STYLESHEET' type='text/css' href='../../css/default.css'/></head>"); out.println("<div class='breadcrumb'>"); out.println(" <a href='../../'>docs</a>"); out.println(" / <a href='../'>examples</a>"); out.println(" / <a href='index.xtp'>CanDI pattern tutorial</a>"); out.println("</div>"); out.println("<h1>CanDI Pattern Tutorial: GetServlet</h1>"); out.println("<p>GetServlet retrieves the service pattern, demonstrating"); out.println("that the service is shared between all injecting classes"); out.println("<h2>Demo Links</h2>"); out.println("<ul>"); out.println("<li><a href='set?color=blue'>SetServlet blue (/set?color=blue)</a></li>"); out.println("<li><a href='set?color=red'>SetServlet red (/set?color=red)</a></li>"); out.println("<li><a href='get'>GetServlet (/get)</a></li>"); out.println("<li><a href='index.jsp'>index.jsp</a></li>"); out.println("<li><a href='index.php'>index.php</a></li>"); out.println("<li><a href='index.xtp'>CanDI pattern tutorial</a></li>"); out.println("</ul>"); } private void writeFooter(PrintWriter out) throws IOException { out.println("<h2>Demo Architecture</h2>"); out.println("<img src='../../images/ioc-binding.png'>"); out.println("<h2>Code</h2>"); out.println("<div class='example'><pre>"); out.println("public class GetServlet extends HttpServlet {"); out.println(" // service pattern"); out.println(" private @Inject MyService _service;"); out.println(); out.println(" // plugin/extension pattern"); out.println(" private @Any Instance<MyResource> _resources;"); out.println(); out.println(" // startup pattern"); out.println(" private @Inject StartupResourceBean _startupResource;"); out.println(); out.println(" ..."); out.println("}"); out.println("</pre></div>"); } }