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.broker.region.policy;
018
019import java.util.List;
020
021import org.apache.activemq.command.ActiveMQDestination;
022import org.apache.activemq.filter.DestinationMap;
023
024/**
025 * Represents a destination based configuration of policies so that individual
026 * destinations or wildcard hierarchies of destinations can be configured using
027 * different policies.
028 * 
029 * @org.apache.xbean.XBean
030 * 
031 * 
032 */
033public class PolicyMap extends DestinationMap {
034
035    private PolicyEntry defaultEntry;
036
037    public PolicyEntry getEntryFor(ActiveMQDestination destination) {
038        PolicyEntry answer = (PolicyEntry) chooseValue(destination);
039        if (answer == null) {
040            answer = getDefaultEntry();
041        }
042        return answer;
043    }
044
045    /**
046     * Sets the individual entries on the policy map
047     * 
048     * @org.apache.xbean.ElementType class="org.apache.activemq.broker.region.policy.PolicyEntry"
049     */
050    public void setPolicyEntries(List entries) {
051        super.setEntries(entries);
052    }
053
054    public PolicyEntry getDefaultEntry() {
055        return defaultEntry;
056    }
057
058    public void setDefaultEntry(PolicyEntry defaultEntry) {
059        this.defaultEntry = defaultEntry;
060    }
061
062    protected Class getEntryClass() {
063        return PolicyEntry.class;
064    }
065}