001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  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.j2ee.deployment;
018    
019    import java.io.File;
020    import java.util.Collection;
021    import java.util.HashMap;
022    import java.util.Map;
023    
024    import org.apache.geronimo.common.DeploymentException;
025    import org.apache.geronimo.deployment.DeploymentContext;
026    import org.apache.geronimo.gbean.AbstractName;
027    import org.apache.geronimo.gbean.AbstractNameQuery;
028    import org.apache.geronimo.kernel.Naming;
029    import org.apache.geronimo.kernel.config.ConfigurationManager;
030    import org.apache.geronimo.kernel.config.ConfigurationModuleType;
031    import org.apache.geronimo.kernel.repository.Environment;
032    
033    /**
034     * @version $Rev:386276 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
035     */
036    public class EARContext extends DeploymentContext {
037    
038        private final AbstractNameQuery serverName;
039        private final AbstractNameQuery transactionManagerObjectName;
040        private final AbstractNameQuery connectionTrackerObjectName;
041        private final AbstractNameQuery transactedTimerName;
042        private final AbstractNameQuery nonTransactedTimerName;
043        private final AbstractNameQuery corbaGBeanObjectName;
044    
045        private final Map contextIDToPermissionsMap = new HashMap();
046        private AbstractName jaccManagerName;
047        private Object securityConfiguration;
048    
049        private final Map  messageDestinations;
050    
051        private final Map<Object,Object> generalData = new HashMap<Object,Object>();
052    
053        public EARContext(File baseDir,
054                File inPlaceConfigurationDir,
055                Environment environment,
056                ConfigurationModuleType moduleType,
057                Naming naming,
058                ConfigurationManager configurationManager, 
059                Collection repositories,
060                AbstractNameQuery serverName,
061                AbstractName baseName,
062                AbstractNameQuery transactionManagerObjectName,
063                AbstractNameQuery connectionTrackerObjectName,
064                AbstractNameQuery transactedTimerName,
065                AbstractNameQuery nonTransactedTimerName,
066                AbstractNameQuery corbaGBeanObjectName
067        ) throws DeploymentException {
068            super(baseDir, inPlaceConfigurationDir, environment, baseName, moduleType, naming, configurationManager, repositories);
069    
070            this.serverName = serverName;
071            this.transactionManagerObjectName = transactionManagerObjectName;
072            this.connectionTrackerObjectName = connectionTrackerObjectName;
073            this.transactedTimerName = transactedTimerName;
074            this.nonTransactedTimerName = nonTransactedTimerName;
075            this.corbaGBeanObjectName = corbaGBeanObjectName;
076            this.messageDestinations = new HashMap();
077        }
078    
079        public EARContext(File baseDir,
080                File inPlaceConfigurationDir,
081                Environment environment,
082                ConfigurationModuleType moduleType,
083                Naming naming,
084                ConfigurationManager configurationManager,
085                AbstractNameQuery serverName,
086                AbstractName baseName,
087                AbstractNameQuery transactionManagerObjectName,
088                AbstractNameQuery connectionTrackerObjectName,
089                AbstractNameQuery transactedTimerName,
090                AbstractNameQuery nonTransactedTimerName,
091                AbstractNameQuery corbaGBeanObjectName,
092                Map messageDestinations) throws DeploymentException {
093            super(baseDir, inPlaceConfigurationDir, environment, baseName, moduleType, naming, configurationManager);
094    
095            this.serverName = serverName;
096    
097            this.transactionManagerObjectName = transactionManagerObjectName;
098            this.connectionTrackerObjectName = connectionTrackerObjectName;
099            this.transactedTimerName = transactedTimerName;
100            this.nonTransactedTimerName = nonTransactedTimerName;
101            this.corbaGBeanObjectName = corbaGBeanObjectName;
102            this.messageDestinations = messageDestinations;
103        }
104    
105        public EARContext(File baseDir, File inPlaceConfigurationDir, Environment environment, ConfigurationModuleType moduleType, AbstractName baseName, EARContext parent) throws DeploymentException {
106            super(baseDir, inPlaceConfigurationDir, environment, baseName, moduleType, parent.getNaming(), parent.getConfigurationManager());
107            this.serverName = parent.getServerName();
108    
109            this.transactionManagerObjectName = parent.getTransactionManagerName();
110            this.connectionTrackerObjectName = parent.getConnectionTrackerName();
111            this.transactedTimerName = parent.getTransactedTimerName();
112            this.nonTransactedTimerName = parent.getNonTransactedTimerName();
113            this.corbaGBeanObjectName = parent.getCORBAGBeanName();
114            this.messageDestinations  = new HashMap();
115        }
116    
117        public AbstractNameQuery getServerName() {
118            return serverName;
119        }
120    
121        public AbstractNameQuery getTransactionManagerName() {
122            return transactionManagerObjectName;
123        }
124    
125        public AbstractNameQuery getConnectionTrackerName() {
126            return connectionTrackerObjectName;
127        }
128    
129        public AbstractNameQuery getTransactedTimerName() {
130            return transactedTimerName;
131        }
132    
133        public AbstractNameQuery getNonTransactedTimerName() {
134            return nonTransactedTimerName;
135        }
136    
137        public AbstractNameQuery getCORBAGBeanName() {
138            return corbaGBeanObjectName;
139        }
140    
141        public Map getContextIDToPermissionsMap() {
142            return contextIDToPermissionsMap;
143        }
144    
145        public void addSecurityContext(String contextID, Object componentPermissions) throws DeploymentException {
146            Object old = contextIDToPermissionsMap.put(contextID, componentPermissions);
147            if (old != null) {
148                throw new DeploymentException("Duplicate contextID registered! " + contextID);
149            }
150        }
151    
152        public void setJaccManagerName(AbstractName jaccManagerName) {
153            this.jaccManagerName = jaccManagerName;
154        }
155    
156        public AbstractName getJaccManagerName() {
157            return jaccManagerName;
158        }
159    
160        public void setSecurityConfiguration(Object securityConfiguration) throws DeploymentException {
161            if (this.securityConfiguration != null) {
162                throw new DeploymentException("Only one security configuration allowed per application");
163            }
164            this.securityConfiguration = securityConfiguration;
165        }
166    
167        public Object getSecurityConfiguration() {
168            return securityConfiguration;
169        }
170    
171        public void registerMessageDestionations(String moduleName, Map nameMap) throws DeploymentException {
172            messageDestinations.put(moduleName, nameMap);
173        }
174    
175        public Map getMessageDestinations() {
176            return messageDestinations;
177        }
178    
179        public Map<Object,Object> getGeneralData() {
180            return generalData;
181        }
182    }