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.activemq.security;
018    
019    import java.util.Set;
020    
021    import org.apache.activemq.command.ActiveMQDestination;
022    import org.apache.activemq.filter.DestinationMap;
023    
024    /**
025     * An AuthorizationMap which is configured with individual DestinationMaps for
026     * each operation.
027     * 
028     * @org.apache.xbean.XBean
029     * 
030     * 
031     */
032    public class SimpleAuthorizationMap implements AuthorizationMap {
033    
034        private DestinationMap writeACLs;
035        private DestinationMap readACLs;
036        private DestinationMap adminACLs;
037    
038        private TempDestinationAuthorizationEntry tempDestinationAuthorizationEntry;
039    
040        public SimpleAuthorizationMap() {
041        }
042    
043        public SimpleAuthorizationMap(DestinationMap writeACLs, DestinationMap readACLs, DestinationMap adminACLs) {
044            this.writeACLs = writeACLs;
045            this.readACLs = readACLs;
046            this.adminACLs = adminACLs;
047        }
048    
049        /*
050         * Need to think how to retrieve the ACLs for temporary destinations since
051         * they are not map to a specific destination. For now we'll just retrieve
052         * it from a TempDestinationAuthorizationEntry same way as the
053         * DefaultAuthorizationMap. The ACLs retrieved here will be map to all temp
054         * destinations
055         */
056    
057        public void setTempDestinationAuthorizationEntry(
058                                                         TempDestinationAuthorizationEntry tempDestinationAuthorizationEntry) {
059            this.tempDestinationAuthorizationEntry = tempDestinationAuthorizationEntry;
060        }
061    
062        public TempDestinationAuthorizationEntry getTempDestinationAuthorizationEntry() {
063            return this.tempDestinationAuthorizationEntry;
064        }
065    
066        public Set<Object> getTempDestinationAdminACLs() {
067            if (tempDestinationAuthorizationEntry != null) {
068                return tempDestinationAuthorizationEntry.getAdminACLs();
069            } else {
070                return null;
071            }
072        }
073    
074        public Set<Object> getTempDestinationReadACLs() {
075            if (tempDestinationAuthorizationEntry != null) {
076                return tempDestinationAuthorizationEntry.getReadACLs();
077            } else {
078                return null;
079            }
080        }
081    
082        public Set<Object> getTempDestinationWriteACLs() {
083            if (tempDestinationAuthorizationEntry != null) {
084                return tempDestinationAuthorizationEntry.getWriteACLs();
085            } else {
086                return null;
087            }
088        }
089    
090        @SuppressWarnings("unchecked")
091        public Set<Object> getAdminACLs(ActiveMQDestination destination) {
092            return adminACLs.get(destination);
093        }
094    
095        @SuppressWarnings("unchecked")
096        public Set<Object> getReadACLs(ActiveMQDestination destination) {
097            return readACLs.get(destination);
098        }
099    
100        @SuppressWarnings("unchecked")
101        public Set<Object> getWriteACLs(ActiveMQDestination destination) {
102            return writeACLs.get(destination);
103        }
104    
105        public DestinationMap getAdminACLs() {
106            return adminACLs;
107        }
108    
109        public void setAdminACLs(DestinationMap adminACLs) {
110            this.adminACLs = adminACLs;
111        }
112    
113        public DestinationMap getReadACLs() {
114            return readACLs;
115        }
116    
117        public void setReadACLs(DestinationMap readACLs) {
118            this.readACLs = readACLs;
119        }
120    
121        public DestinationMap getWriteACLs() {
122            return writeACLs;
123        }
124    
125        public void setWriteACLs(DestinationMap writeACLs) {
126            this.writeACLs = writeACLs;
127        }
128    
129    }