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 */
017package org.apache.activemq.security;
018
019import java.util.Set;
020
021import org.apache.activemq.command.ActiveMQDestination;
022import 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 */
032public 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}