package org.jboss.seam.security.externaltest.integration.openid.rp; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import javax.servlet.http.HttpServletResponse; import org.jboss.seam.security.external.api.ResponseHolder; import org.jboss.seam.security.external.dialogues.api.Dialogued; import org.jboss.seam.security.external.openid.api.OpenIdPrincipal; import org.jboss.seam.security.external.openid.api.OpenIdRelyingPartyApi; import org.jboss.seam.security.external.openid.api.OpenIdRequestedAttribute; import org.jboss.seam.security.external.spi.OpenIdRelyingPartySpi; public class OpenIdRpApplicationMock implements OpenIdRelyingPartySpi { @Inject private OpenIdRelyingPartyApi rpApi; @Dialogued public void login(String identifier, boolean fetchEmail, HttpServletResponse response) { if (fetchEmail) { OpenIdRequestedAttribute requestedAttribute = rpApi.createOpenIdRequestedAttribute("email", "http://axschema.org/contact/email", true, 1); List<OpenIdRequestedAttribute> requestedAttributes = new ArrayList<OpenIdRequestedAttribute>(); requestedAttributes.add(requestedAttribute); rpApi.login(identifier, requestedAttributes, response); } else { rpApi.login(identifier, null, response); } } public void loginFailed(String message, ResponseHolder responseHolder) { writeMessageToResponse("Login failed: " + message, responseHolder); } public void loginSucceeded(OpenIdPrincipal principal, ResponseHolder responseHolder) { if (principal.getAttributeValues() != null) { String email = (String) principal.getAttribute("email"); writeMessageToResponse("Login succeeded (" + principal.getIdentifier() + ", email " + email + ")", responseHolder); } else { writeMessageToResponse("Login succeeded (" + principal.getIdentifier() + ")", responseHolder); } } private void writeMessageToResponse(String message, ResponseHolder responseHolder) { try { responseHolder.getResponse().getWriter().print(message); } catch (IOException e) { throw new RuntimeException(e); } } }