001: /*
002: * JOSSO: Java Open Single Sign-On
003: *
004: * Copyright 2004-2008, Atricore, Inc.
005: *
006: * This is free software; you can redistribute it and/or modify it
007: * under the terms of the GNU Lesser General Public License as
008: * published by the Free Software Foundation; either version 2.1 of
009: * the License, or (at your option) any later version.
010: *
011: * This software is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this software; if not, write to the Free
018: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
019: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
020: */
021:
022: package org.josso.samples.ejb;
023:
024: import org.apache.commons.logging.Log;
025: import org.apache.commons.logging.LogFactory;
026:
027: import javax.ejb.CreateException;
028: import javax.ejb.SessionBean;
029: import javax.ejb.SessionContext;
030: import java.security.Principal;
031:
032: /**
033: * EJB class of a Sample Partner Application EJB used for testing user
034: * identity propagation from the web to the business tier.
035: *
036: * @author <a href="mailto:gbrigand@josso.org">Gianluca Brigandi</a>
037: * @version CVS $Id: PartnerComponentEJB.java 508 2008-02-18 13:32:29Z sgonzalez $
038: */
039:
040: public class PartnerComponentEJB implements SessionBean {
041:
042: private static final Log logger = LogFactory
043: .getLog(PartnerComponentEJB.class);
044:
045: private SessionContext sessionContext;
046:
047: // ----------------------------------------------------- SessionBean Methods
048: public void ejbCreate() throws CreateException {
049: logger.debug("ejbCreate() called");
050: }
051:
052: public void ejbActivate() {
053: logger.debug("ejbActivate() called");
054: }
055:
056: public void ejbPassivate() {
057: logger.debug("ejbPassivate() called");
058: }
059:
060: public void ejbRemove() {
061: logger.debug("ejbRemove() called");
062: }
063:
064: public void setSessionContext(SessionContext context) {
065: sessionContext = context;
066: }
067:
068: // ----------------------------------------------------- Component Methods
069:
070: /**
071: * Sample Partner Application Component that dumps the security
072: * context associated with the ejb method invocation.
073: *
074: * @param arg sample arg
075: *
076: * @throws java.rmi.RemoteException
077: */
078: public String echo(String arg) throws java.rmi.RemoteException {
079: try {
080:
081: logger.debug("echo, arg=" + arg);
082: Principal p = sessionContext.getCallerPrincipal();
083: logger.debug("echo, callerPrincipal=" + p);
084: boolean isCaller = sessionContext.isCallerInRole("role1");
085: logger.debug("echo, isCallerInRole('role1')=" + isCaller);
086: return arg;
087:
088: } catch (Exception e) {
089: logger.error(e, e);
090:
091: return e.getMessage();
092: }
093: }
094:
095: public String whoAmI() throws java.rmi.RemoteException {
096: try {
097:
098: Principal p = sessionContext.getCallerPrincipal();
099: boolean isRole1 = sessionContext.isCallerInRole("role1");
100:
101: return "You're " + p.getName() + " and you do"
102: + (isRole1 ? "" : " not") + " have role1";
103:
104: } catch (Exception e) {
105: logger.error(e, e);
106:
107: return e.getMessage();
108: }
109: }
110:
111: /**
112: * Dummy ejb operation.
113: *
114: * @throws java.rmi.RemoteException
115: */
116: public void noop() throws java.rmi.RemoteException {
117: logger.debug("noop");
118: }
119: }
|