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());
+ }
+
+}