diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/HomeBase.java b/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java similarity index 97% rename from jetty-start/src/main/java/org/eclipse/jetty/start/HomeBase.java rename to jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java index 383a42a54cc..fe9923b5c10 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/HomeBase.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java @@ -36,19 +36,19 @@ import java.util.Objects; *

* The ${jetty.base} directory is where the execution specific configuration and webapps are obtained from. */ -public class HomeBase +public class BaseHome { private File homeDir; private File baseDir; - public HomeBase() + public BaseHome() { String userDir = System.getProperty("user.dir"); this.homeDir = new File(System.getProperty("jetty.home",userDir)); this.baseDir = new File(System.getProperty("jetty.base",homeDir.getAbsolutePath())); } - public HomeBase(File homeDir, File baseDir) + public BaseHome(File homeDir, File baseDir) { this.homeDir = homeDir; this.baseDir = baseDir==null?homeDir:baseDir; @@ -258,13 +258,8 @@ public class HomeBase { return path; } - - String value = homeDir.getAbsolutePath(); - - if (path.startsWith(value)) - { - return "${jetty.home}" + path.substring(value.length()); - } + + String value; if (isBaseDifferent()) { @@ -274,6 +269,14 @@ public class HomeBase return "${jetty.base}" + path.substring(value.length()); } } + + value = homeDir.getAbsolutePath(); + + if (path.startsWith(value)) + { + return "${jetty.home}" + path.substring(value.length()); + } + return path; } } diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Config.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Config.java index 1af85edaa97..5f92976211c 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Config.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Config.java @@ -49,8 +49,8 @@ import java.util.TreeSet; *

* *

- * The behaviour of Main is controlled by the "org/eclipse/start/start.config" file obtained as a resource - * or file. This can be overridden with the START system property. The format of each line in this file is: + * The behaviour of Main is controlled by the "org/eclipse/start/start.config" file obtained as a resource or file. This can be overridden with the + * START system property. The format of each line in this file is: *

* *

@@ -101,18 +101,15 @@ import java.util.TreeSet; *

  • exists file - true if file/dir exists
  • *
  • java OPERATOR version - java version compared to literal
  • *
  • nargs OPERATOR number - number of command line args compared to literal
  • - *
  • OPERATOR := one of "<",">","<=",">=", - * "==","!="
  • + *
  • OPERATOR := one of "<",">","<=",">=", "==","!="
  • * * *

    - * CONDITIONS can be combined with AND OR or !, with AND being the - * assume operator for a list of CONDITIONS. + * CONDITIONS can be combined with AND OR or !, with AND being the assume operator for a list of CONDITIONS. *

    * *

    - * Classpath operations are evaluated on the fly, so once a class or jar is added to the classpath, subsequent available - * conditions will see that class. + * Classpath operations are evaluated on the fly, so once a class or jar is added to the classpath, subsequent available conditions will see that class. *

    * *

    @@ -120,13 +117,13 @@ import java.util.TreeSet; *

    * *

    - * Note: a special discovered section identifier [=path_to_directory/*] is allowed to auto-create section - * IDs, based on directory names found in the path specified in the "path_to_directory/" part of the identifier. + * Note: a special discovered section identifier [=path_to_directory/*] is allowed to auto-create section IDs, based on directory names found in + * the path specified in the "path_to_directory/" part of the identifier. *

    * *

    - * Clauses after a section header will only be included if they match one of the tags in the options property. By - * default options are set to "default,*" or the OPTIONS property may be used to pass in a list of tags, eg. : + * Clauses after a section header will only be included if they match one of the tags in the options property. By default options are set to "default,*" or the + * OPTIONS property may be used to pass in a list of tags, eg. : *

    * *
    @@ -146,13 +143,12 @@ public class Config
         public static final String DEFAULT_SECTION = "";
         static
         {
    -        String ver = System.getProperty("jetty.version", null);
    -        
    -        if(ver == null) {
    +        String ver = System.getProperty("jetty.version",null);
    +
    +        if (ver == null)
    +        {
                 Package pkg = Config.class.getPackage();
    -            if (pkg != null && 
    -                    "Eclipse.org - Jetty".equals(pkg.getImplementationVendor()) &&
    -                    (pkg.getImplementationVersion() != null))
    +            if (pkg != null && "Eclipse.org - Jetty".equals(pkg.getImplementationVendor()) && (pkg.getImplementationVersion() != null))
                 {
                     ver = pkg.getImplementationVersion();
                 }
    @@ -173,15 +169,15 @@ public class Config
         private static final String __version;
         private static boolean DEBUG = false;
         private static Config __instance;
    -    
    -    private final HomeBase _homebase;
    +
    +    private final BaseHome _homebase;
         private final Map _properties = new HashMap();
         private final Map _classpaths = new HashMap();
         private final List _xml = new ArrayList();
         private String _classname = null;
     
         private int argCount = 0;
    -    
    +
         private final Set _options = new TreeSet(new Comparator()
         {
             // Make sure "*" is always at the end of the list
    @@ -198,16 +194,16 @@ public class Config
                 return o1.compareTo(o2);
             }
         });
    -    
    +
         public Config()
         {
    -        __instance=this;
    -        _homebase = new HomeBase();
    +        __instance = this;
    +        _homebase = new BaseHome();
             setProperty("jetty.home",_homebase.getHome());
             setProperty("jetty.base",_homebase.getBase());
         }
    -    
    -    public HomeBase getHomeBase()
    +
    +    public BaseHome getBaseHome()
         {
             return _homebase;
         }
    @@ -222,7 +218,7 @@ public class Config
             }
             return cp;
         }
    -    
    +
         private boolean addClasspathComponent(List sections, String component)
         {
             for (String section : sections)
    @@ -300,12 +296,12 @@ public class Config
                 System.err.println(msg);
             }
         }
    -    
    -    public static void debug(String format, Object ... args)
    +
    +    public static void debug(String format, Object... args)
         {
             if (DEBUG)
             {
    -            System.err.printf(format+"%n",args);
    +            System.err.printf(format + "%n",args);
             }
         }
     
    @@ -380,8 +376,7 @@ public class Config
          * 
          * @param optionIds
          *            the list of section ids to fetch
    -     * @return the {@link Classpath} representing combination all of the selected sectionIds, combined with the default
    -     *         section id, and '*' special id.
    +     * @return the {@link Classpath} representing combination all of the selected sectionIds, combined with the default section id, and '*' special id.
          */
         public Classpath getCombinedClasspath(Collection optionIds)
         {
    @@ -410,31 +405,35 @@ public class Config
         {
             _properties.clear();
         }
    -    
    -    /* This method is static so it can be accessed by XmlConfiguration */ 
    +
    +    /* This method is static so it can be accessed by XmlConfiguration */
         public static Properties getProperties()
         {
             Properties properties = new Properties();
             // Add System Properties First
             Enumeration ensysprop = System.getProperties().propertyNames();
    -        while(ensysprop.hasMoreElements()) {
    +        while (ensysprop.hasMoreElements())
    +        {
                 String name = (String)ensysprop.nextElement();
    -            properties.put(name, System.getProperty(name));
    +            properties.put(name,System.getProperty(name));
             }
             // Add Config Properties Next (overwriting any System Properties that exist)
    -        for (String key : __instance._properties.keySet()) {
    +        for (String key : __instance._properties.keySet())
    +        {
                 properties.put(key,__instance._properties.get(key));
             }
             return properties;
         }
    -    
    +
         public String getProperty(String name)
         {
    -        if ("version".equalsIgnoreCase(name)) {
    +        if ("version".equalsIgnoreCase(name))
    +        {
                 return __version;
             }
             // Search Config Properties First
    -        if (_properties.containsKey(name)) {
    +        if (_properties.containsKey(name))
    +        {
                 return _properties.get(name);
             }
             // Return what exists in System.Properties otherwise.
    @@ -447,7 +446,7 @@ public class Config
             if (_properties.containsKey(name))
                 return _properties.get(name);
             // Return what exists in System.Properties otherwise.
    -        return System.getProperty(name, defaultValue);
    +        return System.getProperty(name,defaultValue);
         }
     
         /**
    @@ -543,7 +542,8 @@ public class Config
         /**
          * Parse the configuration
          * 
    -     * @param stream the stream to read from
    +     * @param stream
    +     *            the stream to read from
          * @throws IOException
          */
         public void parse(InputStream stream) throws IOException
    @@ -558,7 +558,7 @@ public class Config
          */
         public void parse(Reader reader) throws IOException
         {
    -        try(BufferedReader buf = new BufferedReader(reader))
    +        try (BufferedReader buf = new BufferedReader(reader))
             {
                 List options = new ArrayList();
                 options.add(DEFAULT_SECTION);
    @@ -583,8 +583,8 @@ public class Config
     
                         // Normal case: section identifier (possibly separated by commas)
                         options = Arrays.asList(identifier.split(","));
    -                    List option_ids=new ArrayList();
    -                    
    +                    List option_ids = new ArrayList();
    +
                         // Ensure section classpaths exist
                         for (String optionId : options)
                         {
    @@ -593,23 +593,22 @@ public class Config
     
                             if (!_classpaths.containsKey(optionId))
                                 _classpaths.put(optionId,new Classpath());
    -                        
    +
                             if (!option_ids.contains(optionId))
                                 option_ids.add(optionId);
                         }
    -                    
     
                         // Process Dynamic
                         for (String optionId : options)
                         {
                             if (optionId.charAt(0) != '=')
                                 continue;
    -                        
    +
                             option_ids = processDynamicSectionIdentifier(optionId.substring(1),option_ids);
                         }
    -                    
    +
                         options = option_ids;
    -                    
    +
                         continue;
                     }
     
    @@ -685,18 +684,18 @@ public class Config
                                 String version = st.nextToken();
                                 ver.parse(version);
                                 eval = (operator.equals("<") && java_version.compare(ver) < 0) || (operator.equals(">") && java_version.compare(ver) > 0)
    -                            || (operator.equals("<=") && java_version.compare(ver) <= 0) || (operator.equals("=<") && java_version.compare(ver) <= 0)
    -                            || (operator.equals("=>") && java_version.compare(ver) >= 0) || (operator.equals(">=") && java_version.compare(ver) >= 0)
    -                            || (operator.equals("==") && java_version.compare(ver) == 0) || (operator.equals("!=") && java_version.compare(ver) != 0);
    +                                    || (operator.equals("<=") && java_version.compare(ver) <= 0) || (operator.equals("=<") && java_version.compare(ver) <= 0)
    +                                    || (operator.equals("=>") && java_version.compare(ver) >= 0) || (operator.equals(">=") && java_version.compare(ver) >= 0)
    +                                    || (operator.equals("==") && java_version.compare(ver) == 0) || (operator.equals("!=") && java_version.compare(ver) != 0);
                             }
                             else if (condition.equals("nargs"))
                             {
                                 String operator = st.nextToken();
                                 int number = Integer.parseInt(st.nextToken());
                                 eval = (operator.equals("<") && argCount < number) || (operator.equals(">") && argCount > number)
    -                            || (operator.equals("<=") && argCount <= number) || (operator.equals("=<") && argCount <= number)
    -                            || (operator.equals("=>") && argCount >= number) || (operator.equals(">=") && argCount >= number)
    -                            || (operator.equals("==") && argCount == number) || (operator.equals("!=") && argCount != number);
    +                                    || (operator.equals("<=") && argCount <= number) || (operator.equals("=<") && argCount <= number)
    +                                    || (operator.equals("=>") && argCount >= number) || (operator.equals(">=") && argCount >= number)
    +                                    || (operator.equals("==") && argCount == number) || (operator.equals("!=") && argCount != number);
                             }
                             else
                             {
    @@ -758,7 +757,7 @@ public class Config
                         // Recursively add all unconsidered JAR and ZIP files to classpath
                         if (subject.endsWith("/**"))
                         {
    -                        //directory hierarchy of jar files - recursively add all jars and zips in the hierarchy
    +                        // directory hierarchy of jar files - recursively add all jars and zips in the hierarchy
                             File dir = new File(fixPath(file.substring(0,file.length() - 2)));
                             addJars(options,dir,true);
                             continue;
    @@ -834,27 +833,27 @@ public class Config
             }
         }
     
    -    private List processDynamicSectionIdentifier(String dynamicPathId,List sections) throws IOException
    +    private List processDynamicSectionIdentifier(String dynamicPathId, List sections) throws IOException
         {
             String rawPath;
             boolean deep;
    -        
    +
             if (dynamicPathId.endsWith("/*"))
             {
    -            deep=false;
    +            deep = false;
                 rawPath = fixPath(dynamicPathId.substring(0,dynamicPathId.length() - 1));
             }
             else if (dynamicPathId.endsWith("/**"))
             {
    -            deep=true;
    +            deep = true;
                 rawPath = fixPath(dynamicPathId.substring(0,dynamicPathId.length() - 2));
             }
    -        else 
    +        else
             {
                 String msg = "Illegal dynamic path [" + dynamicPathId + "]";
                 throw new IOException(msg);
             }
    -        
    +
             File parentDir = new File(expand(rawPath));
             if (!parentDir.exists())
                 return sections;
    @@ -870,24 +869,24 @@ public class Config
     
             List dyn_sections = new ArrayList();
             List super_sections = new ArrayList();
    -        if (sections!=null)
    +        if (sections != null)
                 super_sections.addAll(sections);
    -        
    +
             for (File dir : dirs)
             {
                 String id = dir.getName();
                 if (!_classpaths.keySet().contains(id))
    -                _classpaths.put(id, new Classpath());
    -            
    +                _classpaths.put(id,new Classpath());
    +
                 dyn_sections.clear();
    -            if (sections!=null)
    +            if (sections != null)
                     dyn_sections.addAll(sections);
                 dyn_sections.add(id);
                 super_sections.add(id);
                 debug("dynamic: " + dyn_sections);
                 addJars(dyn_sections,dir,deep);
             }
    -        
    +
             return super_sections;
         }
     
    @@ -938,12 +937,12 @@ public class Config
             }
             if (name.equals("jetty.base"))
             {
    -            File base=new File(value);
    +            File base = new File(value);
                 try
                 {
    -                value=base.getCanonicalPath();
    +                value = base.getCanonicalPath();
                 }
    -            catch(Exception e)
    +            catch (Exception e)
                 {
                     e.printStackTrace();
                 }
    @@ -953,10 +952,10 @@ public class Config
     
         public void addOption(String option)
         {
    -        _options.add(option); 
    +        _options.add(option);
             _properties.put("OPTIONS",join(_options,","));
         }
    -    
    +
         public Set getKnownOptions()
         {
             return _classpaths.keySet();
    @@ -972,7 +971,7 @@ public class Config
             _options.remove(option);
             _properties.put("OPTIONS",join(_options,","));
         }
    -    
    +
         private String join(Collection coll, String delim)
         {
             StringBuffer buf = new StringBuffer();
    diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
    index afc6231739c..f194655457f 100644
    --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
    +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
    @@ -121,21 +121,26 @@ public class Main implements IncludeListener
         {
             String source = "";
     
    -        // Handle default ini args
             ArrayList arguments = new ArrayList<>(Arrays.asList(args));
    -        boolean ini = false;
    -        for (String arg : arguments)
    -        {
    -            if (arg.startsWith("--ini=") || arg.equals("--ini"))
    -            {
    -                ini = true;
    -            }
    -        }
    -        if (!ini)
    -        {
    +        
    +        // Ensure ini is declared
    +        if(findArgumentPrefix(arguments, "--ini=") == null) {
                 arguments.add(0,"--ini=start.ini");
             }
    -
    +        
    +        // Set Home and Base at the start, as all other paths encountered
    +        // will be based off of them.
    +        String home = findArgumentPrefix(arguments, "-Djetty.home=");
    +        if(home != null) {
    +            String value = home.replaceFirst("^[^=]*=","");
    +            _config.getBaseHome().setHomeDir(new File(value));
    +        }
    +        String base = findArgumentPrefix(arguments, "-Djetty.base=");
    +        if(base != null) {
    +            String value = base.replaceFirst("^[^=]*=","");
    +            _config.getBaseHome().setBaseDir(new File(value));
    +        }
    +        
             // The XML Configuration Files to initialize with
             List xmls = new ArrayList();
     
    @@ -216,11 +221,10 @@ public class Main implements IncludeListener
     
                 if (arg.startsWith("--ini=") || arg.equals("--ini"))
                 {
    -                ini = true;
                     if (arg.length() > 6)
                     {
                         String name = arg.substring(6);
    -                    File file = _config.getHomeBase().getFile(name);
    +                    File file = _config.getBaseHome().getFile(name);
                         StartIni startini = new StartIni(file,this);
                         _iniFiles.add(file);
                         arguments.addAll(i + 1,startini.getLines());
    @@ -374,16 +378,28 @@ public class Main implements IncludeListener
                 }
                 xmls.add(arg);
             }
    -
    +        
             return xmls;
         }
     
    +    private String findArgumentPrefix(ArrayList arguments, String prefix)
    +    {
    +        for (String arg : arguments)
    +        {
    +            if (arg.startsWith(prefix))
    +            {
    +                return arg;
    +            }
    +        }
    +        return null;
    +    }
    +
         @Override
         public List onIniInclude(String path) throws IOException
         {
             List included = new ArrayList<>();
     
    -        HomeBase hb = _config.getHomeBase();
    +        BaseHome hb = _config.getBaseHome();
     
             // Allow --enable and --disable to work
             _iniIncludePaths.add(path);
    @@ -498,7 +514,7 @@ public class Main implements IncludeListener
                             };
     
                             // list etc
    -                        List configFiles = _config.getHomeBase().listFiles("etc",filter);
    +                        List configFiles = _config.getBaseHome().listFiles("etc",filter);
     
                             for (File configFile : configFiles)
                             {
    @@ -509,7 +525,7 @@ public class Main implements IncludeListener
                         {
                             for (File file : _iniFiles)
                             {
    -                            String path = _config.getHomeBase().toShortForm(file);
    +                            String path = _config.getBaseHome().toShortForm(file);
                                 System.out.printf("%s%s%n",indent,path);
     
                                 if (Config.isDebug())
    @@ -542,12 +558,12 @@ public class Main implements IncludeListener
     
         private String path(String path)
         {
    -        return _config.getHomeBase().toShortForm(path);
    +        return _config.getBaseHome().toShortForm(path);
         }
     
         private String path(File file)
         {
    -        return _config.getHomeBase().toShortForm(file);
    +        return _config.getBaseHome().toShortForm(file);
         }
     
         public void invokeMain(ClassLoader classloader, String classname, List args) throws IllegalAccessException, InvocationTargetException,
    @@ -622,7 +638,7 @@ public class Main implements IncludeListener
                 System.err.println("java.class.path=" + classpath);
                 System.err.println("classloader=" + cl);
                 System.err.println("classloader.parent=" + cl.getParent());
    -            System.err.println("properties=" + _config.getProperties());
    +            System.err.println("properties=" + Config.getProperties());
             }
     
             for (String m : _enable)
    @@ -753,14 +769,14 @@ public class Main implements IncludeListener
             }
     
             // Try normal locations
    -        File xml = _config.getHomeBase().getFile(xmlFilename);
    +        File xml = _config.getBaseHome().getFile(xmlFilename);
             if (FS.isFile(xml))
             {
                 return xml.getAbsolutePath();
             }
     
             // Try again, but prefixed with "etc/"
    -        xml = _config.getHomeBase().getFile("etc/" + xmlFilename);
    +        xml = _config.getBaseHome().getFile("etc/" + xmlFilename);
             if (FS.isFile(xml))
             {
                 return xml.getAbsolutePath();
    @@ -777,8 +793,8 @@ public class Main implements IncludeListener
             {
                 cmd.addArg(x);
             }
    -        cmd.addRawArg("-Djetty.home=" + _config.getHomeBase().getHome());
    -        cmd.addRawArg("-Djetty.base=" + _config.getHomeBase().getBase());
    +        cmd.addRawArg("-Djetty.home=" + _config.getBaseHome().getHome());
    +        cmd.addRawArg("-Djetty.base=" + _config.getBaseHome().getBase());
     
             // Special Stop/Shutdown properties
             ensureSystemPropertySet("STOP.PORT");
    @@ -796,7 +812,7 @@ public class Main implements IncludeListener
             cmd.addRawArg(_config.getMainClassname());
     
             // Check if we need to pass properties as a file
    -        Properties properties = _config.getProperties();
    +        Properties properties = Config.getProperties();
             if (properties.size() > 0)
             {
                 File prop_file = File.createTempFile("start",".properties");
    @@ -826,7 +842,7 @@ public class Main implements IncludeListener
                 return; // done
             }
     
    -        Properties props = _config.getProperties();
    +        Properties props = Config.getProperties();
             if (props.containsKey(key))
             {
                 String val = props.getProperty(key,null);
    @@ -900,8 +916,8 @@ public class Main implements IncludeListener
             System.out.println("Note: If using multiple options (eg: 'Server,servlet,webapp,jms,jmx') "
                     + "then overlapping entries will not be repeated in the eventual classpath.");
             System.out.println();
    -        System.out.printf("${jetty.home} = %s%n",_config.getHomeBase().getHome());
    -        System.out.printf("${jetty.base} = %s%n",_config.getHomeBase().getBase());
    +        System.out.printf("${jetty.home} = %s%n",_config.getBaseHome().getHome());
    +        System.out.printf("${jetty.base} = %s%n",_config.getBaseHome().getBase());
             System.out.println();
     
             for (String sectionId : sectionIds)
    @@ -1188,7 +1204,7 @@ public class Main implements IncludeListener
     
             FileFilter disabledModuleFilter = new FS.FilenameRegexFilter("(\\d\\d\\d-)?"+Pattern.quote(module)+"\\.ini(\\.disabled)?");
     
    -        HomeBase hb = _config.getHomeBase();
    +        BaseHome hb = _config.getBaseHome();
     
             // walk all ini include paths that were used
             boolean found = false;
    @@ -1247,7 +1263,7 @@ public class Main implements IncludeListener
     
             FileFilter disabledModuleFilter = new FS.FilenameRegexFilter("(\\d\\d\\d-)?"+Pattern.quote(module)+"\\.ini(\\.disabled)?");
     
    -        HomeBase hb = _config.getHomeBase();
    +        BaseHome hb = _config.getBaseHome();
     
             // walk all ini include paths that were used
             boolean found = false;
    diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java
    index 2772bec5f42..a5b4b0445fa 100644
    --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java
    +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java
    @@ -90,7 +90,7 @@ public class StartIni implements Iterable
                             }
                             else
                             {
    -                            // Collect HomeBase resolved included StartIni's
    +                            // Collect BaseHome resolved included StartIni's
                                 for (StartIni included : listener.onIniInclude(line))
                                 {
                                     // Merge each line with prior lines to prevent duplicates
    diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/HomeBaseTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/BaseHomeTest.java
    similarity index 92%
    rename from jetty-start/src/test/java/org/eclipse/jetty/start/HomeBaseTest.java
    rename to jetty-start/src/test/java/org/eclipse/jetty/start/BaseHomeTest.java
    index 2785a83cce3..4b559c0fc41 100644
    --- a/jetty-start/src/test/java/org/eclipse/jetty/start/HomeBaseTest.java
    +++ b/jetty-start/src/test/java/org/eclipse/jetty/start/BaseHomeTest.java
    @@ -30,9 +30,9 @@ import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
     import org.junit.Assert;
     import org.junit.Test;
     
    -public class HomeBaseTest
    +public class BaseHomeTest
     {
    -    private void assertFileList(HomeBase hb, String message, List expected, List files)
    +    private void assertFileList(BaseHome hb, String message, List expected, List files)
         {
             List actual = new ArrayList<>();
             for (File file : files)
    @@ -48,7 +48,7 @@ public class HomeBaseTest
             File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home");
             File baseDir = null;
     
    -        HomeBase hb = new HomeBase(homeDir,baseDir);
    +        BaseHome hb = new BaseHome(homeDir,baseDir);
             File startIni = hb.getFile("/start.ini");
     
             String ref = hb.toShortForm(startIni);
    @@ -64,7 +64,7 @@ public class HomeBaseTest
             File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home");
             File baseDir = null;
     
    -        HomeBase hb = new HomeBase(homeDir,baseDir);
    +        BaseHome hb = new BaseHome(homeDir,baseDir);
             List files = hb.listFiles("/start.d");
     
             List expected = new ArrayList<>();
    @@ -83,7 +83,7 @@ public class HomeBaseTest
             File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home");
             File baseDir = null;
     
    -        HomeBase hb = new HomeBase(homeDir,baseDir);
    +        BaseHome hb = new BaseHome(homeDir,baseDir);
             List files = hb.listFiles("/start.d", new FS.IniFilter());
     
             List expected = new ArrayList<>();
    @@ -102,7 +102,7 @@ public class HomeBaseTest
             File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home");
             File baseDir = MavenTestingUtils.getTestResourceDir("hb.1/base");
     
    -        HomeBase hb = new HomeBase(homeDir,baseDir);
    +        BaseHome hb = new BaseHome(homeDir,baseDir);
             List files = hb.listFiles("/start.d");
     
             List expected = new ArrayList<>();
    @@ -122,7 +122,7 @@ public class HomeBaseTest
             File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home");
             File baseDir = MavenTestingUtils.getTestResourceDir("hb.1/base");
     
    -        HomeBase hb = new HomeBase(homeDir,baseDir);
    +        BaseHome hb = new BaseHome(homeDir,baseDir);
             File startIni = hb.getFile("/start.ini");
     
             String ref = hb.toShortForm(startIni);