| /* | |
| * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved. | |
| * | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Public License v. 2.0, which is available at | |
| * http://www.eclipse.org/legal/epl-2.0. | |
| * | |
| * This Source Code may also be made available under the following Secondary | |
| * Licenses when the conditions for such availability set forth in the | |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, | |
| * version 2 with the GNU Classpath Exception, which is available at | |
| * https://www.gnu.org/software/classpath/license.html. | |
| * | |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 | |
| */ | |
| package org.glassfish.jacc.test.mr8; | |
| import java.io.*; | |
| import jakarta.servlet.*; | |
| import jakarta.servlet.http.*; | |
| import javax.naming.*; | |
| import jakarta.ejb.EJB; | |
| import jakarta.ejb.EJBs; | |
| import java.net.URLEncoder; | |
| import java.net.URLDecoder; | |
| import java.security.Principal; | |
| import jakarta.servlet.annotation.WebServlet; | |
| @WebServlet(name = "Servlet", urlPatterns = {"/servlet","/authuser","/anyauthuser","/star","/denyuncoveredpost"}) | |
| public class Servlet extends HttpServlet { | |
| @EJB(beanName = "HelloEJB", beanInterface = Hello.class) | |
| private Hello helloStateless; | |
| @EJB(beanName = "HelloStatefulEJB", beanInterface = HelloStateful.class) | |
| private HelloStateful helloStateful; | |
| public void init(ServletConfig config) throws ServletException { | |
| super.init(config); | |
| System.out.println("In jaccmr8::Servlet... init()"); | |
| } | |
| public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
| resp.setContentType("text/html"); | |
| PrintWriter out = resp.getWriter(); | |
| String mode = req.getParameter("mode"); | |
| if (mode == null) mode = "stateful"; | |
| mode = URLDecoder.decode(mode,"UTF-8"); | |
| String name = req.getParameter("name"); | |
| if (name == null) name = "NotDeclared"; | |
| name = URLDecoder.decode(name,"UTF-8"); | |
| // EJB information | |
| String callerPrincipal = "NONE"; | |
| boolean isInEJBRole = false; | |
| boolean isAnyAuthUserEJB = false; | |
| String invokeAnyAuthUser = "No"; | |
| String invokeAuthUser = "No"; | |
| if ("stateful".equals(mode)) { | |
| System.out.println("Invoking Stateful EJB"); | |
| callerPrincipal = helloStateful.hello(name); | |
| isAnyAuthUserEJB = helloStateful.inRole("**"); | |
| isInEJBRole = helloStateful.inRole(name); | |
| try { | |
| helloStateful.methodAnyAuthUser(); | |
| invokeAnyAuthUser = "Yes"; | |
| } | |
| catch (Exception exc) { | |
| System.out.println("FAILED invoke of methodAnyAuthUser()"); | |
| invokeAnyAuthUser = exc.toString(); | |
| } | |
| try { | |
| helloStateful.methodAuthUser(); | |
| invokeAuthUser = "Yes"; | |
| } | |
| catch (Exception exc) { | |
| System.out.println("FAILED invoke of methodAuthUser()"); | |
| invokeAuthUser = exc.toString(); | |
| } | |
| System.out.println("Successfully invoked Stateful EJB"); | |
| } else if ("stateless".equals(mode)) { | |
| System.out.println("Invoking Stateless EJB"); | |
| callerPrincipal = helloStateless.hello(name); | |
| isAnyAuthUserEJB = helloStateless.inRole("**"); | |
| isInEJBRole = helloStateless.inRole(name); | |
| try { | |
| helloStateless.methodAnyAuthUser(); | |
| invokeAnyAuthUser = "Yes"; | |
| } | |
| catch (Exception exc) { | |
| System.out.println("FAILED invoke of methodAnyAuthUser()"); | |
| invokeAnyAuthUser = exc.toString(); | |
| } | |
| try { | |
| helloStateless.methodAuthUser(); | |
| invokeAuthUser = "Yes"; | |
| } | |
| catch (Exception exc) { | |
| System.out.println("FAILED invoke of methodAuthUser()"); | |
| invokeAuthUser = exc.toString(); | |
| } | |
| System.out.println("Successfully invoked Stateless EJB"); | |
| } else { | |
| System.out.println("Mode: " + mode); | |
| } | |
| // Servlet information | |
| String principalName = "NONE"; | |
| String principalType = "UNKNOWN"; | |
| Principal p = req.getUserPrincipal(); | |
| if (p != null) { | |
| principalName = p.getName(); | |
| principalType = p.getClass().getName(); | |
| } | |
| String userPrincipal = principalName + " is " + principalType; | |
| boolean isAnyAuthUserWeb = req.isUserInRole("**"); | |
| boolean isInWebRole = req.isUserInRole(name); | |
| out.println("<HTML> <HEAD> <TITLE>Servlet Output</TITLE> </HEAD> <BODY>"); | |
| out.println("<CENTER>JACC MR8 Servlet</CENTER> <p> "); | |
| out.println(" Request URL: " + req.getRequestURL() + "<br>"); | |
| out.println(" HTTP Method: " + req.getMethod() + "<br>"); | |
| out.println("Context Path: " + req.getContextPath() + "<br>"); | |
| out.println("Servlet Path: " + req.getServletPath() + "<br>"); | |
| out.println("<br> <CENTER>Results</CENTER> <p> "); | |
| out.println("EJB Caller Principal: " + callerPrincipal + "<br>"); | |
| out.println("EJB isCallerInRole: " + isInEJBRole + "<br>"); | |
| out.println("EJB isUserInAnyAuthUserRole: " + isAnyAuthUserEJB + "<br>"); | |
| out.println("EJB Invoke AnyAuthUser: " + invokeAnyAuthUser + "<br>"); | |
| out.println("EJB Invoke AuthUser: " + invokeAuthUser + "<br>"); | |
| out.println("WEB User Principal: " + userPrincipal + "<br>"); | |
| out.println("WEB isUserInRole: " + isInWebRole + "<br>"); | |
| out.println("WEB isUserInAnyAuthUserRole: " + isAnyAuthUserWeb + "<br>"); | |
| out.println("</BODY> </HTML> "); | |
| } | |
| public void destroy() { | |
| System.out.println("In jaccmr8::Servlet destroy"); | |
| } | |
| } |