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


Reply via email to