Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
package org.javaee7.jaspic.invoke.bean;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;

@Named
@RequestScoped
public class CDIBean {

@Inject
private HttpServletRequest request;

public String getText() {
return "Called from CDI";
}

public void setTextViaInjectedRequest() {
request.setAttribute("text", "Called from CDI via injected request");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();

if ("cdi".equals(request.getParameter("tech"))) {
callCDIBean(response, "validateRequest");
callCDIBean(request, response, "validateRequest");
} else if ("ejb".equals(request.getParameter("tech"))) {
callEJBBean(response, "validateRequest");
}
Expand Down Expand Up @@ -84,7 +84,7 @@ public AuthStatus secureResponse(MessageInfo messageInfo, Subject serviceSubject
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();

if ("cdi".equals(request.getParameter("tech"))) {
callCDIBean(response, "secureResponse");
callCDIBean(request, response, "secureResponse");
} else if ("ejb".equals(request.getParameter("tech"))) {
callEJBBean(response, "secureResponse");
}
Expand All @@ -99,16 +99,21 @@ public void cleanSubject(MessageInfo messageInfo, Subject subject) throws AuthEx
HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();

if ("cdi".equals(request.getParameter("tech"))) {
callCDIBean(response, "cleanSubject");
callCDIBean(request, response, "cleanSubject");
} else if ("ejb".equals(request.getParameter("tech"))) {
callEJBBean(response, "cleanSubject");
}
}

private void callCDIBean(HttpServletResponse response, String phase) {
private void callCDIBean(HttpServletRequest request, HttpServletResponse response, String phase) {
try {
CDIBean cdiBean = CDI.current().select(CDIBean.class).get();
response.getWriter().write(phase + ": " + cdiBean.getText());
response.getWriter().write(phase + ": " + cdiBean.getText() + "\n");

cdiBean.setTextViaInjectedRequest();

response.getWriter().write(phase + ": " + request.getAttribute("text")+ "\n");

} catch (Exception e) {
logger.log(SEVERE, "", e);
}
Expand All @@ -117,7 +122,7 @@ private void callCDIBean(HttpServletResponse response, String phase) {
private void callEJBBean(HttpServletResponse response, String phase) {
try {
EJBBean ejbBean = (EJBBean) new InitialContext().lookup("java:module/EJBBean");
response.getWriter().write(phase + ": " + ejbBean.getText());
response.getWriter().write(phase + ": " + ejbBean.getText() + "\n");
} catch (Exception e) {
logger.log(SEVERE, "", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,35 @@ public void publicInvokeCDIFromSecureResponse() {
response.contains("secureResponse: Called from CDI")
);
}

@Test
public void publicInvokeCDIUseInjectedRequestFromValidateRequest() {
String response = getFromServerPath("public/servlet?tech=cdi");

assertTrue(
"Response did not contain output from CDI bean using an inject request for validateRequest for public resource. (note: this is not required by the spec)",
response.contains("validateRequest: Called from CDI via injected request")
);
}

@Test
public void publicInvokeCDIUseInjectedRequestFromCleanSubject() {
String response = getFromServerPath("public/servlet?tech=cdi");

assertTrue(
"Response did not contain output from CDI bean using an inject request for cleanSubject for public resource. (note: this is not required by the spec)",
response.contains("cleanSubject: Called from CDI via injected request")
);
}

@Test
public void publicInvokeCDIUseInjectedRequestFromSecureResponse() {
String response = getFromServerPath("public/servlet?tech=cdi");

assertTrue(
"Response did not contain output from CDI bean using an inject request for secureResponse for public resource. (note: this is not required by the spec)",
response.contains("secureResponse: Called from CDI via injected request")
);
}

}