VirtualHostConfiguration.java
001 /*
002  *
003  * Licensed to the Apache Software Foundation (ASF) under one
004  * or more contributor license agreements.  See the NOTICE file
005  * distributed with this work for additional information
006  * regarding copyright ownership.  The ASF licenses this file
007  * to you under the Apache License, Version 2.0 (the
008  * "License"); you may not use this file except in compliance
009  * with the License.  You may obtain a copy of the License at
010  
011  *   http://www.apache.org/licenses/LICENSE-2.0
012  
013  * Unless required by applicable law or agreed to in writing,
014  * software distributed under the License is distributed on an
015  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016  * KIND, either express or implied.  See the License for the
017  * specific language governing permissions and limitations
018  * under the License.
019  *
020  */
021 package org.apache.qpid.server.configuration;
022 
023 import java.util.HashMap;
024 import java.util.Iterator;
025 import java.util.List;
026 import java.util.Map;
027 
028 import org.apache.commons.configuration.CompositeConfiguration;
029 import org.apache.commons.configuration.Configuration;
030 import org.apache.commons.configuration.ConfigurationException;
031 import org.apache.qpid.server.registry.ApplicationRegistry;
032 import org.apache.qpid.server.store.MemoryMessageStore;
033 
034 public class VirtualHostConfiguration
035 {
036     private Configuration _config;
037     private String _name;
038     private Map<String, QueueConfiguration> _queues = new HashMap<String, QueueConfiguration>();
039     private Map<String, ExchangeConfiguration> _exchanges = new HashMap<String, ExchangeConfiguration>();
040 
041 
042     public VirtualHostConfiguration(String name, Configuration configthrows ConfigurationException
043     {
044         _config = config;
045         _name = name;
046 
047         Iterator i = _config.getList("queues.queue.name").iterator();
048 
049         while (i.hasNext())
050         {
051             String queueName = (Stringi.next();
052             CompositeConfiguration mungedConf = new CompositeConfiguration();
053             mungedConf.addConfiguration(_config.subset("queues.queue." + queueName));
054             mungedConf.addConfiguration(_config.subset("queues"));
055             _queues.put(queueName, new QueueConfiguration(queueName, mungedConf));
056         }
057 
058         i = _config.getList("exchanges.exchange.name").iterator();
059         int count = 0;
060         while (i.hasNext())
061         {
062             CompositeConfiguration mungedConf = new CompositeConfiguration();
063             mungedConf.addConfiguration(config.subset("exchanges.exchange(" + count++ + ")"));
064             mungedConf.addConfiguration(_config.subset("exchanges"));
065             String exchName = (Stringi.next();
066             _exchanges.put(exchName, new ExchangeConfiguration(exchName, mungedConf));
067         }
068     }
069 
070     public String getName()
071     {
072         return _name;
073     }
074 
075     public long getHousekeepingExpiredMessageCheckPeriod()
076     {
077         return _config.getLong("housekeeping.expiredMessageCheckPeriod", ApplicationRegistry.getInstance().getConfiguration().getHousekeepingExpiredMessageCheckPeriod());
078     }
079 
080     public String getAuthenticationDatabase()
081     {
082         return _config.getString("security.authentication.name");
083     }
084 
085     public List getCustomExchanges()
086     {
087         return _config.getList("custom-exchanges.class-name");
088     }
089 
090     public SecurityConfiguration getSecurityConfiguration()
091     {
092         return new SecurityConfiguration(_config.subset("security"));
093     }
094 
095     public Configuration getStoreConfiguration()
096     {
097         return _config.subset("store");
098     }
099 
100     public String getRoutingTableClass()
101     {
102         return _config.getString("routingtable.class");
103     }
104 
105     public String getTransactionLogClass()
106     {
107         return _config.getString("store.class", MemoryMessageStore.class.getName());
108     }
109 
110     public List getExchanges()
111     {
112         return _config.getList("exchanges.exchange.name");
113     }
114 
115     public ExchangeConfiguration getExchangeConfiguration(String exchangeName)
116     {
117         return _exchanges.get(exchangeName);
118     }
119 
120     public String[] getQueueNames()
121     {
122         return _queues.keySet().toArray(new String[_queues.size()]);
123     }
124 
125     public QueueConfiguration getQueueConfiguration(String queueName)
126     {
127         return _queues.get(queueName);
128     }
129 
130 }