Changeset 901
- Timestamp:
- 10/15/06 12:44:31 (2 years ago)
- Files:
-
- trunk/source/org/kolaka/freecast/NodeConfigurator.java (modified) (16 diffs)
- trunk/source/org/kolaka/freecast/config/Configurations.java (added)
- trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java (modified) (3 diffs)
- trunk/source/org/kolaka/freecast/config/test/ConfigurationLoaderTest.java (modified) (1 diff)
- trunk/source/org/kolaka/freecast/manager/gui/Main.java (modified) (4 diffs)
- trunk/source/org/kolaka/freecast/node/cli/Main.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/node/swing/Main.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/setup/Main.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/swing/ConfigurableResources.java (modified) (6 diffs)
- trunk/source/org/kolaka/freecast/tracker/Main.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConfigurator.java (modified) (4 diffs)
- trunk/source/org/kolaka/freecast/transport/receiver/ReceiverConfigurationLoader.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/source/org/kolaka/freecast/NodeConfigurator.java
r895 r901 27 27 import java.net.InetAddress; 28 28 import java.net.InetSocketAddress; 29 import java.net.URI; 30 import java.net.URISyntaxException; 29 31 import java.text.ParseException; 30 32 import java.util.Iterator; … … 36 38 import org.apache.commons.configuration.ConfigurationException; 37 39 import org.apache.commons.configuration.DataConfiguration; 40 import org.apache.commons.io.FileUtils; 38 41 import org.apache.commons.lang.Validate; 39 42 import org.apache.commons.logging.LogFactory; 40 import org.kolaka.freecast.config. InetSocketAddressConfigurator;43 import org.kolaka.freecast.config.Configurations; 41 44 import org.kolaka.freecast.net.InetSocketAddressSpecification; 42 45 import org.kolaka.freecast.net.InetSocketAddressSpecificationParser; … … 68 71 import org.kolaka.freecast.transport.MinaPeerSendingConnectionFactory; 69 72 import org.kolaka.freecast.transport.cas.ConnectionAssistantClient; 70 import org.kolaka.freecast.transport.receiver.PeerReceiverConfiguration; 73 import org.kolaka.freecast.transport.receiver.BandwidthControler; 74 import org.kolaka.freecast.transport.receiver.EncoderFormat; 71 75 import org.kolaka.freecast.transport.receiver.PeerReceiverControler; 76 import org.kolaka.freecast.transport.receiver.Playlist; 77 import org.kolaka.freecast.transport.receiver.PlaylistEncoderReceiver; 78 import org.kolaka.freecast.transport.receiver.PlaylistReceiver; 72 79 import org.kolaka.freecast.transport.receiver.Receiver; 73 import org.kolaka.freecast.transport.receiver.ReceiverConfiguration;74 import org.kolaka.freecast.transport.receiver.ReceiverConfigurationLoader;75 import org.kolaka.freecast.transport.receiver.ReceiverConfigurator;76 80 import org.kolaka.freecast.transport.receiver.ReceiverControler; 81 import org.kolaka.freecast.transport.receiver.ResourcePlaylist; 82 import org.kolaka.freecast.transport.receiver.ShoutClientReceiver; 83 import org.kolaka.freecast.transport.receiver.ShoutServerReceiver; 77 84 import org.kolaka.freecast.transport.receiver.SourceReceiver; 78 import org.kolaka.freecast.transport.receiver.SourceReceiverConfiguration;79 85 import org.kolaka.freecast.transport.receiver.SourceReceiverControler; 86 import org.kolaka.freecast.transport.receiver.StaticBandwidthControler; 80 87 import org.kolaka.freecast.transport.sender.PeerSenderControler; 81 88 … … 103 110 public void configure(ConfigurableNode node, Configuration configuration) 104 111 throws ConfigurationException, IOException { 105 Configuration peerProviderConfiguration = configuration.subset("peerprovider");106 Configuration trackerAddressConfiguration = peerProviderConfiguration.subset("trackeraddress");112 Configuration peerProviderConfiguration = Configurations.subset(configuration, "peerprovider"); 113 Configuration trackerAddressConfiguration = Configurations.subset(peerProviderConfiguration, "trackeraddress"); 107 114 InetSocketAddress trackerAddress = new InetSocketAddress( 108 115 trackerAddressConfiguration.getString("host"), … … 114 121 DefaultNodeService nodeService = new DefaultNodeService(trackerAddress); 115 122 116 if (peerProviderConfiguration.containsKey("networkid")){123 try { 117 124 nodeService.setNetworkId(NetworkIdentifier.getInstance(peerProviderConfiguration.getString("networkid"))); 118 } else{119 LogFactory.getLog(getClass()). debug("no network identifier in configuration");125 } catch (NoSuchElementException e) { 126 LogFactory.getLog(getClass()).trace("no network identifier in configuration", e); 120 127 } 121 128 … … 129 136 ConnectionAssistantClient caClient = null; 130 137 131 Configuration casConfiguration = configuration.subset("connection-assistant");138 Configuration casConfiguration = Configurations.subset(configuration, "connection-assistant"); 132 139 if (!casConfiguration.isEmpty()) { 133 140 InetSocketAddress casAddress = new InetSocketAddress( … … 139 146 } 140 147 141 Configuration senderConfiguration = configuration.subset("sender");148 Configuration senderConfiguration = Configurations.subset(configuration, "sender"); 142 149 if (!senderConfiguration.isEmpty()) { 143 150 String senderClass = senderConfiguration.getString("class"); … … 148 155 149 156 if (senderClass.equals("udp")) { 150 Configuration listenAddressConfiguration = senderConfiguration 151 .subset("listenaddress"); 157 Configuration listenAddressConfiguration = Configurations.subset(senderConfiguration, "listenaddress"); 152 158 153 159 InetSocketAddressSpecification listenAddressSpecification = loadInetSocketAddressSpecification(listenAddressConfiguration); … … 171 177 PeerReferenceLoader peerReferenceLoader = new PeerReferenceLoader(); 172 178 peerReferenceLoader.setListenAddress(listenAddress); 173 peerReference = peerReferenceLoader.load(senderConfiguration 174 .subset("reference")); 179 peerReference = peerReferenceLoader.load(Configurations.subset(senderConfiguration,"reference")); 175 180 } else if (senderClass.equals("none")) { 176 181 LogFactory … … 194 199 } 195 200 196 DataConfiguration receiverConfiguration = new DataConfiguration( 197 configuration.subset("receiver")); 198 199 ReceiverConfiguration receiverBeanConfiguration = new ReceiverConfigurationLoader().load(receiverConfiguration); 201 DataConfiguration receiverConfiguration = new DataConfiguration( 202 Configurations.subset(configuration, "receiver")); 200 203 201 204 ReceiverControler receiverControler = null; 202 205 Receiver receiver = null; 203 206 204 if (receiverBeanConfiguration instanceof SourceReceiverConfiguration) { 205 ReceiverConfigurator configurator = ReceiverConfigurator.getInstance((SourceReceiverConfiguration) receiverBeanConfiguration); 206 receiver = configurator.configure(receiverBeanConfiguration); 207 } else if (receiverBeanConfiguration instanceof PeerReceiverConfiguration) { 207 String receiverClass = receiverConfiguration.getString("class"); 208 if (receiverClass.equals("shoutclient")) { 209 receiver = new ShoutClientReceiver(receiverConfiguration 210 .getURL("url")); 211 } else if (receiverClass.equals("playlist") 212 || receiverClass.equals("encoder-playlist")) { 213 String playlistURIString = receiverConfiguration.getString("url"); 214 URI playlistURI = null; 215 try { 216 playlistURI = new URI(playlistURIString); 217 } catch (URISyntaxException e) { 218 throw new ConfigurationException("invalid playlist url: '" 219 + playlistURIString, e); 220 } 221 222 Playlist playlist = ResourcePlaylist.getInstance(resourceLocator, 223 playlistURI); 224 225 if (receiverClass.equals("playlist")) { 226 receiver = new PlaylistReceiver(playlist); 227 int bandwidth = receiverConfiguration.getInt("bandwidth", 35); 228 LogFactory.getLog(getClass()).warn( 229 "the playlist receiver uses a static bandwidth controler at " 230 + bandwidth); 231 BandwidthControler bandwidthControler = new StaticBandwidthControler( 232 (int) (bandwidth * FileUtils.ONE_KB)); 233 ((PlaylistReceiver) receiver) 234 .setBandwidthControler(bandwidthControler); 235 } else { 236 int channels = receiverConfiguration.getInt("channels", 2); 237 int sampleRate = receiverConfiguration.getInt("sampleRate", 238 44100); 239 float quality = receiverConfiguration.getFloat("quality", 0); 240 EncoderFormat format = new EncoderFormat(channels, sampleRate, 241 quality); 242 receiver = new PlaylistEncoderReceiver(playlist, format); 243 } 244 } else if (receiverClass.equals("shoutserver")) { 245 InetSocketAddress listenAddress = loadInetSocketAddress(Configurations.subset(receiverConfiguration 246 ,"listenaddress")); 247 receiver = new ShoutServerReceiver(listenAddress); 248 } else if (receiverClass.equals("peer")) { 208 249 MinaPeerReceivingConnectionFactory connectionFactory = new MinaPeerReceivingConnectionFactory(); 209 250 peerControler.register(connectionFactory); … … 214 255 receiverControler = new PeerReceiverControler(peerControler, connectionFactory); 215 256 } else { 216 throw new ConfigurationException("Unknown receiver c onfiguration: '"217 + receiver BeanConfiguration+ "'");257 throw new ConfigurationException("Unknown receiver class: '" 258 + receiverClass + "'"); 218 259 } 219 260 … … 231 272 if (receiverControler instanceof PacketChecksummerUser) { 232 273 DataConfiguration checksummerConfiguration = new DataConfiguration( 233 receiverConfiguration.subset("checksummer"));274 Configurations.subset(receiverConfiguration ,"checksummer")); 234 275 if (!checksummerConfiguration.isEmpty()) { 235 276 PacketChecksummer checksummer; … … 260 301 } else if (receiverControler instanceof PacketValidatorUser) { 261 302 DataConfiguration validatorConfiguration = new DataConfiguration( 262 receiverConfiguration.subset("validator"));303 Configurations.subset(receiverConfiguration, "validator")); 263 304 if (!validatorConfiguration.isEmpty()) { 264 305 PacketValidator validator; … … 295 336 node.setReceiverControler(receiverControler); 296 337 297 Configuration playersConfiguration = configuration.subset("players");338 Configuration playersConfiguration = Configurations.subset(configuration, "players"); 298 339 299 340 if (!playersConfiguration.isEmpty()) { … … 317 358 playerSource = videoPlayerSource; 318 359 } else if (playerClass.equals("http")) { 319 InetSocketAddress listenAddress = loadInetSocketAddress(playersConfiguration 320 .subset("player.listenaddress")); 360 InetSocketAddress listenAddress = loadInetSocketAddress(Configurations.subset(playersConfiguration, "player.listenaddress")); 321 361 playerSource = new HttpPlayerSource(listenAddress); 322 362 } else { … … 335 375 336 376 private InetSocketAddress loadInetSocketAddress(Configuration configuration) { 337 return new InetSocketAddressConfigurator().load(configuration); 377 return new InetSocketAddress( 378 configuration.getString("host", "0.0.0.0"), configuration 379 .getInt("port")); 338 380 } 339 381 trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java
r898 r901 49 49 public class DefaultConfigurationLoader implements ConfigurationLoader { 50 50 51 static {52 AbstractConfiguration.setDefaultListDelimiter('#');53 }54 55 51 private final String defaultsName; 56 52 … … 148 144 protected HierarchicalConfiguration loadConfiguration() throws ConfigurationException { 149 145 CombinedConfiguration configuration = new CombinedConfiguration(); 150 if (!userProperties.isEmpty()) { 146 // two special rules for Configuration 147 configuration.setThrowExceptionOnMissing(true); 148 configuration.setDelimiterParsingDisabled(true); 149 150 if (!userProperties.isEmpty()) { 151 151 LogFactory.getLog(getClass()).trace("use user properties: " + userProperties); 152 152 configuration … … 156 156 completeConfiguration(configuration); 157 157 158 configuration.setThrowExceptionOnMissing(true); 158 159 159 return configuration; 160 160 } trunk/source/org/kolaka/freecast/config/test/ConfigurationLoaderTest.java
r895 r901 24 24 package org.kolaka.freecast.config.test; 25 25 26 import j unit.framework.TestCase;26 import java.util.NoSuchElementException; 27 27 28 import org.apache.commons.configuration.AbstractConfiguration; 28 29 import org.apache.commons.configuration.Configuration; 29 30 import org.apache.commons.configuration.ConfigurationException; 31 import org.apache.commons.configuration.HierarchicalConfiguration; 30 32 import org.kolaka.freecast.config.ConfigurationLoader; 33 import org.kolaka.freecast.config.Configurations; 31 34 import org.kolaka.freecast.config.DefaultConfigurationLoader; 35 import org.kolaka.freecast.test.BaseTestCase; 32 36 33 public class ConfigurationLoaderTest extends TestCase {37 public class ConfigurationLoaderTest extends BaseTestCase { 34 38 35 public void testTrackerLoad() throws ConfigurationException { 36 ConfigurationLoader configurationLoader = new DefaultConfigurationLoader( 37 "tracker"); 38 configurationLoader.load(); 39 Configuration configuration = configurationLoader 40 .getRootConfiguration().subset("tracker"); 39 public void testTrackerLoad() throws ConfigurationException { 40 ConfigurationLoader configurationLoader = new DefaultConfigurationLoader("tracker"); 41 configurationLoader.load(); 41 42 42 assertNull(configuration.getString("dummy")); 43 HierarchicalConfiguration rootConfiguration = configurationLoader.getRootConfiguration(); 44 assertTrue(rootConfiguration.isThrowExceptionOnMissing()); 45 testNoSuchElementException(rootConfiguration); 43 46 44 assertEquals("http", configuration.getString("connector.class"));47 Configuration configuration = Configurations.subset(rootConfiguration, "tracker"); 45 48 46 Configuration connectorConfiguration = configuration 47 .subset("connector"); 48 assertEquals("0.0.0.0", connectorConfiguration 49 .getString("listenaddress.host")); 50 assertEquals("1665", connectorConfiguration 51 .getString("listenaddress.port")); 52 } 49 testNoSuchElementException(configuration); 50 51 testNoSuchElementException(configuration); 52 53 assertEquals("http", configuration.getString("connector.class")); 54 55 Configuration connectorConfiguration = Configurations.subset(configuration, "connector"); 56 assertEquals("0.0.0.0", connectorConfiguration.getString("listenaddress.host")); 57 assertEquals("1665", connectorConfiguration.getString("listenaddress.port")); 58 } 59 60 private void testNoSuchElementException(Configuration configuration) { 61 assertTrue(((AbstractConfiguration) configuration).isThrowExceptionOnMissing()); 62 63 try { 64 configuration.getString("dummy"); 65 fail(configuration + " should throw a NoSuchElementException"); 66 } catch (NoSuchElementException e) { 67 68 } 69 } 53 70 54 71 } trunk/source/org/kolaka/freecast/manager/gui/Main.java
r893 r901 32 32 import org.apache.commons.logging.LogFactory; 33 33 import org.kolaka.freecast.NodeConfigurator; 34 import org.kolaka.freecast.config.Configurations; 34 35 import org.kolaka.freecast.manager.http.HttpServer; 35 36 import org.kolaka.freecast.net.InetSocketAddressSpecification; … … 70 71 try { 71 72 HttpTracker tracker = new HttpTracker(); 72 new HttpTrackerConfigurator().configure(tracker, (HierarchicalConfiguration) configuration 73 .subset("tracker")); 73 new HttpTrackerConfigurator().configure(tracker, Configurations.subset(configuration, "tracker")); 74 74 this.tracker = tracker; 75 75 } catch (NoConfiguredTrackerException e) { … … 82 82 NodeConfigurator nodeConfigurator = new NodeConfigurator(); 83 83 nodeConfigurator.setResourceLocator(getResourceLocator()); 84 nodeConfigurator.configure(node, configuration.subset("node"));84 nodeConfigurator.configure(node, Configurations.subset(configuration , "node")); 85 85 this.node = node; 86 86 … … 117 117 118 118 ConfigurableResources resources = new ConfigurableResources( 119 configuration.subset("gui"));119 Configurations.subset(configuration, "gui")); 120 120 resources.setResourceLocator(getResourceLocator()); 121 121 trunk/source/org/kolaka/freecast/node/cli/Main.java
r893 r901 28 28 import org.kolaka.freecast.Application; 29 29 import org.kolaka.freecast.NodeConfigurator; 30 import org.kolaka.freecast.config.Configurations; 30 31 import org.kolaka.freecast.node.ConfigurableNode; 31 32 import org.kolaka.freecast.node.DefaultNode; … … 52 53 NodeConfigurator nodeConfigurator = new NodeConfigurator(); 53 54 nodeConfigurator.setResourceLocator(getResourceLocator()); 54 nodeConfigurator.configure(node, configuration.subset("node"));55 nodeConfigurator.configure(node, Configurations.subset(configuration, "node")); 55 56 this.node = node; 56 57 } trunk/source/org/kolaka/freecast/node/swing/Main.java
r893 r901 30 30 import org.apache.commons.lang.StringUtils; 31 31 import org.kolaka.freecast.NodeConfigurator; 32 import org.kolaka.freecast.config.Configurations; 32 33 import org.kolaka.freecast.node.ConfigurableNode; 33 34 import org.kolaka.freecast.node.DefaultNode; … … 76 77 NodeConfigurator nodeConfigurator = new NodeConfigurator(); 77 78 nodeConfigurator.setResourceLocator(getResourceLocator()); 78 nodeConfigurator.configure(node, configuration.subset("node"));79 nodeConfigurator.configure(node, Configurations.subset(configuration, "node")); 79 80 this.node = node; 80 81 81 ConfigurableResources resources = new ConfigurableResources(configuration 82 .subset("gui")); 82 ConfigurableResources resources = new ConfigurableResources(Configurations.subset(configuration, "gui")); 83 83 resources.setResourceLocator(getResourceLocator()); 84 84 trunk/source/org/kolaka/freecast/setup/Main.java
r893 r901 25 25 26 26 import org.apache.commons.configuration.HierarchicalConfiguration; 27 import org.kolaka.freecast.config.Configurations; 27 28 import org.kolaka.freecast.swing.ConfigurableResources; 28 29 import org.kolaka.freecast.swing.Resources; … … 41 42 protected void postInit(HierarchicalConfiguration configuration) throws Exception { 42 43 super.postInit(configuration); 43 Resources resources = new ConfigurableResources(configuration 44 .subset("gui.setup")); 44 Resources resources = new ConfigurableResources(Configurations.subset(configuration, "gui.setup")); 45 45 } 46 46 trunk/source/org/kolaka/freecast/swing/ConfigurableResources.java
r895 r901 5 5 * and contributors (their names can be found in the CONTRIBUTORS file). 6 6 * 7 * Copyright (C) 2004-200 6Alban Peignier7 * Copyright (C) 2004-2005 Alban Peignier 8 8 * 9 9 * This library is free software; you can redistribute it and/or … … 21 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 22 */ 23 24 23 package org.kolaka.freecast.swing; 25 24 … … 40 39 import org.apache.commons.lang.Validate; 41 40 import org.apache.commons.logging.LogFactory; 41 import org.kolaka.freecast.config.Configurations; 42 42 import org.kolaka.freecast.resource.ClassResourceLocator; 43 43 import org.kolaka.freecast.resource.CompositeResourceLocator; … … 65 65 66 66 public Resources subset(String name) { 67 return new ConfigurableResources( configuration.subset(name));67 return new ConfigurableResources(Configurations.subset(configuration,name)); 68 68 } 69 69 … … 78 78 79 79 private String getString(String name) throws ResourcesException { 80 String string = configuration.getString(name); 81 if (string == null) { 82 throw new ResourcesException( 83 "Can't find the configuration value for '" + name + "'"); 84 } 85 return string; 80 try { 81 return configuration.getString(name); 82 } catch (NoSuchElementException e) { 83 throw new ResourcesException( 84 "Can't find the configuration value for '" + name + "'", e); 85 } 86 86 } 87 87 … … 123 123 124 124 public Color getColor(String name) throws ResourcesException { 125 Color color = configuration.getColor(name);126 if (color == null) { 127 throw new ResourcesException("Can't find the color " + name); 128 } 129 return color; 125 try { 126 return configuration.getColor(name); 127 } catch (NoSuchElementException e) { 128 throw new ResourcesException("Can't find the color " + name, e); 129 } 130 130 } 131 131 trunk/source/org/kolaka/freecast/tracker/Main.java
r893 r901 26 26 import org.apache.commons.configuration.HierarchicalConfiguration; 27 27 import org.kolaka.freecast.Application; 28 import org.kolaka.freecast.config.Configurations; 28 29 import org.kolaka.freecast.tracker.http.HttpTracker; 29 30 import org.kolaka.freecast.tracker.http.HttpTrackerConfigurator; … … 46 47 protected void postInit(HierarchicalConfiguration configuration) throws Exception { 47 48 HttpTracker tracker = new HttpTracker(); 48 new HttpTrackerConfigurator().configure(tracker, (HierarchicalConfiguration) configuration 49 .subset("tracker")); 49 new HttpTrackerConfigurator().configure(tracker, Configurations.subset(configuration,"tracker")); 50 50 this.tracker = tracker; 51 51 } trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConfigurator.java
r898 r901 32 32 import org.apache.commons.configuration.HierarchicalConfiguration; 33 33 import org.apache.commons.logging.LogFactory; 34 import org.kolaka.freecast.config.Configurations; 34 35 import org.kolaka.freecast.tracker.NoConfiguredTrackerException; 35 36 import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumer; … … 58 59 tracker.setMultiTracker(multiTracker); 59 60 60 Configuration listenAddressConfiguration = configuration 61 .subset("connector.listenaddress"); 61 Configuration listenAddressConfiguration = Configurations.subset(configuration,"connector.listenaddress"); 62 62 InetSocketAddress listenAddress = new InetSocketAddress( 63 63 listenAddressConfiguration.getString("host"), … … 65 65 tracker.setListenAddress(listenAddress); 66 66 67 Configuration casConfiguration = configuration.subset("connection-assistant.listenaddress");67 Configuration casConfiguration = Configurations.subset(configuration,"connection-assistant.listenaddress"); 68 68 if (!casConfiguration.isEmpty()) { 69 69 InetSocketAddress casListenAddress = new InetSocketAddress( … … 75 75 } 76 76 77 HierarchicalConfiguration statisticsConfiguration = (HierarchicalConfiguration) configuration.subset("statistics");77 HierarchicalConfiguration statisticsConfiguration = Configurations.subset(configuration,"statistics"); 78 78 79 79 tracker.enableStatsServlet(statisticsConfiguration.getBoolean("xml", true)); trunk/source/org/kolaka/freecast/transport/receiver/ReceiverConfigurationLoader.java
r883 r901 30 30 import org.apache.commons.configuration.DataConfiguration; 31 31 import org.apache.commons.logging.LogFactory; 32 import org.kolaka.freecast.config.Configurations; 32 33 import org.kolaka.freecast.config.InetSocketAddressConfigurator; 33 34 … … 55 56 ShoutServerReceiverConfiguration configuration = new ShoutServerReceiverConfiguration(); 56 57 configuration.setListenAddress(new InetSocketAddressConfigurator() 57 .load( receiverConfiguration.subset("listenaddress")));58 .load(Configurations.subset(receiverConfiguration, "listenaddress"))); 58 59 return configuration; 59 60 }
