001    /**
002     *
003     * Copyright 2003-2004 The Apache Software Foundation
004     *
005     *  Licensed under the Apache License, Version 2.0 (the "License");
006     *  you may not use this file except in compliance with the License.
007     *  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    package org.apache.geronimo.security.jaas;
018    
019    import java.util.Properties;
020    
021    import org.apache.geronimo.gbean.GBeanInfo;
022    import org.apache.geronimo.gbean.GBeanInfoBuilder;
023    import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
024    
025    
026    /**
027     * A GBean that wraps a LoginModule, plus options to configure the LoginModule.
028     * If you want to deploy the same LoginModule with different options, you need
029     * more than one of these GBeans.  But if you want two security realms to refer
030     * to exactly the same login module configuration, you can have both realms
031     * refer to a single login module GBean.
032     *
033     * @version $Rev: 406019 $ $Date: 2006-05-12 23:08:10 -0700 (Fri, 12 May 2006) $
034     */
035    public class LoginModuleGBean implements LoginModuleSettings {
036        private String loginDomainName;
037        private String loginModuleClass;
038        private Properties options;
039        private final String objectName;
040        private boolean serverSide;
041        private boolean wrapPrincipals;
042        private final ClassLoader classLoader;
043    
044        public LoginModuleGBean(String loginModuleClass, String objectName, boolean serverSide, boolean wrapPrincipals, ClassLoader classLoader) {
045            this.loginModuleClass = loginModuleClass;
046            this.objectName = objectName;
047            this.serverSide = serverSide;
048            this.wrapPrincipals = wrapPrincipals;
049            this.classLoader = classLoader;
050        }
051    
052        public String getLoginDomainName() {
053            return loginDomainName;
054        }
055    
056        public void setLoginDomainName(String loginDomainName) {
057            this.loginDomainName = loginDomainName;
058        }
059    
060        public Properties getOptions() {
061            return options;
062        }
063    
064        public void setOptions(Properties options) {
065            this.options = options;
066        }
067    
068        public String getLoginModuleClass() {
069            return loginModuleClass;
070        }
071    
072        public void setLoginModuleClass(String loginModuleClass) {
073            this.loginModuleClass = loginModuleClass;
074        }
075    
076        public String getObjectName() {
077            return objectName;
078        }
079    
080        public boolean isServerSide() {
081            return serverSide;
082        }
083    
084        public void setServerSide(boolean serverSide) {
085            this.serverSide = serverSide;
086        }
087    
088        public boolean isWrapPrincipals() {
089            return wrapPrincipals;
090        }
091    
092        public void setWrapPrincipals(boolean wrapPrincipals) {
093            this.wrapPrincipals = wrapPrincipals;
094        }
095    
096        public ClassLoader getClassLoader() {
097            return classLoader;
098        }
099    
100        public static final GBeanInfo GBEAN_INFO;
101    
102        static {
103            GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(LoginModuleGBean.class, NameFactory.LOGIN_MODULE);
104            infoFactory.addAttribute("classLoader", ClassLoader.class, false);
105            infoFactory.addInterface(LoginModuleSettings.class, new String[] {"options", "loginModuleClass", "serverSide", "loginDomainName", "wrapPrincipals"},
106                                             new String[] {"options", "loginModuleClass", "serverSide", "wrapPrincipals"} );
107            infoFactory.setConstructor(new String[]{"loginModuleClass", "objectName", "serverSide", "wrapPrincipals", "classLoader"});
108    
109            GBEAN_INFO = infoFactory.getBeanInfo();
110        }
111    
112        public static GBeanInfo getGBeanInfo() {
113            return GBEAN_INFO;
114        }
115    }