Changeset 901

Show
Ignore:
Timestamp:
10/15/06 12:44:31 (2 years ago)
Author:
alban
Message:

fix a problem with HierarchicalConfiguration?.subset

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/source/org/kolaka/freecast/NodeConfigurator.java

    r895 r901  
    2727import java.net.InetAddress; 
    2828import java.net.InetSocketAddress; 
     29import java.net.URI; 
     30import java.net.URISyntaxException; 
    2931import java.text.ParseException; 
    3032import java.util.Iterator; 
     
    3638import org.apache.commons.configuration.ConfigurationException; 
    3739import org.apache.commons.configuration.DataConfiguration; 
     40import org.apache.commons.io.FileUtils; 
    3841import org.apache.commons.lang.Validate; 
    3942import org.apache.commons.logging.LogFactory; 
    40 import org.kolaka.freecast.config.InetSocketAddressConfigurator
     43import org.kolaka.freecast.config.Configurations
    4144import org.kolaka.freecast.net.InetSocketAddressSpecification; 
    4245import org.kolaka.freecast.net.InetSocketAddressSpecificationParser; 
     
    6871import org.kolaka.freecast.transport.MinaPeerSendingConnectionFactory; 
    6972import org.kolaka.freecast.transport.cas.ConnectionAssistantClient; 
    70 import org.kolaka.freecast.transport.receiver.PeerReceiverConfiguration; 
     73import org.kolaka.freecast.transport.receiver.BandwidthControler; 
     74import org.kolaka.freecast.transport.receiver.EncoderFormat; 
    7175import org.kolaka.freecast.transport.receiver.PeerReceiverControler; 
     76import org.kolaka.freecast.transport.receiver.Playlist; 
     77import org.kolaka.freecast.transport.receiver.PlaylistEncoderReceiver; 
     78import org.kolaka.freecast.transport.receiver.PlaylistReceiver; 
    7279import 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; 
    7680import org.kolaka.freecast.transport.receiver.ReceiverControler; 
     81import org.kolaka.freecast.transport.receiver.ResourcePlaylist; 
     82import org.kolaka.freecast.transport.receiver.ShoutClientReceiver; 
     83import org.kolaka.freecast.transport.receiver.ShoutServerReceiver; 
    7784import org.kolaka.freecast.transport.receiver.SourceReceiver; 
    78 import org.kolaka.freecast.transport.receiver.SourceReceiverConfiguration; 
    7985import org.kolaka.freecast.transport.receiver.SourceReceiverControler; 
     86import org.kolaka.freecast.transport.receiver.StaticBandwidthControler; 
    8087import org.kolaka.freecast.transport.sender.PeerSenderControler; 
    8188 
     
    103110        public void configure(ConfigurableNode node, Configuration configuration) 
    104111                        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"); 
    107114                InetSocketAddress trackerAddress = new InetSocketAddress( 
    108115                                trackerAddressConfiguration.getString("host"), 
     
    114121                DefaultNodeService nodeService = new DefaultNodeService(trackerAddress); 
    115122     
    116     if (peerProviderConfiguration.containsKey("networkid"))
     123    try
    117124      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); 
    120127    } 
    121128     
     
    129136                ConnectionAssistantClient caClient = null; 
    130137                 
    131                 Configuration casConfiguration = configuration.subset("connection-assistant"); 
     138                Configuration casConfiguration = Configurations.subset(configuration, "connection-assistant"); 
    132139                if (!casConfiguration.isEmpty()) { 
    133140                        InetSocketAddress casAddress = new InetSocketAddress( 
     
    139146                } 
    140147 
    141                 Configuration senderConfiguration = configuration.subset("sender"); 
     148                Configuration senderConfiguration = Configurations.subset(configuration, "sender"); 
    142149                if (!senderConfiguration.isEmpty()) { 
    143150                        String senderClass = senderConfiguration.getString("class"); 
     
    148155                         
    149156                        if (senderClass.equals("udp")) { 
    150                                 Configuration listenAddressConfiguration = senderConfiguration 
    151                                                 .subset("listenaddress"); 
     157                                Configuration listenAddressConfiguration = Configurations.subset(senderConfiguration, "listenaddress"); 
    152158 
    153159                                InetSocketAddressSpecification listenAddressSpecification = loadInetSocketAddressSpecification(listenAddressConfiguration); 
     
    171177                                PeerReferenceLoader peerReferenceLoader = new PeerReferenceLoader(); 
    172178                                peerReferenceLoader.setListenAddress(listenAddress); 
    173                                 peerReference = peerReferenceLoader.load(senderConfiguration 
    174                                                 .subset("reference")); 
     179                                peerReference = peerReferenceLoader.load(Configurations.subset(senderConfiguration,"reference")); 
    175180                        } else if (senderClass.equals("none")) { 
    176181                                LogFactory 
     
    194199                } 
    195200 
    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")); 
    200203 
    201204                ReceiverControler receiverControler = null; 
    202205                Receiver receiver = null; 
    203206 
    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")) { 
    208249                        MinaPeerReceivingConnectionFactory connectionFactory = new MinaPeerReceivingConnectionFactory(); 
    209250                        peerControler.register(connectionFactory); 
     
    214255                        receiverControler = new PeerReceiverControler(peerControler, connectionFactory); 
    215256                } else { 
    216                         throw new ConfigurationException("Unknown receiver configuration: '" 
    217                                         + receiverBeanConfiguration + "'"); 
     257                        throw new ConfigurationException("Unknown receiver class: '" 
     258                                        + receiverClass + "'"); 
    218259                } 
    219260 
     
    231272                if (receiverControler instanceof PacketChecksummerUser) { 
    232273                        DataConfiguration checksummerConfiguration = new DataConfiguration( 
    233                                        receiverConfiguration.subset("checksummer")); 
     274          Configurations.subset(receiverConfiguration ,"checksummer")); 
    234275                        if (!checksummerConfiguration.isEmpty()) { 
    235276                                PacketChecksummer checksummer; 
     
    260301                } else if (receiverControler instanceof PacketValidatorUser) { 
    261302                        DataConfiguration validatorConfiguration = new DataConfiguration( 
    262                                        receiverConfiguration.subset("validator")); 
     303          Configurations.subset(receiverConfiguration, "validator")); 
    263304                        if (!validatorConfiguration.isEmpty()) { 
    264305                                PacketValidator validator; 
     
    295336                node.setReceiverControler(receiverControler); 
    296337 
    297                 Configuration playersConfiguration = configuration.subset("players"); 
     338                Configuration playersConfiguration = Configurations.subset(configuration, "players"); 
    298339 
    299340                if (!playersConfiguration.isEmpty()) { 
     
    317358                                        playerSource = videoPlayerSource; 
    318359                                } else if (playerClass.equals("http")) { 
    319                                         InetSocketAddress listenAddress = loadInetSocketAddress(playersConfiguration 
    320                                                         .subset("player.listenaddress")); 
     360                                        InetSocketAddress listenAddress = loadInetSocketAddress(Configurations.subset(playersConfiguration, "player.listenaddress")); 
    321361                                        playerSource = new HttpPlayerSource(listenAddress); 
    322362                                } else { 
     
    335375 
    336376        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")); 
    338380        } 
    339381 
  • trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java

    r898 r901  
    4949public class DefaultConfigurationLoader implements ConfigurationLoader { 
    5050   
    51   static { 
    52     AbstractConfiguration.setDefaultListDelimiter('#'); 
    53   } 
    54  
    5551        private final String defaultsName; 
    5652 
     
    148144        protected HierarchicalConfiguration loadConfiguration() throws ConfigurationException { 
    149145    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()) { 
    151151                        LogFactory.getLog(getClass()).trace("use user properties: " + userProperties); 
    152152                        configuration 
     
    156156                completeConfiguration(configuration); 
    157157 
    158                 configuration.setThrowExceptionOnMissing(true); 
     158     
    159159                return configuration; 
    160160        } 
  • trunk/source/org/kolaka/freecast/config/test/ConfigurationLoaderTest.java

    r895 r901  
    2424package org.kolaka.freecast.config.test; 
    2525 
    26 import junit.framework.TestCase
     26import java.util.NoSuchElementException
    2727 
     28import org.apache.commons.configuration.AbstractConfiguration; 
    2829import org.apache.commons.configuration.Configuration; 
    2930import org.apache.commons.configuration.ConfigurationException; 
     31import org.apache.commons.configuration.HierarchicalConfiguration; 
    3032import org.kolaka.freecast.config.ConfigurationLoader; 
     33import org.kolaka.freecast.config.Configurations; 
    3134import org.kolaka.freecast.config.DefaultConfigurationLoader; 
     35import org.kolaka.freecast.test.BaseTestCase; 
    3236 
    33 public class ConfigurationLoaderTest extends TestCase { 
     37public class ConfigurationLoaderTest extends BaseTestCase { 
    3438 
    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(); 
    4142 
    42                 assertNull(configuration.getString("dummy")); 
     43    HierarchicalConfiguration rootConfiguration = configurationLoader.getRootConfiguration(); 
     44    assertTrue(rootConfiguration.isThrowExceptionOnMissing()); 
     45    testNoSuchElementException(rootConfiguration); 
    4346 
    44                assertEquals("http", configuration.getString("connector.class")); 
     47    Configuration configuration = Configurations.subset(rootConfiguration, "tracker"); 
    4548 
    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  } 
    5370 
    5471} 
  • trunk/source/org/kolaka/freecast/manager/gui/Main.java

    r893 r901  
    3232import org.apache.commons.logging.LogFactory; 
    3333import org.kolaka.freecast.NodeConfigurator; 
     34import org.kolaka.freecast.config.Configurations; 
    3435import org.kolaka.freecast.manager.http.HttpServer; 
    3536import org.kolaka.freecast.net.InetSocketAddressSpecification; 
     
    7071                try { 
    7172      HttpTracker tracker = new HttpTracker(); 
    72       new HttpTrackerConfigurator().configure(tracker, (HierarchicalConfiguration) configuration 
    73                 .subset("tracker")); 
     73      new HttpTrackerConfigurator().configure(tracker, Configurations.subset(configuration, "tracker")); 
    7474      this.tracker = tracker; 
    7575    } catch (NoConfiguredTrackerException e) { 
     
    8282                NodeConfigurator nodeConfigurator = new NodeConfigurator(); 
    8383                nodeConfigurator.setResourceLocator(getResourceLocator()); 
    84                 nodeConfigurator.configure(node, configuration.subset("node")); 
     84                nodeConfigurator.configure(node, Configurations.subset(configuration , "node")); 
    8585                this.node = node; 
    8686 
     
    117117 
    118118                ConfigurableResources resources = new ConfigurableResources( 
    119                                configuration.subset("gui")); 
     119        Configurations.subset(configuration, "gui")); 
    120120                resources.setResourceLocator(getResourceLocator()); 
    121121     
  • trunk/source/org/kolaka/freecast/node/cli/Main.java

    r893 r901  
    2828import org.kolaka.freecast.Application; 
    2929import org.kolaka.freecast.NodeConfigurator; 
     30import org.kolaka.freecast.config.Configurations; 
    3031import org.kolaka.freecast.node.ConfigurableNode; 
    3132import org.kolaka.freecast.node.DefaultNode; 
     
    5253                NodeConfigurator nodeConfigurator = new NodeConfigurator(); 
    5354                nodeConfigurator.setResourceLocator(getResourceLocator()); 
    54                 nodeConfigurator.configure(node, configuration.subset("node")); 
     55                nodeConfigurator.configure(node, Configurations.subset(configuration, "node")); 
    5556                this.node = node; 
    5657        } 
  • trunk/source/org/kolaka/freecast/node/swing/Main.java

    r893 r901  
    3030import org.apache.commons.lang.StringUtils; 
    3131import org.kolaka.freecast.NodeConfigurator; 
     32import org.kolaka.freecast.config.Configurations; 
    3233import org.kolaka.freecast.node.ConfigurableNode; 
    3334import org.kolaka.freecast.node.DefaultNode; 
     
    7677    NodeConfigurator nodeConfigurator = new NodeConfigurator(); 
    7778    nodeConfigurator.setResourceLocator(getResourceLocator()); 
    78     nodeConfigurator.configure(node, configuration.subset("node")); 
     79    nodeConfigurator.configure(node, Configurations.subset(configuration, "node")); 
    7980    this.node = node; 
    8081 
    81     ConfigurableResources resources = new ConfigurableResources(configuration 
    82         .subset("gui")); 
     82    ConfigurableResources resources = new ConfigurableResources(Configurations.subset(configuration, "gui")); 
    8383    resources.setResourceLocator(getResourceLocator()); 
    8484 
  • trunk/source/org/kolaka/freecast/setup/Main.java

    r893 r901  
    2525 
    2626import org.apache.commons.configuration.HierarchicalConfiguration; 
     27import org.kolaka.freecast.config.Configurations; 
    2728import org.kolaka.freecast.swing.ConfigurableResources; 
    2829import org.kolaka.freecast.swing.Resources; 
     
    4142  protected void postInit(HierarchicalConfiguration configuration) throws Exception { 
    4243    super.postInit(configuration); 
    43     Resources resources = new ConfigurableResources(configuration 
    44         .subset("gui.setup")); 
     44    Resources resources = new ConfigurableResources(Configurations.subset(configuration, "gui.setup")); 
    4545  } 
    4646 
  • trunk/source/org/kolaka/freecast/swing/ConfigurableResources.java

    r895 r901  
    55 * and contributors (their names can be found in the CONTRIBUTORS file). 
    66 * 
    7  * Copyright (C) 2004-2006 Alban Peignier 
     7 * Copyright (C) 2004-2005 Alban Peignier 
    88 * 
    99 * This library is free software; you can redistribute it and/or 
     
    2121 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
    2222 */ 
    23  
    2423package org.kolaka.freecast.swing; 
    2524 
     
    4039import org.apache.commons.lang.Validate; 
    4140import org.apache.commons.logging.LogFactory; 
     41import org.kolaka.freecast.config.Configurations; 
    4242import org.kolaka.freecast.resource.ClassResourceLocator; 
    4343import org.kolaka.freecast.resource.CompositeResourceLocator; 
     
    6565         
    6666        public Resources subset(String name) { 
    67                 return new ConfigurableResources(configuration.subset(name)); 
     67                return new ConfigurableResources(Configurations.subset(configuration,name)); 
    6868        } 
    6969 
     
    7878 
    7979        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                } 
    8686        } 
    8787 
     
    123123 
    124124        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                } 
    130130        } 
    131131 
  • trunk/source/org/kolaka/freecast/tracker/Main.java

    r893 r901  
    2626import org.apache.commons.configuration.HierarchicalConfiguration; 
    2727import org.kolaka.freecast.Application; 
     28import org.kolaka.freecast.config.Configurations; 
    2829import org.kolaka.freecast.tracker.http.HttpTracker; 
    2930import org.kolaka.freecast.tracker.http.HttpTrackerConfigurator; 
     
    4647        protected void postInit(HierarchicalConfiguration configuration) throws Exception { 
    4748                HttpTracker tracker = new HttpTracker(); 
    48                 new HttpTrackerConfigurator().configure(tracker, (HierarchicalConfiguration) configuration 
    49                                 .subset("tracker")); 
     49                new HttpTrackerConfigurator().configure(tracker, Configurations.subset(configuration,"tracker")); 
    5050    this.tracker = tracker; 
    5151        } 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConfigurator.java

    r898 r901  
    3232import org.apache.commons.configuration.HierarchicalConfiguration; 
    3333import org.apache.commons.logging.LogFactory; 
     34import org.kolaka.freecast.config.Configurations; 
    3435import org.kolaka.freecast.tracker.NoConfiguredTrackerException; 
    3536import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumer; 
     
    5859    tracker.setMultiTracker(multiTracker); 
    5960     
    60                 Configuration listenAddressConfiguration = configuration 
    61                                 .subset("connector.listenaddress"); 
     61                Configuration listenAddressConfiguration = Configurations.subset(configuration,"connector.listenaddress"); 
    6262                InetSocketAddress listenAddress = new InetSocketAddress( 
    6363                                listenAddressConfiguration.getString("host"), 
     
    6565                tracker.setListenAddress(listenAddress); 
    6666                 
    67                 Configuration casConfiguration = configuration.subset("connection-assistant.listenaddress"); 
     67                Configuration casConfiguration = Configurations.subset(configuration,"connection-assistant.listenaddress"); 
    6868                if (!casConfiguration.isEmpty()) { 
    6969                        InetSocketAddress casListenAddress = new InetSocketAddress( 
     
    7575                } 
    7676     
    77     HierarchicalConfiguration statisticsConfiguration = (HierarchicalConfiguration) configuration.subset("statistics"); 
     77    HierarchicalConfiguration statisticsConfiguration = Configurations.subset(configuration,"statistics"); 
    7878 
    7979    tracker.enableStatsServlet(statisticsConfiguration.getBoolean("xml", true)); 
  • trunk/source/org/kolaka/freecast/transport/receiver/ReceiverConfigurationLoader.java

    r883 r901  
    3030import org.apache.commons.configuration.DataConfiguration; 
    3131import org.apache.commons.logging.LogFactory; 
     32import org.kolaka.freecast.config.Configurations; 
    3233import org.kolaka.freecast.config.InetSocketAddressConfigurator; 
    3334 
     
    5556      ShoutServerReceiverConfiguration configuration = new ShoutServerReceiverConfiguration(); 
    5657      configuration.setListenAddress(new InetSocketAddressConfigurator() 
    57           .load(receiverConfiguration.subset("listenaddress"))); 
     58          .load(Configurations.subset(receiverConfiguration, "listenaddress"))); 
    5859      return configuration; 
    5960    }