Changeset 902
- Timestamp:
- 10/16/06 20:54:17 (2 years ago)
- Files:
-
- trunk/source/org/kolaka/freecast/Application.java (modified) (3 diffs)
- trunk/source/org/kolaka/freecast/config/ConfigurationLoader.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/config/Configurations.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java (modified) (7 diffs)
- trunk/source/org/kolaka/freecast/config/InetSocketAddressConfigurator.java (modified) (1 diff)
- trunk/source/org/kolaka/freecast/setup/Main.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/transport/receiver/PlaylistReceiver.java (modified) (1 diff)
- trunk/source/org/kolaka/freecast/transport/receiver/PlaylistReceiverConfiguration.java (modified) (2 diffs)
- trunk/source/org/kolaka/freecast/transport/receiver/ReceiverConfigurationLoader.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/source/org/kolaka/freecast/Application.java
r893 r902 36 36 import org.apache.commons.cli.Options; 37 37 import org.apache.commons.cli.ParseException; 38 import org.apache.commons.configuration.Configuration; 39 import org.apache.commons.configuration.ConfigurationException; 38 40 import org.apache.commons.configuration.HierarchicalConfiguration; 39 41 import org.apache.commons.lang.StringUtils; … … 65 67 private HierarchicalConfiguration configuration; 66 68 69 private ConfigurationLoader configurationLoader; 70 67 71 protected Application(String name) { 68 72 this.name = name; 69 73 this.resourceLocator = createResourceLocator(); 70 74 } 75 76 public Configuration getUserConfiguration() { 77 return configurationLoader.getUserConfiguration(); 78 } 79 80 public void saveUserConfiguration() throws ConfigurationException { 81 configurationLoader.saveUserConfiguration(); 82 } 71 83 72 84 private ResourceLocator createResourceLocator() { … … 150 162 boolean dryrun = line.hasOption(dryrunOption.getOpt()); 151 163 152 ConfigurationLoader loader = createConfigurationLoader();153 loader.setResourceLocator(getResourceLocator());164 configurationLoader = createConfigurationLoader(); 165 configurationLoader.setResourceLocator(getResourceLocator()); 154 166 155 167 if (line.hasOption(configOption.getOpt())) { 156 URI userURI = new URI(line.getOptionValue(configOption.getOpt()));157 loader.setUserURI(userURI);168 URI commandLineURI = new URI(line.getOptionValue(configOption.getOpt())); 169 configurationLoader.setCommandLineURI(commandLineURI); 158 170 } 159 171 if (line.hasOption(propertyOption.getOpt())) { 160 172 String values[] = line.getOptionValues(propertyOption.getOpt()); 161 173 for (int i = 0; i < values.length; i += 2) { 162 loader.addUserProperty(values[i], values[i + 1]);174 configurationLoader.addCommandLineProperty(values[i], values[i + 1]); 163 175 } 164 176 } 165 177 166 loader.load();167 168 this.configuration = loader.getRootConfiguration();178 configurationLoader.load(); 179 180 this.configuration = configurationLoader.getRootConfiguration(); 169 181 postInit(configuration); 170 182 trunk/source/org/kolaka/freecast/config/ConfigurationLoader.java
r893 r902 26 26 import java.net.URI; 27 27 28 import org.apache.commons.configuration.Configuration; 28 29 import org.apache.commons.configuration.ConfigurationException; 29 30 import org.apache.commons.configuration.HierarchicalConfiguration; … … 41 42 HierarchicalConfiguration getRootConfiguration(); 42 43 43 void set UserURI(URI userURI);44 void setCommandLineURI(URI userURI); 44 45 45 void add UserProperty(String property, String value);46 void addCommandLineProperty(String property, String value); 46 47 47 48 void setResourceLocator(ResourceLocator locator); 49 50 Configuration getUserConfiguration(); 51 52 void saveUserConfiguration() throws ConfigurationException; 53 48 54 } trunk/source/org/kolaka/freecast/config/Configurations.java
r901 r902 32 32 public static Configuration subset(Configuration parent, String prefix) { 33 33 Configuration child = parent.subset(prefix); 34 return initFrom(child, parent);34 return initFrom(child, parent); 35 35 } 36 36 … … 41 41 public static Configuration initFrom(Configuration child, Configuration parent) { 42 42 if (child instanceof HierarchicalConfiguration && parent instanceof HierarchicalConfiguration) { 43 initFrom((HierarchicalConfiguration) child, (HierarchicalConfiguration) parent);44 43 } else if (child instanceof AbstractConfiguration && parent instanceof AbstractConfiguration) { 45 44 initFrom((AbstractConfiguration) child, (AbstractConfiguration) parent); trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java
r901 r902 24 24 package org.kolaka.freecast.config; 25 25 26 import java.io.File; 26 27 import java.net.URI; 27 28 import java.net.URL; … … 32 33 import org.apache.commons.configuration.BaseConfiguration; 33 34 import org.apache.commons.configuration.CombinedConfiguration; 35 import org.apache.commons.configuration.Configuration; 34 36 import org.apache.commons.configuration.ConfigurationException; 35 37 import org.apache.commons.configuration.DefaultConfigurationBuilder; 38 import org.apache.commons.configuration.FileConfiguration; 36 39 import org.apache.commons.configuration.HierarchicalConfiguration; 37 40 import org.apache.commons.configuration.MapConfiguration; 38 41 import org.apache.commons.configuration.PropertiesConfiguration; 39 42 import org.apache.commons.configuration.XMLConfiguration; 43 import org.apache.commons.lang.SystemUtils; 40 44 import org.apache.commons.logging.LogFactory; 41 45 import org.kolaka.freecast.resource.ResourceLocator; … … 51 55 private final String defaultsName; 52 56 53 private URI userURI; 54 55 protected Properties userProperties = new Properties(); 57 private URI commandLineURI; 58 59 private File userFile = new File(new File(SystemUtils.USER_HOME, ".freecast"), "config.xml"); 60 61 protected Properties commandLineProperties = new Properties(); 56 62 57 63 protected HierarchicalConfiguration configuration; … … 62 68 this.locator = locator; 63 69 } 64 65 public void set UserURI(URI userURI) {66 this. userURI = userURI;67 } 68 69 public void add UserProperty(String property, String value) {70 userProperties.put(property, value);70 71 public void setCommandLineURI(URI commandLineURI) { 72 this.commandLineURI = commandLineURI; 73 } 74 75 public void addCommandLineProperty(String property, String value) { 76 commandLineProperties.put(property, value); 71 77 } 72 78 … … 88 94 } 89 95 90 protected AbstractConfiguration load UserConfiguration()96 protected AbstractConfiguration loadCommandLineConfiguration() 91 97 throws ConfigurationException { 92 if ( userURI == null) {98 if (commandLineURI == null) { 93 99 return new BaseConfiguration(); 94 100 } 95 101 96 102 LogFactory.getLog(getClass()).debug( 97 "load the user configuration from " + userURI);103 "load the command line configuration from " + commandLineURI); 98 104 XMLConfiguration configuration = new XMLConfiguration(); 99 105 try { 100 configuration.load(locator.openResource( userURI));106 configuration.load(locator.openResource(commandLineURI)); 101 107 } catch (ResourceLocator.Exception e) { 102 108 throw new ConfigurationException( 103 "Can't load the user configuration URI " + userURI, e); 104 } 105 return configuration; 106 } 109 "Can't load the command line configuration URI " + commandLineURI, e); 110 } 111 return configuration; 112 } 113 114 protected XMLConfiguration loadUserConfiguration() 115 throws ConfigurationException { 116 LogFactory.getLog(getClass()).debug( 117 "load the user configuration from " + userFile); 118 XMLConfiguration configuration = new XMLConfiguration(userFile); 119 configuration.setRootElementName("freecast"); 120 try { 121 configuration.load(); 122 } catch (ConfigurationException e) { 123 LogFactory.getLog(getClass()).info("no user configuration found"); 124 LogFactory.getLog(getClass()).debug( 125 "can't load user configuration from " + userFile, e); 126 } 127 return configuration; 128 } 129 130 public Configuration getUserConfiguration() { 131 return userConfiguration; 132 } 133 134 public void saveUserConfiguration() throws ConfigurationException { 135 userFile.getParentFile().mkdirs(); 136 userConfiguration.save(); 137 } 107 138 108 139 public HierarchicalConfiguration getRootConfiguration() { … … 111 142 112 143 private static final AbstractConfiguration EMPTY_CONFIGURATION = new PropertiesConfiguration(); 144 145 private XMLConfiguration userConfiguration; 113 146 114 147 protected AbstractConfiguration loadDefaultConfiguration(String name) … … 148 181 configuration.setDelimiterParsingDisabled(true); 149 182 150 if (! userProperties.isEmpty()) {151 LogFactory.getLog(getClass()).trace("use user properties: " + userProperties);183 if (!commandLineProperties.isEmpty()) { 184 LogFactory.getLog(getClass()).trace("use command line properties: " + commandLineProperties); 152 185 configuration 153 .addConfiguration(new MapConfiguration(userProperties)); 154 } 155 configuration.addConfiguration(loadUserConfiguration()); 186 .addConfiguration(new MapConfiguration(commandLineProperties)); 187 } 188 configuration.addConfiguration(loadCommandLineConfiguration()); 189 userConfiguration = loadUserConfiguration(); 190 configuration.addConfiguration(userConfiguration); 156 191 completeConfiguration(configuration); 157 192 trunk/source/org/kolaka/freecast/config/InetSocketAddressConfigurator.java
r883 r902 30 30 public class InetSocketAddressConfigurator { 31 31 32 public static final String PROPERTY_PORT = "port"; 33 public static final String PROPERTY_HOST = "host"; 34 32 35 public InetSocketAddress load(Configuration configuration) { 33 String host = configuration.getString( "host", "0.0.0.0");34 int port = configuration.getInt( "port");36 String host = configuration.getString(PROPERTY_HOST, "0.0.0.0"); 37 int port = configuration.getInt(PROPERTY_PORT); 35 38 36 39 return new InetSocketAddress(host, port); 37 40 } 38 41 39 42 } trunk/source/org/kolaka/freecast/setup/Main.java
r901 r902 24 24 package org.kolaka.freecast.setup; 25 25 26 import org.apache.commons.configuration.ConfigurationException; 26 27 import org.apache.commons.configuration.HierarchicalConfiguration; 28 import org.apache.commons.configuration.XMLConfiguration; 29 import org.apache.commons.logging.LogFactory; 27 30 import org.kolaka.freecast.config.Configurations; 28 31 import org.kolaka.freecast.swing.ConfigurableResources; 29 32 import org.kolaka.freecast.swing.Resources; 30 33 import org.kolaka.freecast.swing.SwingApplication; 34 import org.kolaka.freecast.transport.receiver.ReceiverConfigurationLoader; 31 35 import org.kolaka.freecast.transport.receiver.TestReceiverConfiguration; 32 36 import org.pietschy.wizard.Wizard; … … 57 61 } 58 62 public void wizardClosed(WizardEvent event) { 59 System.out.println(model.getConfiguration()); 63 // System.out.println(model.getConfiguration()); 64 new ReceiverConfigurationLoader().save(model.getConfiguration(), getUserConfiguration()); 65 66 try { 67 saveUserConfiguration(); 68 } catch (ConfigurationException e) { 69 LogFactory.getLog(Main.this.getClass()).error("can't save configuration", e); 70 } 60 71 exit(); 61 72 } trunk/source/org/kolaka/freecast/transport/receiver/PlaylistReceiver.java
r883 r902 54 54 long bandwidth = 55 55 ((StaticBandwidthControler) bandwidthControler).getBandwidth() / FileUtils.ONE_KB; 56 configuration.setBandwidth( bandwidth);56 configuration.setBandwidth((int) bandwidth); 57 57 } 58 58 trunk/source/org/kolaka/freecast/transport/receiver/PlaylistReceiverConfiguration.java
r883 r902 33 33 34 34 private URI uri; 35 private longbandwidth;35 private int bandwidth; 36 36 37 37 public URI getUri() { … … 43 43 } 44 44 45 public longgetBandwidth() {45 public int getBandwidth() { 46 46 return bandwidth; 47 47 } 48 48 49 public void setBandwidth( longbandwidth) {49 public void setBandwidth(int bandwidth) { 50 50 this.bandwidth = bandwidth; 51 51 } trunk/source/org/kolaka/freecast/transport/receiver/ReceiverConfigurationLoader.java
r901 r902 24 24 package org.kolaka.freecast.transport.receiver; 25 25 26 import java.net.InetSocketAddress; 26 27 import java.net.URI; 27 28 import java.net.URISyntaxException; 28 29 30 import org.apache.commons.configuration.Configuration; 29 31 import org.apache.commons.configuration.ConfigurationException; 30 32 import org.apache.commons.configuration.DataConfiguration; … … 34 36 35 37 public class ReceiverConfigurationLoader { 38 39 private static final String PROPERTY_QUALITY = "quality"; 40 private static final String PROPERTY_SAMPLERATE = "sampleRate"; 41 private static final String PROPERTY_CHANNELS = "channels"; 42 private static final String CLASS_PLAYLISTENCODER = "encoder-playlist"; 43 private static final String PROPERTY_BANDWIDTH = "bandwidth"; 44 private static final String CLASS_PLAYLIST = "playlist"; 45 private static final String CLASS_SHOUTSERVER = "shoutserver"; 46 private static final String CLASS_TEST = "test"; 47 private static final String CLASS_PEER = "peer"; 48 private static final String CLASS_SHOUTCLIENT = "shoutclient"; 49 50 private static final String PROPERTY_CLASS = "class"; 51 private static final String PROPERTY_URL = "url"; 52 private static final String PROPERTY_LISTENADDRESS = "listenaddress"; 53 54 private static final String PREFIX = "node.receiver."; 55 56 private final InetSocketAddressConfigurator inetSocketAddressConfigurator = new InetSocketAddressConfigurator(); 57 58 /** 59 * 60 * TODO subset(...).setProperty doesn't work for HierarchicalConfiguration 61 */ 62 public void save(ReceiverConfiguration configuration, Configuration receiverConfiguration) { 63 if (configuration instanceof ShoutClientReceiverConfiguration) { 64 receiverConfiguration .setProperty(PREFIX + PROPERTY_CLASS, CLASS_SHOUTCLIENT); 65 ShoutClientReceiverConfiguration shoutClientReceiverConfiguration = (ShoutClientReceiverConfiguration) configuration; 66 receiverConfiguration.setProperty(PREFIX + PROPERTY_URL, shoutClientReceiverConfiguration.getUrl()); 67 } else if (configuration instanceof PeerReceiverConfiguration) { 68 receiverConfiguration.setProperty(PREFIX + PROPERTY_CLASS, CLASS_PEER); 69 } else if (configuration instanceof TestReceiverConfiguration) { 70 receiverConfiguration.setProperty(PREFIX + PROPERTY_CLASS, CLASS_TEST); 71 } else if (configuration instanceof ShoutServerReceiverConfiguration) { 72 receiverConfiguration.setProperty(PREFIX + PROPERTY_CLASS, CLASS_SHOUTSERVER); 73 ShoutServerReceiverConfiguration shoutServerReceiverConfiguration = (ShoutServerReceiverConfiguration) configuration; 74 75 InetSocketAddress address = shoutServerReceiverConfiguration.getListenAddress(); 76 String addressPrefix = PREFIX + "." + PROPERTY_LISTENADDRESS + "."; 77 78 receiverConfiguration.setProperty(addressPrefix + InetSocketAddressConfigurator.PROPERTY_HOST, address.getHostName()); 79 receiverConfiguration.setProperty(addressPrefix + InetSocketAddressConfigurator.PROPERTY_PORT, new Integer(address.getPort())); 80 81 } else if (configuration instanceof PlaylistReceiverConfiguration) { 82 receiverConfiguration.setProperty(PREFIX + PROPERTY_CLASS, CLASS_PLAYLIST); 83 PlaylistReceiverConfiguration playlistReceiverConfiguration = (PlaylistReceiverConfiguration) configuration; 84 receiverConfiguration.setProperty(PREFIX + PROPERTY_URL, playlistReceiverConfiguration.getUri()); 85 receiverConfiguration.setProperty(PREFIX + PROPERTY_BANDWIDTH, new Integer(playlistReceiverConfiguration.getBandwidth())); 86 } else if (configuration instanceof PlaylistEncoderReceiverConfiguration) { 87 receiverConfiguration.setProperty(PREFIX + PROPERTY_CLASS, CLASS_PLAYLISTENCODER); 88 PlaylistEncoderReceiverConfiguration playlistEncoderReceiverConfiguration = (PlaylistEncoderReceiverConfiguration) configuration; 89 receiverConfiguration.setProperty(PREFIX + PROPERTY_URL, playlistEncoderReceiverConfiguration.getUri()); 90 EncoderFormat encoderFormat = playlistEncoderReceiverConfiguration.getEncoderFormat(); 91 receiverConfiguration.setProperty(PREFIX + PROPERTY_CHANNELS, new Integer(encoderFormat.getChannels())); 92 receiverConfiguration.setProperty(PREFIX + PROPERTY_QUALITY, new Float(encoderFormat.getQuality())); 93 receiverConfiguration.setProperty(PREFIX + PROPERTY_SAMPLERATE, new Integer(encoderFormat.getSampleRate())); 94 } else { 95 throw new IllegalArgumentException("Unknown receiver : '" + configuration + "'"); 96 } 97 } 36 98 37 99 public ReceiverConfiguration load(DataConfiguration receiverConfiguration) 38 100 throws ConfigurationException { 39 String receiverClass = receiverConfiguration.getString( "class");101 String receiverClass = receiverConfiguration.getString(PROPERTY_CLASS); 40 102 41 if (receiverClass.equals( "shoutclient")) {103 if (receiverClass.equals(CLASS_SHOUTCLIENT)) { 42 104 ShoutClientReceiverConfiguration configuration = new ShoutClientReceiverConfiguration(); 43 configuration.setUrl(receiverConfiguration.getURL( "url"));105 configuration.setUrl(receiverConfiguration.getURL(PROPERTY_URL)); 44 106 return configuration; 45 107 } 46 108 47 if (receiverClass.equals( "peer")) {109 if (receiverClass.equals(CLASS_PEER)) { 48 110 return new PeerReceiverConfiguration(); 49 111 } 50 112 51 if (receiverClass.equals( "test")) {113 if (receiverClass.equals(CLASS_TEST)) { 52 114 return new TestReceiverConfiguration(); 53 115 } 54 116 55 if (receiverClass.equals( "shoutserver")) {117 if (receiverClass.equals(CLASS_SHOUTSERVER)) { 56 118 ShoutServerReceiverConfiguration configuration = new ShoutServerReceiverConfiguration(); 57 configuration.setListenAddress( new InetSocketAddressConfigurator()58 .load(Configurations.subset(receiverConfiguration, "listenaddress")));119 configuration.setListenAddress(inetSocketAddressConfigurator 120 .load(Configurations.subset(receiverConfiguration, PROPERTY_LISTENADDRESS))); 59 121 return configuration; 60 122 } 61 123 62 if (receiverClass.equals( "playlist")63 || receiverClass.equals( "encoder-playlist")) {64 String playlistURIString = receiverConfiguration.getString( "url");124 if (receiverClass.equals(CLASS_PLAYLIST) 125 || receiverClass.equals(CLASS_PLAYLISTENCODER)) { 126 String playlistURIString = receiverConfiguration.getString(PROPERTY_URL); 65 127 URI playlistURI = null; 66 128 try { … … 71 133 } 72 134 73 if (receiverClass.equals( "playlist")) {135 if (receiverClass.equals(CLASS_PLAYLIST)) { 74 136 PlaylistReceiverConfiguration configuration = new PlaylistReceiverConfiguration(); 75 137 configuration.setUri(playlistURI); 76 138 configuration.setBandwidth(receiverConfiguration 77 .getInt( "bandwidth", 40));139 .getInt(PROPERTY_BANDWIDTH, 40)); 78 140 79 141 LogFactory.getLog(getClass()).warn( … … 84 146 PlaylistEncoderReceiverConfiguration configuration = new PlaylistEncoderReceiverConfiguration(); 85 147 86 int channels = receiverConfiguration.getInt( "channels",148 int channels = receiverConfiguration.getInt(PROPERTY_CHANNELS, 87 149 EncoderFormat.DEFAULT.getChannels()); 88 int sampleRate = receiverConfiguration.getInt( "sampleRate",150 int sampleRate = receiverConfiguration.getInt(PROPERTY_SAMPLERATE, 89 151 EncoderFormat.DEFAULT.getSampleRate()); 90 float quality = receiverConfiguration.getFloat( "quality",152 float quality = receiverConfiguration.getFloat(PROPERTY_QUALITY, 91 153 EncoderFormat.DEFAULT.getQuality()); 92 154
