blob: 305e68c924ca39a8e0019289132c457cd8f446f5 [file] [log] [blame]
/*
* 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");
}
}