blob: df6f03f0f6168a55a6bc71e4621fb89cd67a509b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package flex.messaging.config;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
*/
public class ClientConfiguration implements ServicesConfiguration
{
protected final Map channelSettings;
protected final List defaultChannels;
protected final List serviceSettings;
protected LoggingSettings loggingSettings;
protected Map configPaths;
protected final Map clusterSettings;
protected FlexClientSettings flexClientSettings;
public ClientConfiguration()
{
channelSettings = new HashMap();
defaultChannels = new ArrayList(4);
clusterSettings = new HashMap();
serviceSettings = new ArrayList();
configPaths = new HashMap();
}
/*
* CHANNEL CONFIGURATION
*/
public void addChannelSettings(String id, ChannelSettings settings)
{
channelSettings.put(id, settings);
}
public ChannelSettings getChannelSettings(String ref)
{
return (ChannelSettings)channelSettings.get(ref);
}
public Map getAllChannelSettings()
{
return channelSettings;
}
/*
* DEFAULT CHANNELS CONFIGURATION
*/
public void addDefaultChannel(String id)
{
defaultChannels.add(id);
}
public List getDefaultChannels()
{
return defaultChannels;
}
/*
* SERVICE CONFIGURATION
*/
public void addServiceSettings(ServiceSettings settings)
{
serviceSettings.add(settings);
}
public ServiceSettings getServiceSettings(String serviceType)
{
for (Iterator iter = serviceSettings.iterator(); iter.hasNext();)
{
ServiceSettings serviceSettings = (ServiceSettings) iter.next();
if (serviceSettings.getId().equals(serviceType))
return serviceSettings;
}
return null;
}
public List getAllServiceSettings()
{
return serviceSettings;
}
/*
* CLUSTER CONFIGURATION
*/
public void addClusterSettings(ClusterSettings settings)
{
if (settings.isDefault())
{
for (Iterator it = clusterSettings.values().iterator(); it.hasNext(); )
{
ClusterSettings cs = (ClusterSettings) it.next();
if (cs.isDefault())
{
ConfigurationException cx = new ConfigurationException();
cx.setMessage(10214, new Object[] { settings.getClusterName(), cs.getClusterName() });
throw cx;
}
}
}
if (clusterSettings.containsKey(settings.getClusterName()))
{
ConfigurationException cx = new ConfigurationException();
cx.setMessage(10206, new Object[] { settings.getClusterName() });
throw cx;
}
clusterSettings.put(settings.getClusterName(), settings);
}
public ClusterSettings getClusterSettings(String clusterId)
{
for (Iterator it = clusterSettings.values().iterator(); it.hasNext(); )
{
ClusterSettings cs = (ClusterSettings) it.next();
if (cs.getClusterName() == null && clusterId == null)
return cs; // handle null case
if (cs.getClusterName() != null && cs.getClusterName().equals(clusterId))
return cs;
}
return null;
}
public ClusterSettings getDefaultCluster()
{
for (Iterator it = clusterSettings.values().iterator(); it.hasNext(); )
{
ClusterSettings cs = (ClusterSettings) it.next();
if (cs.isDefault())
return cs;
}
return null;
}
/*
* LOGGING CONFIGURATION
*/
public void setLoggingSettings(LoggingSettings settings)
{
loggingSettings = settings;
}
public LoggingSettings getLoggingSettings()
{
return loggingSettings;
}
public void addConfigPath(String path, long modified)
{
configPaths.put(path, new Long(modified));
}
public Map getConfigPaths()
{
return configPaths;
}
public void setFlexClientSettings(FlexClientSettings value)
{
flexClientSettings = value;
}
public FlexClientSettings getFlexClientSettings()
{
return flexClientSettings;
}
}