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/02/06 16:43:23 UTC

svn commit: r1241049 - in /river/jtsk/skunk/easystart: src-extra/org/apache/river/extra/easystart/ test/src/org/ test/src/org/apache/ test/src/org/apache/river/ test/src/org/apache/river/extra/ test/src/org/apache/river/extra/easystart/

Author: thobbs
Date: Mon Feb  6 15:43:22 2012
New Revision: 1241049

URL: http://svn.apache.org/viewvc?rev=1241049&view=rev
Log:
Did a bit of refactoring and tidying up

Added:
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java
    river/jtsk/skunk/easystart/test/src/org/
    river/jtsk/skunk/easystart/test/src/org/apache/
    river/jtsk/skunk/easystart/test/src/org/apache/river/
    river/jtsk/skunk/easystart/test/src/org/apache/river/extra/
    river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/
    river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/GroupEncapsulatorTest.java
Modified:
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.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/OutriggerServiceConfiguration.java
    river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/StartLookupService.java

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.java?rev=1241049&r1=1241048&r2=1241049&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/AbstractEasyConfiguration.java Mon Feb  6 15:43:22 2012
@@ -39,15 +39,20 @@ public abstract class AbstractEasyConfig
 	public static final int DEFAULT_HTTP_PORT = 8080;
 	public static final String DEFAULT_EMPTY_CONFIG = "empty.config";
 	
+	private enum Exporter { JRMP };
+	
 	private final int httpPort;
 	private final String riverHome;
 	private final AbsolutePath pathToStartConfig;
 	private final AbsolutePath pathToPolicy;
 	private final AbsolutePath[] serviceClasspath;
-	private final List<String> lookupGroups = new LinkedList<String>();
+	private final GroupEncapsulator lookupGroups = new GroupEncapsulator();
 	private final List<String> requiredJars = new LinkedList<String>();
 	private final List<Entry> entries = new LinkedList<Entry>();
 	private ServiceInfo serviceInfo;
+	private final String packageName;
+	private Exporter exporter;
+	private final String implClass;
 	
 //	protected AbstractEasyConfiguration() {
 //		this(DEFAULT_HTTP_PORT, 
@@ -59,28 +64,43 @@ public abstract class AbstractEasyConfig
 										String riverHome,
 										AbsolutePath pathToStartConfig,
 										AbsolutePath pathToPolicy,
-										AbsolutePath[] serviceClasspath) {
+										AbsolutePath[] serviceClasspath,
+										String packageName,
+										String implClass) {
 		this.httpPort = httpPort;
 		this.riverHome = validateRiverHome(riverHome);
 		this.pathToStartConfig = pathToStartConfig;
 		this.pathToPolicy = pathToPolicy;
 		this.serviceClasspath = serviceClasspath;
+		this.packageName = packageName;
+		this.implClass = implClass;
+		
+		lookupGroups.asLookupGroups().setPackage(packageName);
+		exporter = Exporter.JRMP;
 	}
 	
-	public void addLookupGroup(String grpName) {
-		lookupGroups.add(grpName);
+	public void asJrmpExporter() {
+		this.exporter = Exporter.JRMP;
 	}
-
-	public void addRequiredJar(String jarName) {
+	
+	public AbstractEasyConfiguration addLookupGroup(String grpName) {
+		lookupGroups.addGroup(grpName);
+		return this;
+	}
+	
+	public AbstractEasyConfiguration addRequiredJar(String jarName) {
 		requiredJars.add(jarName);
+		return this;
 	}
 	
-	public void addEntry(Entry entry) {
+	public AbstractEasyConfiguration addEntry(Entry entry) {
 		entries.add(entry);
+		return this;
 	}
 	
-	public void setServiceInfo(ServiceInfo si) {
+	public AbstractEasyConfiguration setServiceInfo(ServiceInfo si) {
 		this.serviceInfo = si;
+		return this;
 	}
 	
 	protected String buildCodebase() throws UnknownHostException {
@@ -101,22 +121,6 @@ public abstract class AbstractEasyConfig
 		return sb.toString();
 	}
 	
-	private String buildLookupGroups() {
-		StringBuilder sb = new StringBuilder();
-		sb.append("com.sun.jini.outrigger.initialLookupGroups=new String[] {");
-		int count = 0;
-		for(String grp : lookupGroups) {
-			sb.append('\"')
-			.append(grp)
-			.append('\"');
-			if(++count < lookupGroups.size()) {
-				sb.append(',');
-			}
-		}
-		sb.append('}');
-		
-		return sb.toString();
-	}
 	private String buildClasspath() {
 		StringBuilder sb = new StringBuilder();
 		int count = 0;
@@ -132,27 +136,41 @@ public abstract class AbstractEasyConfig
 		return sb.toString();
 	}
 	
+	private String exporterString() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(packageName).append(".serverExporter=");
+		switch(exporter) {
+			case JRMP:
+				sb.append("new net.jini.jrmp.JrmpExporter()"); 
+				break;
+			default:
+				throw new UnsupportedOperationException("Cannot configure for exporter type ["+exporter+"]");
+		}
+		return sb.toString();
+	}
+	
 	protected ServiceDescriptor[] serviceDescriptorArray() {
 		
 		try {
 			String codebase = buildCodebase();
 			final String policy = this.pathToPolicy.getPath();
 			final String classpath = buildClasspath();
-			final String config = this.pathToStartConfig.getPath();
+//			final String config = this.pathToStartConfig.getPath();
 		
 			return new ServiceDescriptor[] { 	
 				new NonActivatableServiceDescriptor(
 				    codebase, 	
 				    policy, 
 				    classpath,
-				    "com.sun.jini.outrigger.TransientOutriggerImpl",
-				    new String[] { config, 
-				    		       "com.sun.jini.mahalo.serverExporter=new net.jini.jrmp.JrmpExporter()",
-				    		       buildLookupGroups(),
-				    		       //"com.sun.jini.mahalo.nameEntry=new net.jini.lookup.entry.Name(\"transName\")",
-				    		       //"com.sun.jini.mahalo.serviceInfo=new net.jini.lookup.entry.ServiceInfo(\"transName\", \"manufacturer\", \"vendor\", \"version\", \"model\", \"serialNumber\")",
-				    		       //"com.sun.jini.mahalo.initialLookupAttributes = new net.jini.core.entry.Entry[] { serviceInfo, nameEntry }"
-				    		       }
+				    implClass,
+				    overrides().toArray(new String[0])
+//				    new String[] { config, 
+//				    			   exporterString(),
+//				    		       lookupGroups.toConfigString(),
+//				    		       //"com.sun.jini.mahalo.nameEntry=new net.jini.lookup.entry.Name(\"transName\")",
+//				    		       //"com.sun.jini.mahalo.serviceInfo=new net.jini.lookup.entry.ServiceInfo(\"transName\", \"manufacturer\", \"vendor\", \"version\", \"model\", \"serialNumber\")",
+//				    		       //"com.sun.jini.mahalo.initialLookupAttributes = new net.jini.core.entry.Entry[] { serviceInfo, nameEntry }"
+//				    		       }
 				    )
 				};
 		
@@ -162,6 +180,18 @@ public abstract class AbstractEasyConfig
 		
 	}
 	
+	protected List<String> overrides() {
+		List<String> overrides = new LinkedList<String>();
+		overrides.add(this.pathToStartConfig.getPath());
+		overrides.add(exporterString());
+		if(lookupGroups.hasAny()) {
+			overrides.add(lookupGroups.toConfigString());
+		}
+		
+		
+		return overrides;
+	}
+	
 	@Override
 	public Object getEntry(String component, String name, Class type)
 			throws ConfigurationException {

Added: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java?rev=1241049&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java (added)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/GroupEncapsulator.java Mon Feb  6 15:43:22 2012
@@ -0,0 +1,56 @@
+package org.apache.river.extra.easystart;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class GroupEncapsulator {
+
+	private enum GROUP_TYPE { LOOKUP, MEMBER };
+	
+	private final List<String> groups = new LinkedList<String>();
+	private GROUP_TYPE type = GROUP_TYPE.LOOKUP;
+	private String pack;
+	
+	
+	public GroupEncapsulator asLookupGroups() {
+		this.type = GROUP_TYPE.LOOKUP;
+		return this;
+	}
+
+	public GroupEncapsulator asMemberGroups() {
+		this.type = GROUP_TYPE.MEMBER;
+		return this;
+	}
+	
+	public GroupEncapsulator setPackage(String pack) {
+		this.pack = pack;
+		return this;
+	}
+
+	public GroupEncapsulator addGroup(String g) {
+		this.groups.add(g);
+		return this;
+	}
+
+	public String toConfigString() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(pack);
+		switch (type) {
+			case LOOKUP: sb.append(".initialLookupGroups"); break;
+			case MEMBER: sb.append(".initialMemberGroups"); break;
+		}
+		sb.append("=new String[] {");
+		for(String g : groups) {
+			sb.append('\"').append(g).append("\",");
+		}
+		sb.deleteCharAt(sb.length()-1); // removes final comma
+		sb.append('}');
+		return sb.toString();
+	}
+
+	public boolean hasAny() {
+		return !groups.isEmpty();
+	}
+
+
+}

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/LookupServiceConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/LookupServiceConfiguration.java?rev=1241049&r1=1241048&r2=1241049&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/LookupServiceConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/LookupServiceConfiguration.java Mon Feb  6 15:43:22 2012
@@ -18,93 +18,119 @@
 
 package org.apache.river.extra.easystart;
 
-import java.net.UnknownHostException;
+import java.util.List;
 
-import net.jini.config.Configuration;
-import net.jini.config.ConfigurationException;
-import net.jini.security.BasicProxyPreparer;
-import net.jini.security.ProxyPreparer;
 
-import com.sun.jini.config.ConfigUtil;
-import com.sun.jini.start.NonActivatableServiceDescriptor;
-import com.sun.jini.start.ServiceDescriptor;
+public class LookupServiceConfiguration extends AbstractEasyConfiguration {
 
-public class LookupServiceConfiguration implements Configuration {
-
-	@Override
-	public Object getEntry(String component, String name, Class type)
-			throws ConfigurationException {
-		return null;
-	}
-
-	@Override
-	public Object getEntry(String component, String name, Class type,
-			Object defaultValue) throws ConfigurationException {
-		if("com.sun.jini.start".equals(component)) {
-			if("serviceDescriptors".equals(name)) {
-				return serviceDescriptorArray();
-			} else if ("loginContext".equals(name)) {
-				return null;
-			} else {
-				return null;
-			}
-		} else {
-			return null;
-		}
+	private final GroupEncapsulator memberGroups = new GroupEncapsulator();
+	
+	protected LookupServiceConfiguration(int httpPort, 
+			String riverHome,
+			AbsolutePath pathToStartConfig, 
+			AbsolutePath pathToPolicy,
+			AbsolutePath[] serviceClasspath) {
+		super(httpPort, 
+		riverHome, 
+		pathToStartConfig, 
+		pathToPolicy, 
+		serviceClasspath,
+		"com.sun.jini.reggie",
+		"com.sun.jini.reggie.TransientRegistrarImpl");
+		
+		memberGroups.asMemberGroups().setPackage("com.sun.jini.reggie");
 	}
 	
 	@Override
-	public Object getEntry(String component, String name, Class type,
-			Object defaultValue, Object data) throws ConfigurationException {
-		if("com.sun.jini.start".equals(component)) {
-			if("servicePreparer".equals(name)) {
-				return servicePreparer();
-			} else {
-				return null;
-			}
-		} else {
-			return null;
+	protected List<String> overrides() {
+		List<String> overrides = super.overrides();
+		if(memberGroups.hasAny()) {
+			overrides.add(memberGroups.toConfigString());
 		}
+		return overrides;
 	}
-
-	private ProxyPreparer servicePreparer() {
-		return new BasicProxyPreparer();
-	}
-
 	
-	private ServiceDescriptor[] serviceDescriptorArray() {
-		final String port = "8080";
-		try {
-			String codebase = ConfigUtil.concat(
-				    new Object[] { 
-				    		"http://", ConfigUtil.getHostName(), ":"+port+"/reggie-dl.jar",
-				    		" ",
-				            "http://", ConfigUtil.getHostName(), ":"+port+"/jsk-dl.jar" } );
-		
-		final String policy = "/home/tom/projects/river/easystart/src-extra/policy.all";
-		final String classpath = "/home/tom/projects/river/easystart/lib/reggie.jar";
-		final String config = "/home/tom/projects/river/easystart/src-extra/empty.config";
-//		final String config = "/home/tom/projects/river/easystart/src-extra/jrmp-reggie.config";
-		
-		
-		return new ServiceDescriptor[] { 	
-			new NonActivatableServiceDescriptor(
-			    codebase, 	
-			    policy, 
-			    classpath,
-			    "com.sun.jini.reggie.TransientRegistrarImpl",
-			    new String[] { config, 
-			    		       "com.sun.jini.reggie.serverExporter=new net.jini.jrmp.JrmpExporter()",
-			    		       "com.sun.jini.reggie.initialMemberGroups=new String[] { \"Lester\", \"Jeff\" }",
-			    		       "com.sun.jini.reggie.initialLookupGroups=new String[] { \"LUG1\", \"LUG2\" }",
-			    		       "com.sun.jini.reggie.port="+port,
-			    		       "com.sun.jini.reggie.nameEntry=new net.jini.lookup.entry.Name(\"newName\")",
-			    		       "com.sun.jini.reggie.initialLookupAttributes = new net.jini.core.entry.Entry[] { nameEntry }"/*,
-			    		       "com.sun.jini.reggie.initialUnicastDiscoveryPort=4144"*/})};
-		
-		} catch (UnknownHostException e) {
-			throw new RuntimeException(e);
-		}
+	public AbstractEasyConfiguration addMemberGroup(String grpName) {
+		memberGroups.addGroup(grpName);
+		return this;
 	}
 	
+//	@Override
+//	public Object getEntry(String component, String name, Class type)
+//			throws ConfigurationException {
+//		return null;
+//	}
+//
+//	@Override
+//	public Object getEntry(String component, String name, Class type,
+//			Object defaultValue) throws ConfigurationException {
+//		if("com.sun.jini.start".equals(component)) {
+//			if("serviceDescriptors".equals(name)) {
+//				return serviceDescriptorArray();
+//			} else if ("loginContext".equals(name)) {
+//				return null;
+//			} else {
+//				return null;
+//			}
+//		} else {
+//			return null;
+//		}
+//	}
+//	
+//	@Override
+//	public Object getEntry(String component, String name, Class type,
+//			Object defaultValue, Object data) throws ConfigurationException {
+//		if("com.sun.jini.start".equals(component)) {
+//			if("servicePreparer".equals(name)) {
+//				return servicePreparer();
+//			} else {
+//				return null;
+//			}
+//		} else {
+//			return null;
+//		}
+//	}
+//
+//	private ProxyPreparer servicePreparer() {
+//		return new BasicProxyPreparer();
+//	}
+//
+//	
+//	private ServiceDescriptor[] serviceDescriptorArray() {
+//		final String port = "8080";
+//		try {
+//			String codebase = ConfigUtil.concat(
+//				    new Object[] { 
+//				    		"http://", ConfigUtil.getHostName(), ":"+port+"/reggie-dl.jar",
+//				    		" ",
+//				            "http://", ConfigUtil.getHostName(), ":"+port+"/jsk-dl.jar" } );
+//		
+//		final String policy = "/home/tom/projects/river/easystart/src-extra/policy.all";
+//		final String classpath = "/home/tom/projects/river/easystart/lib/reggie.jar";
+//		final String config = "/home/tom/projects/river/easystart/src-extra/empty.config";
+////		final String config = "/home/tom/projects/river/easystart/src-extra/jrmp-reggie.config";
+//		
+//		
+//		return new ServiceDescriptor[] { 	
+//			new NonActivatableServiceDescriptor(
+//			    codebase, 	
+//			    policy, 
+//			    classpath,
+//			    "com.sun.jini.reggie.TransientRegistrarImpl",
+//			    new String[] { config, 
+//			    		       "com.sun.jini.reggie.serverExporter=new net.jini.jrmp.JrmpExporter()",
+////			    		       "com.sun.jini.reggie.initialMemberGroups=new String[] {}",
+////			    		       "com.sun.jini.reggie.initialLookupGroups=new String[] {}",
+//			    		       "com.sun.jini.reggie.initialMemberGroups=new String[] { \"Lester\", \"Jeff\" }",
+//			    		       "com.sun.jini.reggie.initialLookupGroups=new String[] { \"LUG1\", \"LUG2\" }",
+//			    		       "com.sun.jini.reggie.port="+port,
+//			    		       "com.sun.jini.reggie.nameEntry=new net.jini.lookup.entry.Name(\"Reggie\")",
+//			    		       "com.sun.jini.reggie.initialLookupAttributes = new net.jini.core.entry.Entry[] { nameEntry }"/*,
+//			    		       "com.sun.jini.reggie.initialUnicastDiscoveryPort=4144"*/})};
+//		
+//		} catch (UnknownHostException e) {
+//			throw new RuntimeException(e);
+//		}
+//	}
+	
 }

Modified: river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/OutriggerServiceConfiguration.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/OutriggerServiceConfiguration.java?rev=1241049&r1=1241048&r2=1241049&view=diff
==============================================================================
--- river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/OutriggerServiceConfiguration.java (original)
+++ river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/OutriggerServiceConfiguration.java Mon Feb  6 15:43:22 2012
@@ -28,7 +28,13 @@ public class OutriggerServiceConfigurati
 											AbsolutePath pathToStartConfig, 
 											AbsolutePath pathToPolicy,
 											AbsolutePath[] serviceClasspath) {
-		super(httpPort, riverHome, pathToStartConfig, pathToPolicy, serviceClasspath);
+		super(httpPort, 
+			  riverHome, 
+			  pathToStartConfig, 
+			  pathToPolicy, 
+			  serviceClasspath,
+			  "com.sun.jini.outrigger",
+			  "com.sun.jini.outrigger.TransientOutriggerImpl");
 	}
 
 //	@Override

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=1241049&r1=1241048&r2=1241049&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 Feb  6 15:43:22 2012
@@ -46,7 +46,25 @@ public class StartLookupService {
 		log.info("Using RIVER_HOME="+RIVER_HOME);
 		log.info("Using HTTP_PORT="+HTTP_PORT);
 		
-		ServiceStarter.main(new LookupServiceConfiguration());
+		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";
+		
+		LookupServiceConfiguration config = new LookupServiceConfiguration(8080,
+				riverHome,
+				new AbsolutePath(pathToConfig),
+				new AbsolutePath(pathToPolicy),
+				new AbsolutePath[] {
+					new AbsolutePath(classpath)
+				}
+		);
+		config.addLookupGroup("LUG1");
+		config.addLookupGroup("LUG2");
+		config.addMemberGroup("Lester");
+		config.addMemberGroup("Jeff");
+		
+		ServiceStarter.main(config);
 	}
 
 	private static void validateArgs(String[] args) {

Added: river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/GroupEncapsulatorTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/GroupEncapsulatorTest.java?rev=1241049&view=auto
==============================================================================
--- river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/GroupEncapsulatorTest.java (added)
+++ river/jtsk/skunk/easystart/test/src/org/apache/river/extra/easystart/GroupEncapsulatorTest.java Mon Feb  6 15:43:22 2012
@@ -0,0 +1,63 @@
+package org.apache.river.extra.easystart;
+
+import junit.framework.TestCase;
+
+public class GroupEncapsulatorTest extends TestCase {
+
+	public void testGroupEncapsulator_lookupGroups() {
+		
+		final String pack = "com.sun.jini.reggie";
+		final String g1 = "Jeff";
+		final String g2 = "Lester";
+		
+		final String expected = 
+				"com.sun.jini.reggie.initialLookupGroups=new String[] {" +
+				"\""+g1+"\"" +
+				"," +
+				"\""+g2+"\"" +
+				"}"
+				;
+		
+		GroupEncapsulator instance = new GroupEncapsulator();
+		
+		assertFalse(instance.hasAny());
+		
+		instance.asLookupGroups()
+				.setPackage(pack)
+				.addGroup(g1)
+				.addGroup(g2);
+		
+		assertTrue(instance.hasAny());
+		
+		assertEquals(expected, instance.toConfigString());
+	}
+	
+	public void testGroupEncapsulator_memberGroups() {
+		
+		final String pack = "com.sun.jini.reggie";
+		final String g1 = "Chuck";
+		final String g2 = "Sarah";
+		
+		final String expected = 
+				"com.sun.jini.reggie.initialMemberGroups=new String[] {" +
+						"\""+g1+"\"" +
+						"," +
+						"\""+g2+"\"" +
+						"}"
+						;
+		
+		GroupEncapsulator instance = new GroupEncapsulator();
+		
+		assertFalse(instance.hasAny());
+		
+		instance.asMemberGroups()
+		.setPackage(pack)
+		.addGroup(g1).
+		addGroup(g2);
+		
+		assertTrue(instance.hasAny());
+		
+		assertEquals(expected, instance.toConfigString());
+	}
+	
+}