Changeset 883

Show
Ignore:
Timestamp:
10/02/06 22:21:13 (2 years ago)
Author:
alban
Message:

[Bug 147] first setup wizard

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/.classpath

    r831 r883  
    22<classpath> 
    33        <classpathentry kind="src" path="source"/> 
    4         <classpathentry kind="lib" path="track/tritonus/patches/0.3.6/tritonus-vorbis.jar"/> 
    54        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    65        <classpathentry kind="lib" path="lib/core/commons-cli.jar"/> 
     
    3130        <classpathentry kind="lib" path="lib/test/mockobjects-core.jar"/> 
    3231        <classpathentry kind="lib" path="lib/test/junit.jar"/> 
     32        <classpathentry kind="lib" path="lib/core/wizard.jar"/> 
     33        <classpathentry kind="lib" path="lib/core/commons-digester.jar"/> 
     34        <classpathentry kind="lib" path="lib/core/commons-beanutils.jar"/> 
    3335        <classpathentry kind="output" path=".eclipse"/> 
    3436</classpath> 
  • trunk/ivy.xml

    r829 r883  
    4141    </dependency> 
    4242    <dependency org="javazoom" name="vorbisspi" rev="1.0.2" conf="core->*"/> 
     43    <dependency org="pietschy" name="wizard-framework" rev="0.1.12" conf="core->*"/> 
    4344     
    4445    <dependency org="docbook" name="docbook-xsl" rev="1.69.1" conf="build-docbook->*"/> 
  • trunk/source/org/kolaka/freecast/Application.java

    r865 r883  
    182182                try { 
    183183                        LogFactory.getLog(getClass()).info( 
    184                                         "version " + Version.getInstance().getName()); 
     184                                        "version " + Version.getINSTANCE().getName()); 
    185185      LogFactory.getLog(getClass()).debug("runtime version " + SystemUtils.JAVA_RUNTIME_VERSION); 
    186186                        LogFactory.getLog(getClass()).debug("init"); 
  • trunk/source/org/kolaka/freecast/NodeConfigurator.java

    r830 r883  
    2727import java.net.InetAddress; 
    2828import java.net.InetSocketAddress; 
    29 import java.net.URI; 
    30 import java.net.URISyntaxException; 
    3129import java.text.ParseException; 
    3230import java.util.Iterator; 
     
    3836import org.apache.commons.configuration.ConfigurationException; 
    3937import org.apache.commons.configuration.DataConfiguration; 
    40 import org.apache.commons.io.FileUtils; 
    4138import org.apache.commons.lang.Validate; 
    4239import org.apache.commons.logging.LogFactory; 
     40import org.kolaka.freecast.config.InetSocketAddressConfigurator; 
    4341import org.kolaka.freecast.net.InetSocketAddressSpecification; 
    4442import org.kolaka.freecast.net.InetSocketAddressSpecificationParser; 
     
    7068import org.kolaka.freecast.transport.MinaPeerSendingConnectionFactory; 
    7169import org.kolaka.freecast.transport.cas.ConnectionAssistantClient; 
    72 import org.kolaka.freecast.transport.receiver.BandwidthControler; 
    73 import org.kolaka.freecast.transport.receiver.EncoderFormat; 
     70import org.kolaka.freecast.transport.receiver.PeerReceiverConfiguration; 
    7471import org.kolaka.freecast.transport.receiver.PeerReceiverControler; 
    75 import org.kolaka.freecast.transport.receiver.Playlist; 
    76 import org.kolaka.freecast.transport.receiver.PlaylistEncoderReceiver; 
    77 import org.kolaka.freecast.transport.receiver.PlaylistReceiver; 
    7872import org.kolaka.freecast.transport.receiver.Receiver; 
     73import org.kolaka.freecast.transport.receiver.ReceiverConfiguration; 
     74import org.kolaka.freecast.transport.receiver.ReceiverConfigurationLoader; 
     75import org.kolaka.freecast.transport.receiver.ReceiverConfigurator; 
    7976import org.kolaka.freecast.transport.receiver.ReceiverControler; 
    80 import org.kolaka.freecast.transport.receiver.ResourcePlaylist; 
    81 import org.kolaka.freecast.transport.receiver.ShoutClientReceiver; 
    82 import org.kolaka.freecast.transport.receiver.ShoutServerReceiver; 
    8377import org.kolaka.freecast.transport.receiver.SourceReceiver; 
     78import org.kolaka.freecast.transport.receiver.SourceReceiverConfiguration; 
    8479import org.kolaka.freecast.transport.receiver.SourceReceiverControler; 
    85 import org.kolaka.freecast.transport.receiver.StaticBandwidthControler; 
    8680import org.kolaka.freecast.transport.sender.PeerSenderControler; 
    8781 
     
    200194                } 
    201195 
    202                 DataConfiguration receiverConfiguration = new DataConfiguration( 
    203                                 configuration.subset("receiver")); 
     196    DataConfiguration receiverConfiguration = new DataConfiguration( 
     197        configuration.subset("receiver")); 
     198     
     199                ReceiverConfiguration receiverBeanConfiguration = new ReceiverConfigurationLoader().load(receiverConfiguration); 
    204200 
    205201                ReceiverControler receiverControler = null; 
    206202                Receiver receiver = null; 
    207203 
    208                 String receiverClass = receiverConfiguration.getString("class"); 
    209                 if (receiverClass.equals("shoutclient")) { 
    210                         receiver = new ShoutClientReceiver(receiverConfiguration 
    211                                         .getURL("url")); 
    212                 } else if (receiverClass.equals("playlist") 
    213                                 || receiverClass.equals("encoder-playlist")) { 
    214                         String playlistURIString = receiverConfiguration.getString("url"); 
    215                         URI playlistURI = null; 
    216                         try { 
    217                                 playlistURI = new URI(playlistURIString); 
    218                         } catch (URISyntaxException e) { 
    219                                 throw new ConfigurationException("invalid playlist url: '" 
    220                                                 + playlistURIString, e); 
    221                         } 
    222  
    223                         Playlist playlist = ResourcePlaylist.getInstance(resourceLocator, 
    224                                         playlistURI); 
    225  
    226                         if (receiverClass.equals("playlist")) { 
    227                                 receiver = new PlaylistReceiver(playlist); 
    228                                 int bandwidth = receiverConfiguration.getInt("bandwidth", 35); 
    229                                 LogFactory.getLog(getClass()).warn( 
    230                                                 "the playlist receiver uses a static bandwidth controler at " 
    231                                                                 + bandwidth); 
    232                                 BandwidthControler bandwidthControler = new StaticBandwidthControler( 
    233                                                 (int) (bandwidth * FileUtils.ONE_KB)); 
    234                                 ((PlaylistReceiver) receiver) 
    235                                                 .setBandwidthControler(bandwidthControler); 
    236                         } else { 
    237                                 int channels = receiverConfiguration.getInt("channels", 2); 
    238                                 int sampleRate = receiverConfiguration.getInt("sampleRate", 
    239                                                 44100); 
    240                                 float quality = receiverConfiguration.getFloat("quality", 0); 
    241                                 EncoderFormat format = new EncoderFormat(channels, sampleRate, 
    242                                                 quality); 
    243                                 receiver = new PlaylistEncoderReceiver(playlist, format); 
    244                         } 
    245                 } else if (receiverClass.equals("shoutserver")) { 
    246                         InetSocketAddress listenAddress = loadInetSocketAddress(receiverConfiguration 
    247                                         .subset("listenaddress")); 
    248                         receiver = new ShoutServerReceiver(listenAddress); 
    249                 } else if (receiverClass.equals("peer")) { 
     204    if (receiverBeanConfiguration instanceof SourceReceiverConfiguration) { 
     205      ReceiverConfigurator configurator = ReceiverConfigurator.getInstance((SourceReceiverConfiguration) receiverBeanConfiguration); 
     206      receiver = configurator.configure(receiverBeanConfiguration); 
     207    } else if (receiverBeanConfiguration instanceof PeerReceiverConfiguration) { 
    250208                        MinaPeerReceivingConnectionFactory connectionFactory = new MinaPeerReceivingConnectionFactory(); 
    251209                        peerControler.register(connectionFactory); 
     
    256214                        receiverControler = new PeerReceiverControler(peerControler, connectionFactory); 
    257215                } else { 
    258                         throw new ConfigurationException("Unknown receiver class: '" 
    259                                         + receiverClass + "'"); 
     216                        throw new ConfigurationException("Unknown receiver configuration: '" 
     217                                        + receiverBeanConfiguration + "'"); 
    260218                } 
    261219 
     
    377335 
    378336        private InetSocketAddress loadInetSocketAddress(Configuration configuration) { 
    379                 return new InetSocketAddress( 
    380                                 configuration.getString("host", "0.0.0.0"), configuration 
    381                                                 .getInt("port")); 
     337                return new InetSocketAddressConfigurator().load(configuration); 
    382338        } 
    383339 
  • trunk/source/org/kolaka/freecast/Version.java

    r405 r883  
    2828import java.util.Properties; 
    2929 
     30import org.apache.commons.logging.LogFactory; 
     31 
    3032/** 
    3133 * @author <a href="mailto:alban.peignier@free.fr">Alban Peignier </a> 
     
    3335public class Version { 
    3436 
     37  private static final Version UNDEFINED = new Version("undefined"); 
     38 
    3539        private final String name; 
    3640 
    37         private Version() { 
    38                 Properties properties = new Properties(); 
    39                 InputStream resource = getClass().getResourceAsStream( 
    40                                 "resources/version.properties"); 
    41                 try { 
    42                         if (resource == null) { 
    43                                 throw new IOException("can't find the version resources"); 
    44                         } 
    45                         properties.load(resource); 
    46                 } catch (IOException e) { 
    47                         IllegalStateException exception = new IllegalStateException( 
    48                                         "can't load version information"); 
    49                         exception.initCause(e); 
    50                         throw exception; 
    51                 } 
     41  private Version(String name) { 
     42    this.name = name; 
     43  } 
    5244 
    53                 name = properties.getProperty("name"); 
    54                 if (name == null) { 
    55                         throw new IllegalStateException("no version name found"); 
    56                 } 
    57         } 
     45  private static Version load() { 
     46    Properties properties = new Properties(); 
     47    InputStream resource = Version.class.getResourceAsStream( 
     48        "resources/version.properties"); 
     49    try { 
     50      if (resource == null) { 
     51        throw new IOException("can't find the version resources"); 
     52      } 
     53      properties.load(resource); 
     54    } catch (IOException e) { 
     55      LogFactory.getLog(Version.class).warn("can't load version information", e); 
     56      return UNDEFINED; 
     57    } 
     58 
     59    String name = properties.getProperty("name"); 
     60    if (name == null) { 
     61      LogFactory.getLog(Version.class).warn("no version name found"); 
     62      return UNDEFINED; 
     63    } 
     64    return new Version(name); 
     65  } 
     66 
    5867 
    5968        public String getName() { 
     
    6170        } 
    6271 
    63         private static final Version instance = new Version(); 
     72        private static final Version INSTANCE = load(); 
    6473 
    65         public static Version getInstance() { 
    66                 return instance
     74        public static Version getINSTANCE() { 
     75                return INSTANCE
    6776        } 
    6877 
  • trunk/source/org/kolaka/freecast/manager/http/DescriptorServlet.java

    r405 r883  
    7373                transformer.setParameter("homepage", "http://" + host + ":" 
    7474                                + httpServletRequest.getServerPort()); 
    75                 transformer.setParameter("version", Version.getInstance().getName()); 
     75                transformer.setParameter("version", Version.getINSTANCE().getName()); 
    7676 
    7777                try { 
  • trunk/source/org/kolaka/freecast/setup/Main.java

    r405 r883  
    2424package org.kolaka.freecast.setup; 
    2525 
    26 import java.util.Observable; 
    27 import java.util.Observer; 
    28  
    2926import org.apache.commons.configuration.Configuration; 
    30 import org.kolaka.freecast.lang.mutable.ObservableValue; 
    3127import org.kolaka.freecast.swing.ConfigurableResources; 
    3228import org.kolaka.freecast.swing.Resources; 
    3329import org.kolaka.freecast.swing.SwingApplication; 
     30import org.kolaka.freecast.transport.receiver.TestReceiverConfiguration; 
     31import org.pietschy.wizard.Wizard; 
     32import org.pietschy.wizard.WizardEvent; 
     33import org.pietschy.wizard.WizardListener; 
    3434 
    3535public class Main extends SwingApplication { 
    36          
    37         private SetupDialog dialog; 
    3836 
    39         public Main() { 
    40                 super("setup"); 
    41         } 
    42          
    43         protected void postInit(Configuration configuration) throws Exception { 
    44                 super.postInit(configuration); 
    45                 Resources resources = new ConfigurableResources(configuration.subset("gui.setup")); 
    46                 dialog = new SetupDialog(resources, null); 
    47         } 
    48          
    49         protected void run() throws Exception { 
    50                 dialog.setVisible(true); 
    51                  
    52                 ObservableValue configuration = dialog.getReceiverConfiguration(); 
    53                  
    54                 configuration.addObserver(new Observer() { 
    55                         public void update(Observable o, Object arg) { 
    56                                 System.out.println(arg); 
    57                                 exit(); 
    58                         } 
    59                 }); 
    60                  
    61                 Object lock = new Object(); 
     37  public Main() { 
     38    super("setup"); 
     39  } 
    6240 
    63                 synchronized (lock) { 
    64                         lock.wait(); 
    65                 } 
    66         } 
    67          
    68         protected void exitImpl() throws Exception { 
    69                  
    70         } 
    71          
    72         public static void main(String[] args) throws Exception { 
    73                 new Main().run(args); 
    74         } 
     41  protected void postInit(Configuration configuration) throws Exception { 
     42    super.postInit(configuration); 
     43    Resources resources = new ConfigurableResources(configuration 
     44        .subset("gui.setup")); 
     45  } 
     46 
     47  protected void run() throws Exception { 
     48    final ReceiverWizardModel model = new ReceiverWizardModel(); 
     49    model.setReceiverConfiguration(new TestReceiverConfiguration()); 
     50 
     51    Wizard wizard = new Wizard(model); 
     52    wizard.setDefaultExitMode(Wizard.EXIT_ON_FINISH); 
     53     
     54    wizard.addWizardListener(new WizardListener() { 
     55      public void wizardCancelled(WizardEvent event) { 
     56        exit(); 
     57      } 
     58      public void wizardClosed(WizardEvent event) { 
     59        System.out.println(model.getConfiguration()); 
     60        exit(); 
     61      } 
     62    }); 
     63     
     64    wizard.showInDialog("FreeCast Setup", null, false); 
     65 
     66    Object lock = new Object(); 
     67 
     68    synchronized (lock) { 
     69      lock.wait(); 
     70    } 
     71  } 
     72 
     73  protected void exitImpl() throws Exception { 
     74 
     75  } 
     76 
     77  public static void main(String[] args) throws Exception { 
     78    new Main().run(args); 
     79  } 
    7580 
    7681} 
  • trunk/source/org/kolaka/freecast/setup/SetupAction.java

    r405 r883  
    2525 
    2626import java.awt.event.ActionEvent; 
    27 import java.util.Observable; 
    28 import java.util.Observer; 
    2927 
    3028import javax.swing.JFrame; 
     
    3634import org.kolaka.freecast.swing.Resources; 
    3735import org.kolaka.freecast.swing.ResourcesException; 
    38 import org.kolaka.freecast.transport.receiver.Receiver
    39 import org.kolaka.freecast.transport.receiver.ReceiverConfiguration; 
    40 import org.kolaka.freecast.transport.receiver.ReceiverConfigurator
    41 import org.kolaka.freecast.transport.receiver.ReceiverControler
    42 import org.kolaka.freecast.transport.receiver.StaticReceiverControler; 
     36import org.kolaka.freecast.transport.receiver.ReceiverConfigurations
     37import org.kolaka.freecast.transport.receiver.SourceReceiverConfiguration; 
     38import org.pietschy.wizard.Wizard
     39import org.pietschy.wizard.WizardEvent
     40import org.pietschy.wizard.WizardListener; 
    4341 
    4442public class SetupAction extends BaseAction { 
     
    6058        } 
    6159         
    62         private SetupDialog dialog; 
     60        public void actionPerformed(ActionEvent event) { 
     61    final ReceiverWizardModel model = new ReceiverWizardModel(); 
     62     
     63    SourceReceiverConfiguration configuration = (SourceReceiverConfiguration) node.getReceiverControler().getReceiverConfiguration(); 
     64    model.setReceiverConfiguration(configuration); 
    6365 
    64         public void actionPerformed(ActionEvent event) { 
    65                 if (dialog != null && dialog.isVisible()) { 
    66                         dialog.toFront(); 
    67                         return; 
    68                 } 
    69                  
    70                 try { 
    71                         dialog = new SetupDialog(resources, parent); 
    72                 } catch (ResourcesException exception) { 
    73                         LogFactory.getLog(getClass()).error("Can't create setup dialog",exception); 
    74                         return; 
    75                 } 
    76                  
    77                 dialog.setReceiverConfiguration(node.getReceiverControler().getReceiverConfiguration()); 
    78                  
    79                 dialog.getReceiverConfiguration().addObserver(new Observer() { 
    80                         public void update(Observable o, Object arg) { 
    81                                 ReceiverConfiguration configuration = (ReceiverConfiguration) arg; 
    82                                 LogFactory.getLog(getClass()).debug("configuration returns by setup dialog: " + configuration); 
    83                                  
    84                                 if (configuration == null) { 
    85                                         return; 
    86                                 } 
    87                                  
    88                                 if (configuration.equals(node.getReceiverControler().getReceiverConfiguration())) { 
    89                                         LogFactory.getLog(getClass()).debug("configuration not changed"); 
    90                                         return; 
    91                                 } 
    92                                  
    93                                 try { 
    94                                         ReceiverControler receiverControler = node.getReceiverControler(); 
    95                                         receiverControler.stop(); 
     66    Wizard wizard = new Wizard(model); 
     67    wizard.setDefaultExitMode(Wizard.EXIT_ON_FINISH); 
     68     
     69    wizard.addWizardListener(new WizardListener() { 
     70      public void wizardCancelled(WizardEvent event) { 
     71      } 
     72       
     73      public void wizardClosed(WizardEvent event) { 
     74        SourceReceiverConfiguration configuration = model.getConfiguration(); 
     75        LogFactory.getLog(getClass()).debug("configuration returns by setup dialog: " + configuration); 
    9676 
    97                                         ReceiverConfigurator configurator = ReceiverConfigurator.getInstance(configuration); 
    98                                         Receiver receiver = configurator.configure(configuration); 
    99  
    100                                         LogFactory.getLog(getClass()).debug("new receiver: " + receiver); 
    101  
    102                                         receiverControler = new StaticReceiverControler(receiver); 
    103                                          
    104                                         node.setReceiverControler(receiverControler); 
    105                                          
    106                                         receiverControler.start(); 
    107                                 } catch (Throwable cause) { 
    108                                         new ErrorPane(parent).show("Can't change FreeCast setup", cause); 
    109                                 } 
    110                         } 
    111                 }); 
    112                  
    113                 dialog.setVisible(true); 
     77        if (configuration.equals(node.getReceiverControler().getReceiverConfiguration())) { 
     78          LogFactory.getLog(getClass()).debug("configuration not changed"); 
     79          return; 
     80        } 
     81         
     82        try { 
     83          ReceiverConfigurations.changeReceiver(node, configuration); 
     84        } catch (Throwable cause) { 
     85          new ErrorPane(parent).show("Can't change FreeCast setup", cause); 
     86        } 
     87      } 
     88    }); 
     89     
     90    wizard.showInDialog("FreeCast Setup", null, false); 
    11491        } 
    11592 
  • trunk/source/org/kolaka/freecast/setup/SetupDialog.java

    r865 r883  
    6363 
    6464import org.apache.commons.lang.ObjectUtils; 
    65 import org.apache.commons.lang.StringUtils; 
    6665import org.apache.commons.lang.UnhandledException; 
    6766import org.apache.commons.logging.LogFactory; 
     
    452451                } 
    453452 
    454                 JFormattedTextField.AbstractFormatter urlFormatter = new JFormattedTextField.AbstractFormatter() { 
    455  
    456                         /** 
    457        *  
    458        */ 
    459       private static final long serialVersionUID = 470473741669841009L; 
    460  
    461       public Object stringToValue(String text) throws ParseException { 
    462                                 if (StringUtils.isEmpty(text)) { 
    463                                         return null; 
    464                                 } 
    465                                  
    466                                 try { 
    467                                         return new URL(text); 
    468                                 } catch (MalformedURLException e) { 
    469                                         throw new ParseException("Can't parse the specified URL '" + text + "'", 0); 
    470                                 } 
    471                         } 
    472  
    473                         public String valueToString(Object value) throws ParseException { 
    474                                 if (value == null) { 
    475                                         return ""; 
    476                                 } 
    477  
    478                                 return value.toString(); 
    479                         } 
    480                 }; 
     453                JFormattedTextField.AbstractFormatter urlFormatter = new URLFormatter(); 
    481454                final JFormattedTextField shoutClientURLField = new JFormattedTextField( 
    482455                                urlFormatter); 
  • trunk/source/org/kolaka/freecast/swing/AboutDialog.java

    r405 r883  
    6565                String urlText = "<html><center><p>Visit the website<br><b>http://www.freecast.org</b></p>&nbsp;" 
    6666                                + "<p>Free software under the GNU GPL<br>version " 
    67                                 + Version.getInstance().getName() 
     67                                + Version.getINSTANCE().getName() 
    6868                                + "<br>Copyright 2004 - Alban Peignier</p></center>"; 
    6969                JLabel urlLabel = new JLabel(urlText); 
  • trunk/source/org/kolaka/freecast/transport/receiver/EncoderFormat.java

    r405 r883  
    3131 
    3232        private final float quality; 
     33   
     34  public static final EncoderFormat DEFAULT = new EncoderFormat(2, 44100, 0); 
    3335 
    3436        /** 
  • trunk/source/org/kolaka/freecast/transport/receiver/OggSourceFactoryReceiver.java

    r405 r883  
    4242 * @author <a href="mailto:alban.peignier@free.fr">Alban Peignier</a> 
    4343 */ 
    44 public class OggSourceFactoryReceiver extends OggSourceReceiver { 
     44public abstract class OggSourceFactoryReceiver extends OggSourceReceiver { 
    4545 
    4646        private final OggSourceFactory factory; 
     47   
     48  protected OggSourceFactory getFactory() { 
     49    return factory; 
     50  } 
    4751 
    48         private final ReceiverConfiguration configuration; 
    49          
    50         public ReceiverConfiguration getReceiverConfiguration() { 
    51                 return configuration; 
    52         } 
    53  
    54         public OggSourceFactoryReceiver(OggSourceFactory factory, ReceiverConfiguration configuration) { 
     52        public OggSourceFactoryReceiver(OggSourceFactory factory) { 
    5553                Validate.notNull(factory, "No specified OggSourceFactory"); 
    5654                this.factory = factory; 
    57                 Validate.notNull(configuration, "No specified ReceiverConfiguration"); 
    58                 this.configuration = configuration; 
    5955        } 
    6056 
  • trunk/source/org/kolaka/freecast/transport/receiver/OggSourceReceiver.java

    r405 r883  
    6161 
    6262        private BandwidthControler bandwidthControler = new TimestampBandwidthControler(); 
     63   
     64  protected BandwidthControler getBandwidthControler() { 
     65    return bandwidthControler; 
     66  } 
    6367 
    6468        public void setPacketChecksummer(PacketChecksummer checksummer) { 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistEncoderOggSourceFactory.java

    r405 r883  
    2525 
    2626import java.io.IOException; 
     27import java.net.URI; 
    2728import java.net.URL; 
    2829 
     
    9495                                .getQuality()), format.getSampleRate()); 
    9596        } 
     97   
     98  public EncoderFormat getFormat() { 
     99    return format; 
     100  } 
     101   
     102  public URI getPlaylistURI() { 
     103    return playlist.getDefinitionURI(); 
     104  } 
    96105 
    97106} 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistEncoderReceiver.java

    r405 r883  
    3131        public PlaylistEncoderReceiver(URL playlist, EncoderFormat format) 
    3232                        throws IOException { 
    33                 super(new PlaylistEncoderOggSourceFactory(playlist, format), PlaylistEncoderReceiverConfiguration.getInstance(playlist)); 
     33                super(new PlaylistEncoderOggSourceFactory(playlist, format)); 
    3434        } 
    3535 
    3636        public PlaylistEncoderReceiver(Playlist playlist, EncoderFormat format) 
    3737                        throws IOException { 
    38                 super(new PlaylistEncoderOggSourceFactory(playlist, format), PlaylistEncoderReceiverConfiguration.getInstance(playlist)); 
     38                super(new PlaylistEncoderOggSourceFactory(playlist, format)); 
    3939        } 
     40   
     41  public ReceiverConfiguration getReceiverConfiguration() { 
     42    PlaylistEncoderReceiverConfiguration configuration = new PlaylistEncoderReceiverConfiguration(); 
     43     
     44    PlaylistEncoderOggSourceFactory factory = (PlaylistEncoderOggSourceFactory) getFactory(); 
     45    configuration.setEncoderFormat(factory.getFormat()); 
     46    configuration.setUri(factory.getPlaylistURI()); 
     47     
     48    return configuration; 
     49  } 
    4050 
    4151} 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistEncoderReceiverConfiguration.java

    r405 r883  
    3030import org.kolaka.freecast.resource.URIs; 
    3131 
    32 public class PlaylistEncoderReceiverConfiguration extends ReceiverConfiguration { 
     32public class PlaylistEncoderReceiverConfiguration extends SourceReceiverConfiguration { 
    3333         
    3434        private URI uri; 
     
    4141                this.uri = uri; 
    4242        } 
     43   
     44  private EncoderFormat encoderFormat = EncoderFormat.DEFAULT; 
    4345 
     46  public EncoderFormat getEncoderFormat() { 
     47    return encoderFormat; 
     48  } 
     49   
     50  public void setEncoderFormat(EncoderFormat encoderFormat) { 
     51    this.encoderFormat = encoderFormat; 
     52  } 
     53   
    4454        public PlaylistEncoderReceiverConfiguration(URI uri) { 
    4555                Validate.notNull(uri, "No specified URI"); 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistEncoderReceiverConfigurator.java

    r405 r883  
    2828public class PlaylistEncoderReceiverConfigurator extends ReceiverConfigurator { 
    2929 
    30         public Receiver configure(ReceiverConfiguration configuration) throws IOException { 
     30        public SourceReceiver configure(ReceiverConfiguration configuration) throws IOException { 
    3131                return configure((PlaylistEncoderReceiverConfiguration) configuration); 
    3232        } 
    3333         
    34         public Receiver configure(PlaylistEncoderReceiverConfiguration configuration) 
     34        public SourceReceiver configure(PlaylistEncoderReceiverConfiguration configuration) 
    3535                throws IOException  
    3636        { 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistOggSourceFactory.java

    r405 r883  
    2727import java.io.IOException; 
    2828import java.io.InputStream; 
     29import java.net.URI; 
    2930import java.net.URL; 
    3031 
     
    5960                                .getDescription()); 
    6061        } 
     62   
     63  public URI getPlaylistURI() { 
     64    return playlist.getDefinitionURI(); 
     65  } 
    6166 
    6267} 
  • trunk/source/org/kolaka/freecast/transport/receiver/PlaylistReceiver.java

    r405 r883  
    2727import java.net.URL; 
    2828 
     29import org.apache.commons.io.FileUtils; 
     30 
    2931/** 
    3032 *  
     
    3537 
    3638        public PlaylistReceiver(URL playlist) throws IOException { 
    37                 super(new PlaylistOggSourceFactory(playlist), PlaylistReceiverConfiguration.getInstance(playlist)); 
     39                super(new PlaylistOggSourceFactory(playlist)); 
    3840        } 
    3941 
    4042        public PlaylistReceiver(Playlist playlist) { 
    41                 super(new PlaylistOggSourceFactory(playlist), PlaylistReceiverConfiguration.getInstance(playlist)); 
     43                super(new PlaylistOggSourceFactory(playlist)); 
    4244        } 
     45   
     46  public ReceiverConfiguration getReceiverConfiguration() { 
     47    PlaylistReceiverConfiguration configuration = new PlaylistReceiverConfiguration(); 
     48     
     49    PlaylistOggSourceFactory factory = (PlaylistOggSourceFactory) getFactory(); 
     50    configuration.setUri(factory.getPlaylistURI()); 
     51     
     52<