jetty.base is always defined.
This commit is contained in:
parent
578613e901
commit
b1b394b4bf
|
@ -204,9 +204,7 @@ public class Config
|
||||||
__instance=this;
|
__instance=this;
|
||||||
_homebase = new HomeBase();
|
_homebase = new HomeBase();
|
||||||
setProperty("jetty.home",_homebase.getHome());
|
setProperty("jetty.home",_homebase.getHome());
|
||||||
if(_homebase.hasBase()) {
|
setProperty("jetty.base",_homebase.getBase());
|
||||||
setProperty("jetty.base",_homebase.getBase());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomeBase getHomeBase()
|
public HomeBase getHomeBase()
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.io.Closeable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class FS
|
public class FS
|
||||||
|
@ -122,7 +123,7 @@ public class FS
|
||||||
|
|
||||||
public static boolean isXml(String filename)
|
public static boolean isXml(String filename)
|
||||||
{
|
{
|
||||||
return Pattern.compile(".xml$",Pattern.CASE_INSENSITIVE).matcher(filename).matches();
|
return filename.toLowerCase(Locale.ENGLISH).endsWith(".xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String separators(String path)
|
public static String separators(String path)
|
||||||
|
|
|
@ -28,7 +28,13 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* File access for <code>${jetty.home}</code>, and optional <code>${jetty.base}</code>, directories.
|
* File access for <code>${jetty.home}</code>, <code>${jetty.base}</code>, directories.
|
||||||
|
* <p>
|
||||||
|
* By default, both <code>${jetty.home}</code> and <code>${jetty.base}</code> are the same directory, but they can point at different directories.
|
||||||
|
* <p>
|
||||||
|
* The <code>${jetty.home}</code> directory is where the main Jetty binaries and default configuration is housed.
|
||||||
|
* <p>
|
||||||
|
* The <code>${jetty.base}</code> directory is where the execution specific configuration and webapps are obtained from.
|
||||||
*/
|
*/
|
||||||
public class HomeBase
|
public class HomeBase
|
||||||
{
|
{
|
||||||
|
@ -39,11 +45,7 @@ public class HomeBase
|
||||||
{
|
{
|
||||||
String userDir = System.getProperty("user.dir");
|
String userDir = System.getProperty("user.dir");
|
||||||
this.homeDir = new File(System.getProperty("jetty.home",userDir));
|
this.homeDir = new File(System.getProperty("jetty.home",userDir));
|
||||||
String base = System.getProperty("jetty.base");
|
this.baseDir = new File(System.getProperty("jetty.base",homeDir.getAbsolutePath()));
|
||||||
if (base != null)
|
|
||||||
{
|
|
||||||
this.baseDir = new File(base);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomeBase(File homeDir, File baseDir)
|
public HomeBase(File homeDir, File baseDir)
|
||||||
|
@ -51,12 +53,12 @@ public class HomeBase
|
||||||
this.homeDir = homeDir;
|
this.homeDir = homeDir;
|
||||||
this.baseDir = baseDir;
|
this.baseDir = baseDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasBase()
|
public boolean isBaseDifferent()
|
||||||
{
|
{
|
||||||
return this.baseDir != null;
|
return homeDir.compareTo(baseDir) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBaseDir(File dir)
|
public void setBaseDir(File dir)
|
||||||
{
|
{
|
||||||
this.baseDir = dir;
|
this.baseDir = dir;
|
||||||
|
@ -95,7 +97,7 @@ public class HomeBase
|
||||||
String rpath = FS.separators(path);
|
String rpath = FS.separators(path);
|
||||||
|
|
||||||
// Relative to Base Directory First
|
// Relative to Base Directory First
|
||||||
if (baseDir != null)
|
if (isBaseDifferent())
|
||||||
{
|
{
|
||||||
File file = new File(baseDir,rpath);
|
File file = new File(baseDir,rpath);
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
|
@ -114,7 +116,7 @@ public class HomeBase
|
||||||
// Finally, as an absolute path
|
// Finally, as an absolute path
|
||||||
return new File(rpath);
|
return new File(rpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHomeDir(File dir)
|
public void setHomeDir(File dir)
|
||||||
{
|
{
|
||||||
this.homeDir = dir;
|
this.homeDir = dir;
|
||||||
|
@ -165,7 +167,7 @@ public class HomeBase
|
||||||
List<File> homeFiles = new ArrayList<>();
|
List<File> homeFiles = new ArrayList<>();
|
||||||
homeFiles.addAll(Arrays.asList(homePath.listFiles(filter)));
|
homeFiles.addAll(Arrays.asList(homePath.listFiles(filter)));
|
||||||
|
|
||||||
if (baseDir != null)
|
if (isBaseDifferent())
|
||||||
{
|
{
|
||||||
// merge
|
// merge
|
||||||
File basePath = new File(baseDir,FS.separators(relPathToDirectory));
|
File basePath = new File(baseDir,FS.separators(relPathToDirectory));
|
||||||
|
@ -186,20 +188,19 @@ public class HomeBase
|
||||||
// add any remaining home files.
|
// add any remaining home files.
|
||||||
ret.addAll(homeFiles);
|
ret.addAll(homeFiles);
|
||||||
|
|
||||||
Collections.sort(ret, new NaturalSort.Files());
|
Collections.sort(ret,new NaturalSort.Files());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// simple return
|
// simple return
|
||||||
Collections.sort(homeFiles, new NaturalSort.Files());
|
Collections.sort(homeFiles,new NaturalSort.Files());
|
||||||
return homeFiles;
|
return homeFiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Collect the list of files in both <code>${jetty.base}</code> and <code>${jetty.home}</code>, with
|
* Collect the list of files in both <code>${jetty.base}</code> and <code>${jetty.home}</code>, with , even if the same file shows up in both places.
|
||||||
* , even if the same file shows up in both places.
|
|
||||||
*/
|
*/
|
||||||
public List<File> rawListFiles(String relPathToDirectory, FileFilter filter)
|
public List<File> rawListFiles(String relPathToDirectory, FileFilter filter)
|
||||||
{
|
{
|
||||||
|
@ -211,7 +212,7 @@ public class HomeBase
|
||||||
File homePath = new File(homeDir,FS.separators(relPathToDirectory));
|
File homePath = new File(homeDir,FS.separators(relPathToDirectory));
|
||||||
ret.addAll(Arrays.asList(homePath.listFiles(filter)));
|
ret.addAll(Arrays.asList(homePath.listFiles(filter)));
|
||||||
|
|
||||||
if (baseDir != null)
|
if (isBaseDifferent())
|
||||||
{
|
{
|
||||||
// Base Dir
|
// Base Dir
|
||||||
File basePath = new File(baseDir,FS.separators(relPathToDirectory));
|
File basePath = new File(baseDir,FS.separators(relPathToDirectory));
|
||||||
|
@ -219,7 +220,7 @@ public class HomeBase
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort
|
// Sort
|
||||||
Collections.sort(ret, new NaturalSort.Files());
|
Collections.sort(ret,new NaturalSort.Files());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,7 +266,7 @@ public class HomeBase
|
||||||
return "${jetty.home}" + path.substring(value.length());
|
return "${jetty.home}" + path.substring(value.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (baseDir != null)
|
if (isBaseDifferent())
|
||||||
{
|
{
|
||||||
value = baseDir.getAbsolutePath();
|
value = baseDir.getAbsolutePath();
|
||||||
if (path.startsWith(value))
|
if (path.startsWith(value))
|
||||||
|
|
|
@ -775,10 +775,7 @@ public class Main implements IncludeListener
|
||||||
cmd.addArg(x);
|
cmd.addArg(x);
|
||||||
}
|
}
|
||||||
cmd.addRawArg("-Djetty.home=" + _config.getHomeBase().getHome());
|
cmd.addRawArg("-Djetty.home=" + _config.getHomeBase().getHome());
|
||||||
if (_config.getHomeBase().hasBase())
|
cmd.addRawArg("-Djetty.base=" + _config.getHomeBase().getBase());
|
||||||
{
|
|
||||||
cmd.addRawArg("-Djetty.base=" + _config.getHomeBase().getBase());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Special Stop/Shutdown properties
|
// Special Stop/Shutdown properties
|
||||||
ensureSystemPropertySet("STOP.PORT");
|
ensureSystemPropertySet("STOP.PORT");
|
||||||
|
@ -901,12 +898,7 @@ public class Main implements IncludeListener
|
||||||
+ "then overlapping entries will not be repeated in the eventual classpath.");
|
+ "then overlapping entries will not be repeated in the eventual classpath.");
|
||||||
System.out.println();
|
System.out.println();
|
||||||
System.out.printf("${jetty.home} = %s%n",_config.getHomeBase().getHome());
|
System.out.printf("${jetty.home} = %s%n",_config.getHomeBase().getHome());
|
||||||
String base = "<undefined>";
|
System.out.printf("${jetty.base} = %s%n",_config.getHomeBase().getBase());
|
||||||
if (_config.getHomeBase().hasBase())
|
|
||||||
{
|
|
||||||
base = _config.getHomeBase().getBase();
|
|
||||||
}
|
|
||||||
System.out.printf("${jetty.base} = %s%n",base);
|
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
for (String sectionId : sectionIds)
|
for (String sectionId : sectionIds)
|
||||||
|
|
Loading…
Reference in New Issue