You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by th...@apache.org on 2012/04/16 15:02:04 UTC

svn commit: r1326586 - in /river/jtsk/skunk/easystart: scala-src/org/apache/river/scala/ src-extra/org/apache/river/extra/easystart/ src-extra/org/apache/river/extra/easystart/config/ src-extra/org/apache/river/extra/easystart/config/settings/ src-extr...

Author: thobbs
Date: Mon Apr 16 13:02:03 2012
New Revision: 1326586

URL: http://svn.apache.org/viewvc?rev=1326586&view=rev
Log:
Working easy config for default river services

Added:
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartAll.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/AbstractEasyConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ApplicationOptions.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/DefaultOptions.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/example/
Removed:
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbsolutePath.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/LookupServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/MahaloServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/OutriggerServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/DefaultOptions.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Options.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/SettingsFactory.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/discovery/
Modified:
    river/jtsk/skunk/easystart/scala-src/org/apache/river/scala/Djinn.scala
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/CheckServices.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartMahaloService.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartOutriggerService.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConfigurationFactory.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/JavaSpaceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/LookupServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/TransactionServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ClasspathSetting.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/CodebaseSetting.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/GroupedSetting.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/PolicySetting.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ServerExporterSetting.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Setting.java

Modified: river/jtsk/skunk/easystart/scala-src/org/apache/river/scala/Djinn.scala
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/scala-src/org/apache/river/scala/Djinn.scala?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/scala-src/org/apache/river/scala/Djinn.scala (original)
+++ river/jtsk/skunk/easystart/scala-src/org/apache/river/scala/Djinn.scala Mon Apr 16 13:02:03 2012
@@ -32,11 +32,11 @@ import com.sun.jini.lookup.entry.LookupA
 import net.jini.lookup.entry.Name
 import net.jini.core.entry.Entry
 import java.util.Arrays
-import org.apache.river.extra.easystart.discovery.MulticastDiscovery
-import org.apache.river.extra.easystart.discovery.UnicastDiscovery
+import org.apache.river.extra.discovery.MulticastDiscovery
+import org.apache.river.extra.discovery.UnicastDiscovery
 import net.jini.core.lookup.ServiceTemplate
 import net.jini.space.JavaSpace
-import org.apache.river.extra.easystart.discovery.EasyDiscovery
+import org.apache.river.extra.discovery.EasyDiscovery
 import net.jini.core.discovery.LookupLocator
 import scala.collection.mutable.ListBuffer
 import net.jini.core.lookup.ServiceID

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/CheckServices.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/CheckServices.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/CheckServices.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/CheckServices.java Mon Apr 16 13:02:03 2012
@@ -46,9 +46,14 @@ public class CheckServices {
 		System.setSecurityManager(new RMISecurityManager());
 		
 		checkHttpServer(port);
+		
 		checkLookupServices();
 		checkSpaces();
 		checkTransactionManagers();
+		
+		checkLookupServices("jini://localhost:4161");
+		checkSpaces("jini://localhost:4161");
+		checkTransactionManagers("jini://localhost:4161");
 //		
 //		checkAll();
 	}
@@ -65,7 +70,10 @@ public class CheckServices {
 	}
 
 	private static void checkLookupServices() throws IOException, ClassNotFoundException {
-		LookupLocator ll = new LookupLocator("jini://localhost");
+		checkLookupServices("jini://localhost");
+	}
+	private static void checkLookupServices(String lus) throws IOException, ClassNotFoundException {
+		LookupLocator ll = new LookupLocator(lus);
 		ServiceRegistrar sr = ll.getRegistrar();
 		
 		if(null != sr) {
@@ -88,7 +96,10 @@ public class CheckServices {
 	}
 	
 	private static void checkSpaces() throws IOException, ClassNotFoundException {
-		LookupLocator ll = new LookupLocator("jini://localhost");
+		checkSpaces("jini://localhost");
+	}
+	private static void checkSpaces(String lus) throws IOException, ClassNotFoundException {
+		LookupLocator ll = new LookupLocator(lus);
 		ServiceRegistrar sr = ll.getRegistrar();
 		
 		if(null != sr) {
@@ -111,7 +122,10 @@ public class CheckServices {
 	}
 	
 	private static void checkTransactionManagers() throws IOException, ClassNotFoundException {
-		LookupLocator ll = new LookupLocator("jini://localhost");
+		checkTransactionManagers("jini://localhost");
+	}
+	private static void checkTransactionManagers(String lus) throws IOException, ClassNotFoundException {
+		LookupLocator ll = new LookupLocator(lus);
 		ServiceRegistrar sr = ll.getRegistrar();
 		
 		if(null != sr) {

Added: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartAll.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartAll.java?rev=1326586&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartAll.java (added)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartAll.java Mon Apr 16 13:02:03 2012
@@ -0,0 +1,66 @@
+package org.apache.river.extra.easystart;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+import net.jini.config.ConfigurationException;
+
+import org.apache.river.extra.easystart.config.ApplicationOptions;
+import org.apache.river.extra.easystart.config.ConfigurationFactory;
+import org.apache.river.extra.easystart.config.LookupServiceConfiguration;
+
+import com.sun.jini.start.ServiceStarter;
+
+public class StartAll {
+
+	private static final Logger log = Logger.getLogger(StartAll.class.getName());
+	
+	private static final int RIVER_HOME_INDEX = 0;
+	private static final int HTTP_PORT_INDEX = 1;
+	
+	public static void main(String[] args) throws ConfigurationException, IOException {
+		validateArgs(args);
+		
+		final String RIVER_HOME = args[RIVER_HOME_INDEX];
+		final int HTTP_PORT = Integer.parseInt(args[HTTP_PORT_INDEX]);
+		
+		System.getProperties().setProperty("RIVER_HOME", RIVER_HOME);
+		
+		log.info("Using RIVER_HOME="+RIVER_HOME);
+		log.info("Using HTTP_PORT="+HTTP_PORT);
+		
+		ApplicationOptions options = new ApplicationOptions();
+		options.setHttpOptions("localhost", HTTP_PORT, true);
+		options.setJiniPort(4161);
+		options.addLookupGroup("example");
+		
+		ConfigurationFactory configFac = new ConfigurationFactory(options);
+		
+		LookupServiceConfiguration config = configFac.lookupServiceConfig();
+		config.addMemberGroup("example");
+		ServiceStarter.main(config.riverConfig());
+		
+		ServiceStarter.main(configFac.transactionServiceConfig().riverConfig());
+		ServiceStarter.main(configFac.spaceConfig().riverConfig());
+	}
+	
+	private static void validateArgs(String[] args) {
+		if(null == args || 2 != args.length) {
+			throw new IllegalArgumentException("Expected first value of array to be RIVER_HOME");
+		}
+		
+		File riverHomeDir = new File(args[RIVER_HOME_INDEX]);
+		if(!(riverHomeDir.exists() && riverHomeDir.isDirectory())) {
+			throw new IllegalArgumentException("River home ["+args[RIVER_HOME_INDEX]+"] either doesn't exist or is not a directory");
+		}
+		
+		try {
+			Integer.parseInt(args[HTTP_PORT_INDEX]);
+		} catch (NumberFormatException nfe) {
+			throw new IllegalArgumentException("Unexpected value found for HTTP port", nfe);
+		}
+		
+	}
+	
+}

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java Mon Apr 16 13:02:03 2012
@@ -24,9 +24,9 @@ import java.util.logging.Logger;
 
 import net.jini.config.ConfigurationException;
 
+import org.apache.river.extra.easystart.config.ApplicationOptions;
 import org.apache.river.extra.easystart.config.ConfigurationFactory;
 import org.apache.river.extra.easystart.config.LookupServiceConfiguration;
-import org.apache.river.extra.easystart.config.settings.DefaultOptions;
 
 import com.sun.jini.start.ServiceStarter;
 
@@ -52,42 +52,7 @@ public class StartLookupService {
 		log.info("Using RIVER_HOME="+RIVER_HOME);
 		log.info("Using HTTP_PORT="+HTTP_PORT);
 		
-//		final String riverHome = "/home/tom/projects/river/easystart";
-//		final String pathToConfig = "/home/tom/projects/river/easystart/src-extra/empty.config";
-//		final String pathToPolicy = "/home/tom/projects/river/easystart/src-extra/outrigger.policy";
-		
-		//this works because these files are in river-extras.jar which is on the CP
-//		final String pathToConfig = "empty.config";
-//		final String pathToPolicy = "outrigger.policy";
-		
-//		final String classpath = "/home/tom/projects/river/easystart/lib/reggie.jar";
-		
-//		LookupServiceConfiguration config = new LookupServiceConfiguration(8080,
-//				riverHome,
-//				new AbsolutePath(pathToConfig),
-//				new AbsolutePath(pathToPolicy),
-//				new AbsolutePath[] {
-//					new AbsolutePath(classpath)
-////					new AbsolutePath("/home/tom/projects/river/easystart/lib/river-extras.jar")
-//				}
-//		);
-//		config.addLookupGroup("LUG1");
-//		config.addLookupGroup("LUG2");
-//		config.addMemberGroup("Lester");
-//		config.addMemberGroup("Jeff");
-//		config.addRequiredJar("reggie-dl.jar");
-//		config.addRequiredJar("jsk-dl.jar");
-////		config.addRequiredJar("river-extras.jar");
-		
-//		LookupServiceConfiguration config = new LookupServiceConfiguration();
-//		VelocityConfigurationBuilder vcb = new VelocityConfigurationBuilder();
-//		vcb.setCodebase("http://localhost:8080/reggie-dl.jar http://localhost:8080/jsk-dl.jar");
-//		Configuration config = vcb.createConfiguration();
-		
-//		Configuration config = new ConventionalLookupServiceConfiguration(new String[0]);
-//		Configuration config = LookupServiceConfiguration.config();
-		
-		DefaultOptions options = new DefaultOptions();
+		ApplicationOptions options = new ApplicationOptions();
 		
 		ConfigurationFactory configFac = new ConfigurationFactory(options);
 		LookupServiceConfiguration config = configFac.lookupServiceConfig();

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartMahaloService.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartMahaloService.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartMahaloService.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartMahaloService.java Mon Apr 16 13:02:03 2012
@@ -24,6 +24,12 @@ import java.util.logging.Logger;
 
 import net.jini.config.ConfigurationException;
 
+import org.apache.river.extra.easystart.config.ApplicationOptions;
+import org.apache.river.extra.easystart.config.ConfigurationFactory;
+import org.apache.river.extra.easystart.config.TransactionServiceConfiguration;
+
+import com.sun.jini.start.ServiceStarter;
+
 public class StartMahaloService {
 
 
@@ -46,8 +52,13 @@ public class StartMahaloService {
 		log.info("Using RIVER_HOME="+RIVER_HOME);
 		log.info("Using HTTP_PORT="+HTTP_PORT);
 		
-//		Configuration config = TransactionServiceConfiguration.config();
-//		ServiceStarter.main(config);
+		ApplicationOptions options = new ApplicationOptions();
+		
+		ConfigurationFactory configFac = new ConfigurationFactory(options);
+		TransactionServiceConfiguration config = configFac.transactionServiceConfig();
+		config.addLookupGroup("Lester").addLookupGroup("Jeff");
+		
+		ServiceStarter.main(config.riverConfig());
 	}
 
 	private static void validateArgs(String[] args) {

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartOutriggerService.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartOutriggerService.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartOutriggerService.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartOutriggerService.java Mon Apr 16 13:02:03 2012
@@ -24,6 +24,12 @@ import java.util.logging.Logger;
 
 import net.jini.config.ConfigurationException;
 
+import org.apache.river.extra.easystart.config.ApplicationOptions;
+import org.apache.river.extra.easystart.config.ConfigurationFactory;
+import org.apache.river.extra.easystart.config.JavaSpaceConfiguration;
+
+import com.sun.jini.start.ServiceStarter;
+
 public class StartOutriggerService {
 
 
@@ -46,24 +52,13 @@ public class StartOutriggerService {
 		log.info("Using RIVER_HOME="+RIVER_HOME);
 		log.info("Using HTTP_PORT="+HTTP_PORT);
 		
-//		final String riverHome = "/home/tom/projects/river/easystart";
-//		final String pathToConfig = "/home/tom/projects/river/easystart/src-extra/empty.config";
-//		final String pathToPolicy = "/home/tom/projects/river/easystart/src-extra/outrigger.policy";
-//		final String classpath = "/home/tom/projects/river/easystart/lib/outrigger.jar";
-//		
-//		OutriggerServiceConfiguration config = new OutriggerServiceConfiguration(8080,
-//				riverHome,
-//				new AbsolutePath(pathToConfig),
-//				new AbsolutePath(pathToPolicy),
-//				new AbsolutePath[] {
-//					new AbsolutePath(classpath)
-//				}
-//		);
-//		config.addLookupGroup("Lester");
-//		config.addLookupGroup("Jeff");
+		ApplicationOptions options = new ApplicationOptions();
+		
+		ConfigurationFactory configFac = new ConfigurationFactory(options);
+		JavaSpaceConfiguration config = configFac.spaceConfig();
+		config.addLookupGroup("Lester").addLookupGroup("Jeff");
 		
-//		Configuration config = JavaSpaceConfiguration.config();
-//		ServiceStarter.main(config);
+		ServiceStarter.main(config.riverConfig());
 	}
 
 	private static void validateArgs(String[] args) {

Added: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/AbstractEasyConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/AbstractEasyConfiguration.java?rev=1326586&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/AbstractEasyConfiguration.java (added)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/AbstractEasyConfiguration.java Mon Apr 16 13:02:03 2012
@@ -0,0 +1,104 @@
+package org.apache.river.extra.easystart.config;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+import net.jini.config.Configuration;
+import net.jini.config.ConfigurationException;
+import net.jini.config.ConfigurationFile;
+
+import org.apache.river.config.builder.VelocityConfigurationBuilder;
+import org.apache.river.extra.easystart.config.settings.GroupedSetting;
+import org.apache.river.extra.easystart.config.settings.Setting;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+
+public class AbstractEasyConfiguration {
+
+	private static final Logger LOGGER = Logger.getLogger(AbstractEasyConfiguration.class.getName());
+	
+	private final DefaultOptions options;
+	
+	protected AbstractEasyConfiguration(DefaultOptions opts) {
+		this.options = (DefaultOptions) opts.clone();
+	}
+	
+
+	protected DefaultOptions getDefaultOptions() {
+		return options;
+	}
+	
+	public AbstractEasyConfiguration addLookupGroup(String grp) {
+		getGroupSetting(DefaultOptions.LOOKUP_GROUP).add(grp);
+		return this;
+	}
+
+	public AbstractEasyConfiguration setRiverPort(int port) {
+		getSetting(DefaultOptions.RIVER_PORT).setOverride(String.valueOf(port));
+		return this;
+	}
+
+	public Configuration riverConfig() throws ConfigurationException, IOException {
+		Properties p = new Properties();
+		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
+		VelocityEngine ve = new VelocityEngine(p);
+		VelocityContext context = new VelocityContext();
+		
+		StringBuilder options = new StringBuilder();
+		StringBuilder defaults = new StringBuilder();
+		String key = this.options.get(DefaultOptions.PACKAGE_NAME).getOverride()+'.';
+		for(Setting setting : this.options.getOptions()) {
+			String format = setting.getFormatter();
+			if(setting.isServiceDescription()) {
+	        	
+	        	String name = key + setting.getName();
+	        	
+	        	options
+	        		.append(",\"")
+	        		.append(name)
+	        		.append('=')
+	        		.append(String.format(format, setting.getOverride()))
+	        		.append("\"\n");
+	        	
+	        	defaults
+	        		.append(setting.getName())
+	        		.append('=')
+	        		.append(String.format(format, setting.getDefault()))
+	        		.append(";\n");
+			} else {
+	        	context.put(setting.getName(),
+				String.format(format, setting.getOverride()));
+			}
+		}
+		
+	    context.put("defaults", defaults.toString());
+	    context.put("options", options.toString());
+	    
+	    Template template = ve.getTemplate(Setting.class.getResource("start.config").toExternalForm() );
+	    
+	    StringWriter sw = new StringWriter();
+	
+	    template.merge(context, sw);
+	    
+	    String s = sw.toString();
+	    
+	    LOGGER.warning(s);
+	    
+	    StringReader sr = new StringReader(s);
+	    
+	    return new ConfigurationFile(sr, new String[0]);
+	}
+
+	Setting getSetting(String key) {
+		return options.get(key);
+	}
+
+	GroupedSetting getGroupSetting(String key) {
+		return (GroupedSetting) options.get(key);
+	}
+	
+}

Added: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ApplicationOptions.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ApplicationOptions.java?rev=1326586&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ApplicationOptions.java (added)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ApplicationOptions.java Mon Apr 16 13:02:03 2012
@@ -0,0 +1,26 @@
+package org.apache.river.extra.easystart.config;
+
+
+public class ApplicationOptions extends DefaultOptions {
+
+	public ApplicationOptions() {
+		super();
+	}
+	
+	public ApplicationOptions setJiniPort(int port) {
+		super.get(DefaultOptions.RIVER_PORT).setOverride(String.valueOf(port));
+		return this;
+	}
+	
+	public ApplicationOptions setHttpOptions(String server, int port, boolean stringLiteral) {
+		super.get(DefaultOptions.HTTP_SERVER).setOverride(String.valueOf(server), stringLiteral);
+		super.get(DefaultOptions.HTTP_PORT).setOverride(String.valueOf(port));
+		return this;
+	}
+	
+	public ApplicationOptions addLookupGroup(String group) {
+		super.getGrouped(DefaultOptions.LOOKUP_GROUP).add(group);
+		return this;
+	}
+	
+}

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConfigurationFactory.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConfigurationFactory.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConfigurationFactory.java Mon Apr 16 13:02:03 2012
@@ -1,6 +1,5 @@
 package org.apache.river.extra.easystart.config;
 
-import org.apache.river.extra.easystart.config.settings.DefaultOptions;
 
 public class ConfigurationFactory {
 
@@ -9,25 +8,17 @@ public class ConfigurationFactory {
 	public ConfigurationFactory(DefaultOptions options) {
 		this.options = (DefaultOptions) options.clone();
 	}
-	
 
 	public LookupServiceConfiguration lookupServiceConfig() {
 		return new LookupServiceConfiguration(options);
-		
-//		opts.PACKAGE_NAME.setOverride("com.sun.jini.reggie");
-////	opts.RIVER_HOME;  - no override for this
-//	opts.HTTP_PORT.setOverride("8080");
-//	opts.JINI_PORT.setOverride("4160");
-////	opts.MEMBER_GROUPS.add("Lester").add("Jeff");
-//	opts.MEMBER_GROUPS.add("Chuck").add("Sarah");
-////	opts.LOOKUP_GROUPS.add("Chuck").add("Sarah");
-//	opts.SERVICE_IMPL.setOverride("com.sun.jini.reggie.TransientRegistrarImpl");
-//	opts.CODEBASE.add("reggie-dl.jar").add("jsk-dl.jar");
-//	opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/reggie.jar");
-//	opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/jini-ext.jar");
-////	opts.POLICY.setOverride("secure.policy");
-////	opts.SERVER_EXPORTER.asJeriExporter("localhost", 4161);
-		
+	}
+
+	public JavaSpaceConfiguration spaceConfig() {
+		return new JavaSpaceConfiguration(options);
+	}
+
+	public TransactionServiceConfiguration transactionServiceConfig() {
+		return new TransactionServiceConfiguration(options);
 	}
 	
 }

Added: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/DefaultOptions.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/DefaultOptions.java?rev=1326586&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/DefaultOptions.java (added)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/DefaultOptions.java Mon Apr 16 13:02:03 2012
@@ -0,0 +1,124 @@
+package org.apache.river.extra.easystart.config;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.river.extra.easystart.config.settings.ClasspathSetting;
+import org.apache.river.extra.easystart.config.settings.CodebaseSetting;
+import org.apache.river.extra.easystart.config.settings.GroupedSetting;
+import org.apache.river.extra.easystart.config.settings.PolicySetting;
+import org.apache.river.extra.easystart.config.settings.ServerExporterSetting;
+import org.apache.river.extra.easystart.config.settings.Setting;
+
+public class DefaultOptions implements Cloneable {
+
+	private static final Logger LOGGER = Logger.getLogger(DefaultOptions.class.getName());
+
+	public static final String NO_FORMAT = "%s";
+	public static final String STRING_FORMAT = "\"%s\"";
+	public static final String ESCAPED_STRING_FORMAT = "\\\"%s\\\"";
+	public static final String INTEGER_FORMAT = "%s";
+	
+	private static final String RIVER_HOME_ENV_NAME = "RIVER_HOME";
+
+	public static final String MEMBER_GROUP = "initialMemberGroups";
+	public static final String LOOKUP_GROUP = "initialLookupGroups";
+	public static final String RIVER_PORT = "initialUnicastDiscoveryPort";
+	public static final String PACKAGE_NAME = "servicePackageName";
+	public static final String SERVICE_IMPL = "serviceImpl";
+	public static final String CODEBASE = "codebase";
+	public static final String CLASSPATH = "classpath";
+	public static final String RIVER_HOME = "riverHome";
+	public static final String HTTP_PORT = "httpPort";
+	public static final String HTTP_SERVER = "httpServer";
+
+	
+	private static String RIVER_HOME_DIR;
+	static {
+		RIVER_HOME_DIR = (String) System.getProperties().get(RIVER_HOME_ENV_NAME);
+		if(null == RIVER_HOME_DIR) {
+			LOGGER.severe(RIVER_HOME_ENV_NAME+" has not been set");
+			RIVER_HOME_DIR = ".";
+		} else {
+			LOGGER.severe("Using "+RIVER_HOME_ENV_NAME+"="+RIVER_HOME_DIR);
+		}
+	}
+	
+	private final Map<String, Setting> options = new HashMap<String, Setting>();
+	
+	protected DefaultOptions() {
+		options.put(RIVER_HOME, new Setting(RIVER_HOME, RIVER_HOME_DIR, STRING_FORMAT, false));
+		options.put("servicePackageName", new Setting("servicePackageName", "org.apache.river", NO_FORMAT, false));
+		options.put(RIVER_PORT, new Setting(RIVER_PORT, "4160", INTEGER_FORMAT, true));
+		options.put(HTTP_PORT, new Setting(HTTP_PORT, "8080", INTEGER_FORMAT, false));
+		options.put(MEMBER_GROUP, new GroupedSetting(MEMBER_GROUP,
+														new LinkedList<String>(),
+														NO_FORMAT, 
+														ESCAPED_STRING_FORMAT, 
+														true));
+		options.put(LOOKUP_GROUP, new GroupedSetting(LOOKUP_GROUP,
+															  new LinkedList<String>(),
+															  NO_FORMAT, 
+															  ESCAPED_STRING_FORMAT, 
+															  true));
+		options.put(SERVICE_IMPL, new Setting(SERVICE_IMPL, "", STRING_FORMAT, false));
+		options.put(HTTP_SERVER, new Setting(HTTP_SERVER,
+												 "ConfigUtil.getHostName()",
+												 NO_FORMAT,
+												 false));
+		options.put(CODEBASE, new CodebaseSetting(CODEBASE,
+				options.get("httpPort"),
+				options.get("httpServer"),
+				Collections.<String>emptyList(), 
+				NO_FORMAT, 
+				STRING_FORMAT, 
+				false));
+		options.put(CLASSPATH, new ClasspathSetting(CLASSPATH,
+																Collections.<String>emptyList(), 
+																NO_FORMAT, 
+																STRING_FORMAT, 
+																false));
+		
+		options.put("policy", new PolicySetting("policy",
+												  options.get("riverHome"),
+												  "src-extra/policy.all",
+												  STRING_FORMAT,
+												  false));
+		options.put("serverExporter", new ServerExporterSetting());
+	}
+	
+	private DefaultOptions(Map<String, Setting> opts) {
+		for(String key : opts.keySet()) {
+			options.put(key, (Setting)opts.get(key).clone());
+		}
+	}
+	
+	protected Setting get(String key) {
+		return options.get(key);
+	}
+	
+	protected GroupedSetting getGrouped(String key) {
+		return (GroupedSetting) get(key);
+	}
+	
+	public Collection<Setting> getOptions() {
+		return options.values();
+	}
+	
+	@Override
+	public Object clone() {
+		Map<String, Setting> clonedOptions = new HashMap<String, Setting>();
+		synchronized (this.options) {
+			for(String key : this.options.keySet()) {
+				clonedOptions.put(key, (Setting)this.options.get(key).clone());
+			}
+			
+		}
+		return new DefaultOptions(clonedOptions);
+	}
+	
+}

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/JavaSpaceConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/JavaSpaceConfiguration.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/JavaSpaceConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/JavaSpaceConfiguration.java Mon Apr 16 13:02:03 2012
@@ -1,97 +1,16 @@
 package org.apache.river.extra.easystart.config;
 
-import java.io.Reader;
-import java.util.logging.Logger;
 
-import net.jini.config.ConfigurationException;
-import net.jini.config.ConfigurationFile;
+public class JavaSpaceConfiguration extends AbstractEasyConfiguration {
 
-public class JavaSpaceConfiguration extends ConfigurationFile {
-
-	private static final Logger LOGGER = Logger.getLogger(JavaSpaceConfiguration.class.getName());
-	
-//	public static JavaSpaceConfiguration config() throws IOException, ConfigurationException {
-//		
-//		Options opts = new Options();
-//		opts.PACKAGE_NAME.setOverride("com.sun.jini.outrigger");
-////		opts.RIVER_HOME;  - no override for this
-//		opts.HTTP_PORT.setOverride("8080");
-////		opts.JINI_PORT.setOverride("4160");
-////		opts.MEMBER_GROUPS.add("Lester").add("Jeff");
-//		opts.LOOKUP_GROUPS.add("Chuck").add("Sarah");
-//		opts.SERVICE_IMPL.setOverride("com.sun.jini.outrigger.TransientOutriggerImpl");
-//		opts.CODEBASE.add("outrigger-dl.jar").add("jsk-dl.jar");
-//		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/outrigger.jar");
-////		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/jini-ext.jar");
-////		opts.POLICY.setOverride("secure.policy");
-////		opts.SERVER_EXPORTER.asJeriExporter("localhost", 4161);
-//		
-//		Properties p = new Properties();
-//		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
-//		VelocityEngine ve = new VelocityEngine(p);
-//		VelocityContext context = new VelocityContext();
-//		
-//		StringBuilder options = new StringBuilder();
-//		StringBuilder defaults = new StringBuilder();
-//		String key = opts.PACKAGE_NAME.getOverride()+'.';
-//		for(Setting setting : opts.OPTIONS) {
-//			String format = setting.getFormatter();
-//			if(setting.isServiceDescription()) {
-//	        	
-//	        	String name = key + setting.getName();
-//	        	
-//	        	options
-//	        		.append(",\"")
-//	        		.append(name)
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getOverride()))
-//	        		.append("\"\n");
-//	        	
-//	        	defaults
-//	        		.append(setting.getName())
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getDefault()))
-//	        		.append(";\n");
-//			} else {
-//	        	context.put(setting.getName(),
-//				String.format(format, setting.getOverride()));
-//			}
-//		}
-//		
-//        context.put("defaults", defaults.toString());
-//        context.put("options", options.toString());
-//        
-//        Template template = ve.getTemplate( Options.class.getResource("start.config").toExternalForm() );
-//        
-//        StringWriter sw = new StringWriter();
-//
-//        template.merge(context, sw);
-//        
-//        String s = sw.toString();
-//        
-//        LOGGER.warning(s);
-//        
-//        StringReader sr = new StringReader(s);
-//        
-//        return new JavaSpaceConfiguration(sr, new String[0]);//opts.getOptionsArray());
-//	}
-	
-	private JavaSpaceConfiguration(Reader reader, String[] options) throws ConfigurationException {
-		super(reader,options);
+	public JavaSpaceConfiguration(DefaultOptions opts) {
+		super(opts);
+		
+		getDefaultOptions().get(DefaultOptions.PACKAGE_NAME).setOverride("com.sun.jini.outrigger");
+		getDefaultOptions().get(DefaultOptions.SERVICE_IMPL).setOverride("com.sun.jini.outrigger.TransientOutriggerImpl");
+		getDefaultOptions().getGrouped(DefaultOptions.CODEBASE).add("outrigger-dl.jar").add("jsk-dl.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/outrigger.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/jini-ext.jar");
 	}
-	
-//	public ConventionalLookupServiceConfiguration(String[] options) throws ConfigurationException {
-//		super(fileReader(), options);
-//	}
 
-	@Override
-	public Object getEntry(String component, String name, Class type,
-			Object defaultValue) throws ConfigurationException {
-		if("initialMemberGroups".equals(name)) {
-//			return new String[0];
-			return super.getEntry(component, name, type, defaultValue);
-		} else {
-			return super.getEntry(component, name, type, defaultValue);
-		}
-	}
 }

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/LookupServiceConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/LookupServiceConfiguration.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/LookupServiceConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/LookupServiceConfiguration.java Mon Apr 16 13:02:03 2012
@@ -1,184 +1,21 @@
 package org.apache.river.extra.easystart.config;
 
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.Properties;
-import java.util.logging.Logger;
 
-import net.jini.config.Configuration;
-import net.jini.config.ConfigurationException;
-import net.jini.config.ConfigurationFile;
+public class LookupServiceConfiguration extends AbstractEasyConfiguration {
 
-import org.apache.river.config.builder.VelocityConfigurationBuilder;
-import org.apache.river.extra.easystart.config.settings.DefaultOptions;
-import org.apache.river.extra.easystart.config.settings.GroupedSetting;
-import org.apache.river.extra.easystart.config.settings.Options;
-import org.apache.river.extra.easystart.config.settings.Setting;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-
-public class LookupServiceConfiguration {
-
-	private final DefaultOptions options;
-	
 	public LookupServiceConfiguration(DefaultOptions opts) {
-		this.options = opts;
+		super(opts);
 		
-		this.options.get(DefaultOptions.PACKAGE_NAME).setOverride("com.sun.jini.reggie");
-		this.options.get(DefaultOptions.SERVICE_IMPL).setOverride("com.sun.jini.reggie.TransientRegistrarImpl");
-		this.options.getGrouped(DefaultOptions.CODEBASE).add("reggie-dl.jar").add("jsk-dl.jar");
-		this.options.getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/reggie.jar");
-		this.options.getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/jini-ext.jar");
+		getDefaultOptions().get(DefaultOptions.PACKAGE_NAME).setOverride("com.sun.jini.reggie");
+		getDefaultOptions().get(DefaultOptions.SERVICE_IMPL).setOverride("com.sun.jini.reggie.TransientRegistrarImpl");
+		getDefaultOptions().getGrouped(DefaultOptions.CODEBASE).add("reggie-dl.jar").add("jsk-dl.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/reggie.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/jini-ext.jar");
 	}
 
-	private static final Logger LOGGER = Logger.getLogger(LookupServiceConfiguration.class.getName());
-
 	public LookupServiceConfiguration addMemberGroup(String grp) {
-		getGroupSetting(Options.MEMBER_GROUP).add(grp);
-		return this;
-	}
-
-	public LookupServiceConfiguration addLookupGroup(String grp) {
-		getGroupSetting(Options.LOOKUP_GROUP).add(grp);
-		return this;
-	}
-
-	public LookupServiceConfiguration setRiverPort(int port) {
-		getSetting(Options.RIVER_PORT).setOverride(String.valueOf(port));
+		getGroupSetting(DefaultOptions.MEMBER_GROUP).add(grp);
 		return this;
 	}
-	
-	private Setting getSetting(String key) {
-		return options.get(key);
-	}
-
-	private GroupedSetting getGroupSetting(String key) {
-		return (GroupedSetting) options.get(key);
-	}
-	
-	public Configuration riverConfig() throws ConfigurationException, IOException {
-		Properties p = new Properties();
-		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
-		VelocityEngine ve = new VelocityEngine(p);
-		VelocityContext context = new VelocityContext();
-		
-		StringBuilder options = new StringBuilder();
-		StringBuilder defaults = new StringBuilder();
-		String key = this.options.get(Options.PACKAGE_NAME).getOverride()+'.';
-		for(Setting setting : this.options.getOptions()) {
-			String format = setting.getFormatter();
-			if(setting.isServiceDescription()) {
-	        	
-	        	String name = key + setting.getName();
-	        	
-	        	options
-	        		.append(",\"")
-	        		.append(name)
-	        		.append('=')
-	        		.append(String.format(format, setting.getOverride()))
-	        		.append("\"\n");
-	        	
-	        	defaults
-	        		.append(setting.getName())
-	        		.append('=')
-	        		.append(String.format(format, setting.getDefault()))
-	        		.append(";\n");
-			} else {
-	        	context.put(setting.getName(),
-				String.format(format, setting.getOverride()));
-			}
-		}
-		
-        context.put("defaults", defaults.toString());
-        context.put("options", options.toString());
-        
-        Template template = ve.getTemplate( Options.class.getResource("start.config").toExternalForm() );
-        
-        StringWriter sw = new StringWriter();
-
-        template.merge(context, sw);
-        
-        String s = sw.toString();
-        
-        LOGGER.warning(s);
-        
-        StringReader sr = new StringReader(s);
-        
-        return new ConfigurationFile(sr, new String[0]);//opts.getOptionsArray());
-	}
-	
-//	public static LookupServiceConfiguration config() throws IOException, ConfigurationException {
-//		
-//		Options opts = new Options();
-//		opts.PACKAGE_NAME.setOverride("com.sun.jini.reggie");
-////		opts.RIVER_HOME;  - no override for this
-//		opts.HTTP_PORT.setOverride("8080");
-//		opts.JINI_PORT.setOverride("4160");
-////		opts.MEMBER_GROUPS.add("Lester").add("Jeff");
-//		opts.MEMBER_GROUPS.add("Chuck").add("Sarah");
-////		opts.LOOKUP_GROUPS.add("Chuck").add("Sarah");
-//		opts.SERVICE_IMPL.setOverride("com.sun.jini.reggie.TransientRegistrarImpl");
-//		opts.CODEBASE.add("reggie-dl.jar").add("jsk-dl.jar");
-//		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/reggie.jar");
-//		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/jini-ext.jar");
-////		opts.POLICY.setOverride("secure.policy");
-////		opts.SERVER_EXPORTER.asJeriExporter("localhost", 4161);
-//		
-//		Properties p = new Properties();
-//		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
-//		VelocityEngine ve = new VelocityEngine(p);
-//		VelocityContext context = new VelocityContext();
-//		
-//		StringBuilder options = new StringBuilder();
-//		StringBuilder defaults = new StringBuilder();
-//		String key = opts.PACKAGE_NAME.getOverride()+'.';
-//		for(Setting setting : opts.OPTIONS) {
-//			String format = setting.getFormatter();
-//			if(setting.isServiceDescription()) {
-//	        	
-//	        	String name = key + setting.getName();
-//	        	
-//	        	options
-//	        		.append(",\"")
-//	        		.append(name)
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getOverride()))
-//	        		.append("\"\n");
-//	        	
-//	        	defaults
-//	        		.append(setting.getName())
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getDefault()))
-//	        		.append(";\n");
-//			} else {
-//	        	context.put(setting.getName(),
-//				String.format(format, setting.getOverride()));
-//			}
-//		}
-//		
-//        context.put("defaults", defaults.toString());
-//        context.put("options", options.toString());
-//        
-//        Template template = ve.getTemplate( Options.class.getResource("start.config").toExternalForm() );
-//        
-//        StringWriter sw = new StringWriter();
-//
-//        template.merge(context, sw);
-//        
-//        String s = sw.toString();
-//        
-//        LOGGER.warning(s);
-//        
-//        StringReader sr = new StringReader(s);
-//        
-//        return new LookupServiceConfiguration(sr, new String[0]);//opts.getOptionsArray());
-//	}
-	
-//	LookupServiceConfiguration(Reader reader, String[] options) throws ConfigurationException {
-//		super(reader,options);
-//	}
-	
 
 }

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/TransactionServiceConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/TransactionServiceConfiguration.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/TransactionServiceConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/TransactionServiceConfiguration.java Mon Apr 16 13:02:03 2012
@@ -1,97 +1,100 @@
 package org.apache.river.extra.easystart.config;
 
-import java.io.Reader;
-import java.util.logging.Logger;
 
-import net.jini.config.ConfigurationException;
-import net.jini.config.ConfigurationFile;
+public class TransactionServiceConfiguration extends AbstractEasyConfiguration {
 
-public class TransactionServiceConfiguration extends ConfigurationFile {
+	protected TransactionServiceConfiguration(DefaultOptions opts) {
+		super(opts);
+		
+		getDefaultOptions().get(DefaultOptions.PACKAGE_NAME).setOverride("com.sun.jini.mahalo");
+		getDefaultOptions().get(DefaultOptions.SERVICE_IMPL).setOverride("com.sun.jini.mahalo.TransientMahaloImpl");
+		getDefaultOptions().getGrouped(DefaultOptions.CODEBASE).add("mahalo-dl.jar").add("jsk-dl.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/mahalo.jar");
+		getDefaultOptions().getGrouped(DefaultOptions.CLASSPATH).add(opts.get(DefaultOptions.RIVER_HOME).getOverride()+"/lib/jini-ext.jar");
+	}
 
-	private static final Logger LOGGER = Logger.getLogger(TransactionServiceConfiguration.class.getName());
-	
-//	public static TransactionServiceConfiguration config() throws IOException, ConfigurationException {
-//		
-//		Options opts = new Options();
-//		opts.PACKAGE_NAME.setOverride("com.sun.jini.mahalo");
-////		opts.RIVER_HOME;  - no override for this
-//		opts.HTTP_PORT.setOverride("8080");
-////		opts.JINI_PORT.setOverride("4160");
-////		opts.MEMBER_GROUPS.add("Lester").add("Jeff");
-//		opts.LOOKUP_GROUPS.add("Chuck").add("Sarah");
-//		opts.SERVICE_IMPL.setOverride("com.sun.jini.mahalo.TransientMahaloImpl");
-//		opts.CODEBASE.add("mahalo-dl.jar").add("jsk-dl.jar");
-//		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/mahalo.jar");
-////		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/jini-ext.jar");
-////		opts.POLICY.setOverride("secure.policy");
-////		opts.SERVER_EXPORTER.asJeriExporter("localhost", 4161);
-//		
-//		Properties p = new Properties();
-//		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
-//		VelocityEngine ve = new VelocityEngine(p);
-//		VelocityContext context = new VelocityContext();
-//		
-//		StringBuilder options = new StringBuilder();
-//		StringBuilder defaults = new StringBuilder();
-//		String key = opts.PACKAGE_NAME.getOverride()+'.';
-//		for(Setting setting : opts.OPTIONS) {
-//			String format = setting.getFormatter();
-//			if(setting.isServiceDescription()) {
-//	        	
-//	        	String name = key + setting.getName();
-//	        	
-//	        	options
-//	        		.append(",\"")
-//	        		.append(name)
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getOverride()))
-//	        		.append("\"\n");
-//	        	
-//	        	defaults
-//	        		.append(setting.getName())
-//	        		.append('=')
-//	        		.append(String.format(format, setting.getDefault()))
-//	        		.append(";\n");
-//			} else {
-//	        	context.put(setting.getName(),
-//				String.format(format, setting.getOverride()));
-//			}
-//		}
-//		
-//        context.put("defaults", defaults.toString());
-//        context.put("options", options.toString());
-//        
-//        Template template = ve.getTemplate( Options.class.getResource("start.config").toExternalForm() );
-//        
-//        StringWriter sw = new StringWriter();
-//
-//        template.merge(context, sw);
-//        
-//        String s = sw.toString();
-//        
-//        LOGGER.warning(s);
-//        
-//        StringReader sr = new StringReader(s);
-//        
-//        return new TransactionServiceConfiguration(sr, new String[0]);//opts.getOptionsArray());
+////	public static TransactionServiceConfiguration config() throws IOException, ConfigurationException {
+////		
+////		Options opts = new Options();
+////		opts.PACKAGE_NAME.setOverride("com.sun.jini.mahalo");
+//////		opts.RIVER_HOME;  - no override for this
+////		opts.HTTP_PORT.setOverride("8080");
+//////		opts.JINI_PORT.setOverride("4160");
+//////		opts.MEMBER_GROUPS.add("Lester").add("Jeff");
+////		opts.LOOKUP_GROUPS.add("Chuck").add("Sarah");
+////		opts.SERVICE_IMPL.setOverride("com.sun.jini.mahalo.TransientMahaloImpl");
+////		opts.CODEBASE.add("mahalo-dl.jar").add("jsk-dl.jar");
+////		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/mahalo.jar");
+//////		opts.CLASSPATH.add(opts.RIVER_HOME.getOverride()+"/lib/jini-ext.jar");
+//////		opts.POLICY.setOverride("secure.policy");
+//////		opts.SERVER_EXPORTER.asJeriExporter("localhost", 4161);
+////		
+////		Properties p = new Properties();
+////		p.load( VelocityConfigurationBuilder.class.getResourceAsStream("velocity.properties") );
+////		VelocityEngine ve = new VelocityEngine(p);
+////		VelocityContext context = new VelocityContext();
+////		
+////		StringBuilder options = new StringBuilder();
+////		StringBuilder defaults = new StringBuilder();
+////		String key = opts.PACKAGE_NAME.getOverride()+'.';
+////		for(Setting setting : opts.OPTIONS) {
+////			String format = setting.getFormatter();
+////			if(setting.isServiceDescription()) {
+////	        	
+////	        	String name = key + setting.getName();
+////	        	
+////	        	options
+////	        		.append(",\"")
+////	        		.append(name)
+////	        		.append('=')
+////	        		.append(String.format(format, setting.getOverride()))
+////	        		.append("\"\n");
+////	        	
+////	        	defaults
+////	        		.append(setting.getName())
+////	        		.append('=')
+////	        		.append(String.format(format, setting.getDefault()))
+////	        		.append(";\n");
+////			} else {
+////	        	context.put(setting.getName(),
+////				String.format(format, setting.getOverride()));
+////			}
+////		}
+////		
+////        context.put("defaults", defaults.toString());
+////        context.put("options", options.toString());
+////        
+////        Template template = ve.getTemplate( Options.class.getResource("start.config").toExternalForm() );
+////        
+////        StringWriter sw = new StringWriter();
+////
+////        template.merge(context, sw);
+////        
+////        String s = sw.toString();
+////        
+////        LOGGER.warning(s);
+////        
+////        StringReader sr = new StringReader(s);
+////        
+////        return new TransactionServiceConfiguration(sr, new String[0]);//opts.getOptionsArray());
+////	}
+//	
+//	private TransactionServiceConfiguration(Reader reader, String[] options) throws ConfigurationException {
+//		super(reader,options);
 //	}
-	
-	private TransactionServiceConfiguration(Reader reader, String[] options) throws ConfigurationException {
-		super(reader,options);
-	}
-	
-//	public ConventionalLookupServiceConfiguration(String[] options) throws ConfigurationException {
-//		super(fileReader(), options);
+//	
+////	public ConventionalLookupServiceConfiguration(String[] options) throws ConfigurationException {
+////		super(fileReader(), options);
+////	}
+//
+//	@Override
+//	public Object getEntry(String component, String name, Class type,
+//			Object defaultValue) throws ConfigurationException {
+//		if("initialMemberGroups".equals(name)) {
+////			return new String[0];
+//			return super.getEntry(component, name, type, defaultValue);
+//		} else {
+//			return super.getEntry(component, name, type, defaultValue);
+//		}
 //	}
-
-	@Override
-	public Object getEntry(String component, String name, Class type,
-			Object defaultValue) throws ConfigurationException {
-		if("initialMemberGroups".equals(name)) {
-//			return new String[0];
-			return super.getEntry(component, name, type, defaultValue);
-		} else {
-			return super.getEntry(component, name, type, defaultValue);
-		}
-	}
 }

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ClasspathSetting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ClasspathSetting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ClasspathSetting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ClasspathSetting.java Mon Apr 16 13:02:03 2012
@@ -4,7 +4,7 @@ import java.util.List;
 
 public class ClasspathSetting extends GroupedSetting {
 
-	protected ClasspathSetting(String name, 
+	public ClasspathSetting(String name, 
 						      List<String> defaults,
 						      String format, 
 						      String elementFormat, 

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/CodebaseSetting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/CodebaseSetting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/CodebaseSetting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/CodebaseSetting.java Mon Apr 16 13:02:03 2012
@@ -7,7 +7,7 @@ public class CodebaseSetting extends Gro
 	private final Setting httpPort;
 	private final Setting httpServer;
 	
-	protected CodebaseSetting(String name, 
+	public CodebaseSetting(String name, 
 							  Setting httpPort,
 							  Setting httpServer,
 						      List<String> defaults,

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/GroupedSetting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/GroupedSetting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/GroupedSetting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/GroupedSetting.java Mon Apr 16 13:02:03 2012
@@ -11,7 +11,7 @@ public class GroupedSetting extends Sett
 
 	private volatile boolean overriden = false;
 
-	protected GroupedSetting(String name, 
+	public GroupedSetting(String name, 
 							 List<String> defaults, 
 							 String format,
 							 String elementFormat,

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/PolicySetting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/PolicySetting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/PolicySetting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/PolicySetting.java Mon Apr 16 13:02:03 2012
@@ -6,7 +6,7 @@ public class PolicySetting extends Setti
 
 	private final Setting riverHome;
 	
-	protected PolicySetting(String name, 
+	public PolicySetting(String name, 
 							Setting riverHome,
 							String defaultValue, 
 							String format,

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ServerExporterSetting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ServerExporterSetting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ServerExporterSetting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/ServerExporterSetting.java Mon Apr 16 13:02:03 2012
@@ -1,11 +1,13 @@
 package org.apache.river.extra.easystart.config.settings;
 
+import org.apache.river.extra.easystart.config.DefaultOptions;
+
 public class ServerExporterSetting extends Setting {
 
 	private static final String JRMP_STRING = "new net.jini.jrmp.JrmpExporter()";
 	
-	protected ServerExporterSetting() {
-		super("serverExporter", JRMP_STRING, Options.NO_FORMAT, true);
+	public ServerExporterSetting() {
+		super("serverExporter", JRMP_STRING, DefaultOptions.NO_FORMAT, true);
 	}
 
 	public void asJrmpExporter() {

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Setting.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Setting.java?rev=1326586&r1=1326585&r2=1326586&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Setting.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/settings/Setting.java Mon Apr 16 13:02:03 2012
@@ -17,7 +17,7 @@ public class Setting implements Cloneabl
 	protected final boolean serviceDescription;
 	protected String override;
 	
-	protected Setting(String name, String defaultValue, String format, boolean serviceDescription) {
+	public Setting(String name, String defaultValue, String format, boolean serviceDescription) {
 		this.name = name;
 		this.defaultValue = defaultValue;
 		this.format = format;
@@ -42,8 +42,16 @@ public class Setting implements Cloneabl
 		return serviceDescription;
 	}
 	
+	public void setOverride(String override, boolean stringLiteral) {
+		if(stringLiteral) {
+			this.override = '\"' + override + '\"';
+		} else {
+			this.override = override;
+		}
+	}
+	
 	public void setOverride(String override) {
-		this.override = override;
+		setOverride(override, false);
 	}
 	
 	public String getOverride() {