Author: thobbs
Date: Thu Apr 12 11:53:22 2012
New Revision: 1325210

URL: http://svn.apache.org/viewvc?rev=1325210&view=rev
Log:
Starting to get easy config working with reggie

Added:
    
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/
    
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConventionalLookupServiceConfiguration.java
    
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Options.java
    
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Setting.java
    
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/start-reggie.config
Modified:
    
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

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=1325210&r1=1325209&r2=1325210&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
 Thu Apr 12 11:53:22 2012
@@ -47,10 +47,10 @@ public class CheckServices {
                
                checkHttpServer(port);
                checkLookupServices();
-               checkSpaces();
-               checkTransactionManagers();
-               
-               checkAll();
+//             checkSpaces();
+//             checkTransactionManagers();
+//             
+//             checkAll();
        }
 
        private static void checkHttpServer(int port) throws IOException {

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=1325210&r1=1325209&r2=1325210&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
 Thu Apr 12 11:53:22 2012
@@ -19,10 +19,15 @@
 package org.apache.river.extra.easystart;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.logging.Logger;
 
+import 
org.apache.river.extra.easystart.config.ConventionalLookupServiceConfiguration;
+
+import net.jini.config.Configuration;
 import net.jini.config.ConfigurationException;
 
+
 import com.sun.jini.start.ServiceStarter;
 
 public class StartLookupService {
@@ -36,8 +41,9 @@ public class StartLookupService {
        /**
         * @param args
         * @throws ConfigurationException 
+        * @throws IOException 
         */
-       public static void main(String[] args) throws ConfigurationException {
+       public static void main(String[] args) throws ConfigurationException, 
IOException {
                validateArgs(args);
                
                final String RIVER_HOME = args[RIVER_HOME_INDEX];
@@ -49,22 +55,39 @@ public class StartLookupService {
                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");
+               //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 = 
ConventionalLookupServiceConfiguration.config();
                ServiceStarter.main(config);
+               
        }
 
        private static void validateArgs(String[] args) {

Added: 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConventionalLookupServiceConfiguration.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConventionalLookupServiceConfiguration.java?rev=1325210&view=auto
==============================================================================
--- 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConventionalLookupServiceConfiguration.java
 (added)
+++ 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/ConventionalLookupServiceConfiguration.java
 Thu Apr 12 11:53:22 2012
@@ -0,0 +1,119 @@
+package org.apache.river.extra.easystart.config;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+import net.jini.config.ConfigurationException;
+import net.jini.config.ConfigurationFile;
+
+import org.apache.river.config.builder.VelocityConfigurationBuilder;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+
+public class ConventionalLookupServiceConfiguration extends ConfigurationFile {
+
+       private static final Logger LOGGER = 
Logger.getLogger(ConventionalLookupServiceConfiguration.class.getName());
+       
+//     private static final Reader fileReader() {
+//             InputStream in = 
Options.class.getResourceAsStream("start-reggie.config");
+//             return new BufferedReader(new InputStreamReader(in));
+//     }
+       
+       public static ConventionalLookupServiceConfiguration 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.setGroup("lappy");
+//             opts.setHttpPort("8080");
+//             opts.setJiniPort(4931);
+//             opts.setPackageName("com.sun.jini.reggie");
+               
+               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());
+//        for(Setting setting : opts.OPTIONS) {
+//             String format = setting.getFormatter();
+//             context.put("default_"+setting.getName(),
+//                                 String.format(format, 
setting.getDefault()));
+//             context.put(setting.getName(),
+//                                     String.format(format, 
setting.getOverride()));
+//        }
+//        context.put("servicePackageName", 
String.format("\"%s\"",opts.getPackageName()+" {}"));
+//        context.put("riverHome", String.format("\"%s\"",opts.getRiverHome()) 
);
+//        context.put("groups", String.format("\\\"%s\\\"",opts.getGroup()) );
+//        context.put("httpPort", opts.getHttpPort());
+//        context.put("jiniPort", opts.getJiniPort());
+        
+        Template template = ve.getTemplate( 
Options.class.getResource("start-reggie.config").toExternalForm() );
+        
+        StringWriter sw = new StringWriter();
+
+        template.merge(context, sw);
+        
+        String s = sw.toString();
+        
+        LOGGER.warning(s);
+        
+        StringReader sr = new StringReader(s);
+        
+        return new ConventionalLookupServiceConfiguration(sr, new 
String[0]);//opts.getOptionsArray());
+       }
+       
+       private ConventionalLookupServiceConfiguration(Reader reader, String[] 
options) throws ConfigurationException {
+               super(reader,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);
+               }
+       }
+}

Added: 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Options.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Options.java?rev=1325210&view=auto
==============================================================================
--- 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Options.java
 (added)
+++ 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Options.java
 Thu Apr 12 11:53:22 2012
@@ -0,0 +1,82 @@
+package org.apache.river.extra.easystart.config;
+
+import java.util.logging.Logger;
+
+public class Options {
+
+       private static final Logger LOGGER = 
Logger.getLogger(Options.class.getName());
+
+       public static final String NO_FORMAT = "%s";
+       public static final String STRING_FORMAT = "\"%s\"";
+       public static final String INTEGER_FORMAT = "%s";
+       
+       private static final String RIVER_HOME_ENV_NAME = "RIVER_HOME";
+       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);
+               }
+       }
+       
+       public Setting RIVER_HOME = new Setting("riverHome", RIVER_HOME_DIR, 
STRING_FORMAT, false);
+       public Setting PACKAGE_NAME = new Setting("servicePackageName", 
"org.apache.river", NO_FORMAT, false);
+       
+       public Setting JINI_PORT = new Setting("initialUnicastDiscoveryPort", 
"4160", INTEGER_FORMAT, true);
+       public Setting HTTP_PORT = new Setting("httpPort", "8080", 
INTEGER_FORMAT, false);
+       
+       public Setting[] OPTIONS = new Setting[] {
+                       RIVER_HOME,
+                       PACKAGE_NAME,
+                       JINI_PORT,
+                       HTTP_PORT
+       };
+       
+//     private static final String RIVER_HOME = "RIVER_HOME";
+//     private static final String RIVER_HOME_DIR;
+//     static {
+//             RIVER_HOME_DIR = (String) 
System.getProperties().get(RIVER_HOME);
+//             if(null == RIVER_HOME_DIR) {
+//                     LOGGER.severe(RIVER_HOME+" has not been set");
+//             } else {
+//                     LOGGER.severe("Using "+RIVER_HOME+"="+RIVER_HOME_DIR);
+//             }
+//             
+//     }
+//     
+//     private String group = "grp";
+//     private String httpPort = "80";
+//     private int jiniPort = 4160;
+//     private String packageName = "";
+//     
+//     public String getRiverHome() {
+//             return RIVER_HOME_DIR;
+//     }
+//     
+//     public void setGroup(String g) { this.group = g; }
+//     public String getGroup() { return this.group; }
+//
+//     public void setHttpPort(String port) { this.httpPort = port; }
+//     public String getHttpPort() { return this.httpPort; }
+//     
+//     public void setJiniPort(int port) { this.jiniPort = port; }
+//     public int getJiniPort() { return this.jiniPort; }
+//
+//     public String[] getOptionsArray() {
+//             return new String[] {
+//                             getRiverHome()+"src-extra/empty.config",
+//                             "com.sun.jini.reggie.initialMemberGroups = new 
String[] {\""+ group+"\"}",
+//                             
"com.sun.jini.reggie.initialUnicastDiscoveryPort = "+jiniPort
+//             };
+//     }
+//
+//     public void setPackageName(String packageName) {
+//             this.packageName = packageName;
+//     }
+//     public String getPackageName() {
+//             return this.packageName;
+//     }
+}

Added: 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Setting.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Setting.java?rev=1325210&view=auto
==============================================================================
--- 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Setting.java
 (added)
+++ 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/Setting.java
 Thu Apr 12 11:53:22 2012
@@ -0,0 +1,56 @@
+package org.apache.river.extra.easystart.config;
+
+
+/**
+ * This is an enum-like class which encapsulates some default options when
+ * using River services.
+ * 
+ * It is not an enum, on purpose, in order to allow other users to easily
+ * extend and replace as required.
+ * 
+ * @author Tom Hobbs
+ *
+ */
+public class Setting {
+
+//     public Setting<String[]> LOOKUP_GROUPS = new 
Setting<String[]>(LookupDiscovery.ALL_GROUPS);
+//     public Setting<String[]> MEMBER_GROUPS = new 
Setting<String[]>(LookupDiscovery.ALL_GROUPS);
+       
+       private final String name, defaultValue, format;
+       private final boolean serviceDescription;
+       private String override;
+       
+       protected Setting(String name, String defaultValue, String format, 
boolean serviceDescription) {
+               this.name = name;
+               this.defaultValue = defaultValue;
+               this.format = format;
+               this.serviceDescription = serviceDescription;
+               
+               this.override = defaultValue;
+       }
+       
+       public String getName() {
+               return this.name;
+       }
+       
+       public String getDefault() {
+               return defaultValue;
+       }
+       
+       public String getFormatter() {
+               return format;
+       }
+       
+       public boolean isServiceDescription() {
+               return serviceDescription;
+       }
+       
+       public void setOverride(String override) {
+               this.override = override;
+       }
+       
+       public String getOverride() {
+               return this.override;
+       }
+       
+}

Added: 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/start-reggie.config
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/start-reggie.config?rev=1325210&view=auto
==============================================================================
--- 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/start-reggie.config
 (added)
+++ 
river/jtsk/skunk/easystart/src-extra/org/apache/river/extra/easystart/config/start-reggie.config
 Thu Apr 12 11:53:22 2012
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import net.jini.jrmp.JrmpExporter;
+
+import com.sun.jini.config.ConfigUtil;
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+
+com.sun.jini.start {
+
+    private static codebase =
+       ConfigUtil.concat(
+           new Object[] { 
+               "http://";, ConfigUtil.getHostName(), 
":${httpPort}/reggie-dl.jar",
+               " ",
+        "http://";, ConfigUtil.getHostName(), ":${httpPort}/jsk-dl.jar" } );
+        
+    private static policy = ${riverHome}+"/src-extra/policy.all";
+    private static classpath = ${riverHome}+"/lib/reggie.jar";
+
+    static serviceDescriptors = new ServiceDescriptor[] {
+       new NonActivatableServiceDescriptor(
+           codebase, 
+           policy, 
+           classpath,
+           "com.sun.jini.reggie.TransientRegistrarImpl",
+           new String[] { 
+           "-"
+           //overrides
+           ${options}
+           //overrides end
+           /*,
+           "com.sun.jini.reggie.initialMemberGroups=new String[] {${groups}}"
+           
"com.sun.jini.reggie.initialUnicastDiscoveryPort=${initialUnicastDiscoveryPort}",
+           "com.sun.jini.reggie.serverExporter="${serverExporter}"
+           */
+           }
+           )
+    };
+}
+
+${servicePackageName} {
+
+//defaults
+    ${defaults}
+//defaults end
+
+    initialMemberGroups = new String[] {};
+//    initialUnicastDiscoveryPort = ${default_initialUnicastDiscoveryPort}; 
//4160;
+    serverExporter=new net.jini.jrmp.JrmpExporter();
+
+//    //static serverExporter = new BasicJeriExporter( ${registryEndpoint}, 
new BasicILFactory());
+//    serverExporter=new net.jini.jrmp.JrmpExporter();
+//
+}


Reply via email to