jetty-start / Making sure that download works
This commit is contained in:
parent
866a9c96d2
commit
c1517fe866
|
@ -41,6 +41,8 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.start.StartArgs.DownloadArg;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main start class.
|
* Main start class.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -167,18 +169,11 @@ public class Main
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void download(String arg)
|
private void download(DownloadArg arg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String[] split = arg.split("|",3);
|
File file = baseHome.getBaseFile(arg.location);
|
||||||
if ((split.length != 3) || "http".equalsIgnoreCase(split[0]) || !split[1].startsWith("//"))
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Not --download=<http uri>:<location>");
|
|
||||||
}
|
|
||||||
|
|
||||||
String location = split[2];
|
|
||||||
File file = baseHome.getBaseFile(location);
|
|
||||||
|
|
||||||
StartLog.debug("Download to %s %s",file.getAbsolutePath(),(file.exists()?"[Exists!]":""));
|
StartLog.debug("Download to %s %s",file.getAbsolutePath(),(file.exists()?"[Exists!]":""));
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
|
@ -186,9 +181,9 @@ public class Main
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
URL url = new URL(split[0].substring(11) + ":" + split[1]);
|
URL url = new URL(arg.uri);
|
||||||
|
|
||||||
System.err.println("DOWNLOAD: " + url + " to " + location);
|
System.err.println("DOWNLOAD: " + url + " to " + arg.location);
|
||||||
|
|
||||||
FS.ensureDirectoryExists(file.getParentFile());
|
FS.ensureDirectoryExists(file.getParentFile());
|
||||||
|
|
||||||
|
@ -444,6 +439,12 @@ public class Main
|
||||||
usage(true);
|
usage(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Various Downloads
|
||||||
|
for (DownloadArg url : args.getDownloads())
|
||||||
|
{
|
||||||
|
download(url);
|
||||||
|
}
|
||||||
|
|
||||||
// Show the version information and return
|
// Show the version information and return
|
||||||
if (args.isListClasspath())
|
if (args.isListClasspath())
|
||||||
{
|
{
|
||||||
|
@ -469,12 +470,6 @@ public class Main
|
||||||
System.out.println(cmd.toString());
|
System.out.println(cmd.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Various Downloads
|
|
||||||
for (String url : args.getDownloads())
|
|
||||||
{
|
|
||||||
download(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enables/Disable
|
// Enables/Disable
|
||||||
ModulePersistence persistence = loadModulePersistence();
|
ModulePersistence persistence = loadModulePersistence();
|
||||||
if (args.isModulePersistenceChanging())
|
if (args.isModulePersistenceChanging())
|
||||||
|
@ -508,6 +503,7 @@ public class Main
|
||||||
stop(stopPort,stopKey);
|
stop(stopPort,stopKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Informational command line, don't run jetty
|
// Informational command line, don't run jetty
|
||||||
if (!args.isRun())
|
if (!args.isRun())
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,76 @@ import java.util.Set;
|
||||||
*/
|
*/
|
||||||
public class StartArgs
|
public class StartArgs
|
||||||
{
|
{
|
||||||
|
public static class DownloadArg
|
||||||
|
{
|
||||||
|
public String uri;
|
||||||
|
public String location;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (this == obj)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
DownloadArg other = (DownloadArg)obj;
|
||||||
|
if (uri == null)
|
||||||
|
{
|
||||||
|
if (other.uri != null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!uri.equals(other.uri))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (location == null)
|
||||||
|
{
|
||||||
|
if (other.location != null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!location.equals(other.location))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = (prime * result) + ((uri == null)?0:uri.hashCode());
|
||||||
|
result = (prime * result) + ((location == null)?0:location.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("DownloadArg [uri=");
|
||||||
|
builder.append(uri);
|
||||||
|
builder.append(", location=");
|
||||||
|
builder.append(location);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
public static final String CMD_LINE_SOURCE = "<cmd-line>";
|
public static final String CMD_LINE_SOURCE = "<cmd-line>";
|
||||||
|
|
||||||
public static final String VERSION;
|
public static final String VERSION;
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -70,7 +139,7 @@ public class StartArgs
|
||||||
private List<String> commandLine = new ArrayList<>();
|
private List<String> commandLine = new ArrayList<>();
|
||||||
private Set<String> modules = new HashSet<>();
|
private Set<String> modules = new HashSet<>();
|
||||||
private Map<String, List<String>> sources = new HashMap<>();
|
private Map<String, List<String>> sources = new HashMap<>();
|
||||||
private List<String> downloads = new ArrayList<>();
|
private List<DownloadArg> downloads = new ArrayList<>();
|
||||||
private Classpath classpath;
|
private Classpath classpath;
|
||||||
private List<String> xmlRefs = new ArrayList<>();
|
private List<String> xmlRefs = new ArrayList<>();
|
||||||
private List<File> xmls = new ArrayList<>();
|
private List<File> xmls = new ArrayList<>();
|
||||||
|
@ -98,6 +167,31 @@ public class StartArgs
|
||||||
classpath = new Classpath();
|
classpath = new Classpath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addDownload(String uriLocation)
|
||||||
|
{
|
||||||
|
String parts[] = uriLocation.split(":",3);
|
||||||
|
if (parts.length != 3)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Not <http uri>:<location>");
|
||||||
|
}
|
||||||
|
if (!"http".equalsIgnoreCase(parts[0]))
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Download only supports http protocol");
|
||||||
|
}
|
||||||
|
if (!parts[1].startsWith("//"))
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Download URI invalid: " + uriLocation);
|
||||||
|
}
|
||||||
|
DownloadArg arg = new DownloadArg();
|
||||||
|
arg.uri = String.format("%s:%s",parts[0],parts[1]);
|
||||||
|
arg.location = parts[2];
|
||||||
|
|
||||||
|
if (!downloads.contains(arg))
|
||||||
|
{
|
||||||
|
downloads.add(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void addSystemProperty(String key, String value)
|
public void addSystemProperty(String key, String value)
|
||||||
{
|
{
|
||||||
this.systemPropertyKeys.add(key);
|
this.systemPropertyKeys.add(key);
|
||||||
|
@ -185,25 +279,6 @@ public class StartArgs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dumpSystemProperties()
|
|
||||||
{
|
|
||||||
System.out.println();
|
|
||||||
System.out.println("System Properties:");
|
|
||||||
System.out.println("------------------");
|
|
||||||
|
|
||||||
if (systemPropertyKeys.isEmpty())
|
|
||||||
{
|
|
||||||
System.out.println(" (no system properties specified)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String key : systemPropertyKeys)
|
|
||||||
{
|
|
||||||
String value = System.getProperty(key);
|
|
||||||
System.out.printf(" %s = %s%n",key,value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void dumpProperties()
|
public void dumpProperties()
|
||||||
{
|
{
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
@ -226,6 +301,25 @@ public class StartArgs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void dumpSystemProperties()
|
||||||
|
{
|
||||||
|
System.out.println();
|
||||||
|
System.out.println("System Properties:");
|
||||||
|
System.out.println("------------------");
|
||||||
|
|
||||||
|
if (systemPropertyKeys.isEmpty())
|
||||||
|
{
|
||||||
|
System.out.println(" (no system properties specified)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String key : systemPropertyKeys)
|
||||||
|
{
|
||||||
|
String value = System.getProperty(key);
|
||||||
|
System.out.printf(" %s = %s%n",key,value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void dumpSystemProperty(String key)
|
private void dumpSystemProperty(String key)
|
||||||
{
|
{
|
||||||
System.out.printf(" %s=%s%n",key,System.getProperty(key));
|
System.out.printf(" %s=%s%n",key,System.getProperty(key));
|
||||||
|
@ -327,16 +421,18 @@ public class StartArgs
|
||||||
File xmlfile = baseHome.getFile(xmlRef);
|
File xmlfile = baseHome.getFile(xmlRef);
|
||||||
addUniqueXmlFile(xmlRef,xmlfile);
|
addUniqueXmlFile(xmlRef,xmlfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register Download operations
|
// Register Download operations
|
||||||
for ( String download : module.getDownloads() )
|
for (String download : module.getDownloads())
|
||||||
{
|
{
|
||||||
downloads.add(download);
|
StartLog.debug("Adding module specified download: %s",download);
|
||||||
|
addDownload(download);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register BootLib references
|
// Register BootLib references
|
||||||
for ( String bootlib : module.getBootLibs() )
|
for (String bootlib : module.getBootLibs())
|
||||||
{
|
{
|
||||||
|
StartLog.debug("Adding module specified bootlib: %s",bootlib);
|
||||||
exec = true;
|
exec = true;
|
||||||
jvmArgs.add(bootlib);
|
jvmArgs.add(bootlib);
|
||||||
}
|
}
|
||||||
|
@ -358,8 +454,8 @@ public class StartArgs
|
||||||
return this.commandLine;
|
return this.commandLine;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getDownloads()
|
public List<DownloadArg> getDownloads()
|
||||||
{
|
{
|
||||||
return downloads;
|
return downloads;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,7 +481,7 @@ public class StartArgs
|
||||||
{
|
{
|
||||||
cmd.addArg(x);
|
cmd.addArg(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.addRawArg("-Djetty.home=" + baseHome.getHome());
|
cmd.addRawArg("-Djetty.home=" + baseHome.getHome());
|
||||||
cmd.addRawArg("-Djetty.base=" + baseHome.getBase());
|
cmd.addRawArg("-Djetty.base=" + baseHome.getBase());
|
||||||
|
|
||||||
|
@ -445,11 +541,6 @@ public class StartArgs
|
||||||
return modulePersistEnable;
|
return modulePersistEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isModulePersistenceChanging()
|
|
||||||
{
|
|
||||||
return (modulePersistDisable.size() > 0) || (modulePersistEnable.size() > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Properties getProperties()
|
public Properties getProperties()
|
||||||
{
|
{
|
||||||
return properties;
|
return properties;
|
||||||
|
@ -548,6 +639,11 @@ public class StartArgs
|
||||||
return listModules;
|
return listModules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isModulePersistenceChanging()
|
||||||
|
{
|
||||||
|
return (modulePersistDisable.size() > 0) || (modulePersistEnable.size() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isRun()
|
public boolean isRun()
|
||||||
{
|
{
|
||||||
return run;
|
return run;
|
||||||
|
@ -613,7 +709,7 @@ public class StartArgs
|
||||||
|
|
||||||
if (arg.startsWith("--download="))
|
if (arg.startsWith("--download="))
|
||||||
{
|
{
|
||||||
downloads.add(getValue(arg));
|
addDownload(getValue(arg));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.start.StartArgs.DownloadArg;
|
||||||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
|
||||||
|
@ -108,7 +109,7 @@ public class ConfigurationAssert
|
||||||
actualProperties.add(name + "=" + value);
|
actualProperties.add(name + "=" + value);
|
||||||
}
|
}
|
||||||
assertContainsUnordered("Properties",expectedProperties,actualProperties);
|
assertContainsUnordered("Properties",expectedProperties,actualProperties);
|
||||||
|
|
||||||
// Validate Downloads
|
// Validate Downloads
|
||||||
Set<String> expectedDownloads = new HashSet<>();
|
Set<String> expectedDownloads = new HashSet<>();
|
||||||
for (String line : textFile)
|
for (String line : textFile)
|
||||||
|
@ -119,12 +120,12 @@ public class ConfigurationAssert
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Set<String> actualDownloads = new HashSet<>();
|
Set<String> actualDownloads = new HashSet<>();
|
||||||
for (String line : args.getDownloads())
|
for (DownloadArg darg : args.getDownloads())
|
||||||
{
|
{
|
||||||
actualDownloads.add(line);
|
actualDownloads.add(String.format("%s:%s",darg.uri,darg.location));
|
||||||
}
|
}
|
||||||
assertContainsUnordered("Downloads",expectedDownloads,actualDownloads);
|
assertContainsUnordered("Downloads",expectedDownloads,actualDownloads);
|
||||||
|
|
||||||
// Validate Jvm Args / BootLib Entries
|
// Validate Jvm Args / BootLib Entries
|
||||||
Set<String> expectedJvmArgs = new HashSet<>();
|
Set<String> expectedJvmArgs = new HashSet<>();
|
||||||
for (String line : textFile)
|
for (String line : textFile)
|
||||||
|
@ -140,9 +141,9 @@ public class ConfigurationAssert
|
||||||
actualJvmArgs.add(line);
|
actualJvmArgs.add(line);
|
||||||
}
|
}
|
||||||
assertContainsUnordered("JvmArgs",expectedJvmArgs,actualJvmArgs);
|
assertContainsUnordered("JvmArgs",expectedJvmArgs,actualJvmArgs);
|
||||||
if ( expectedJvmArgs.size() > 0 )
|
if (expectedJvmArgs.size() > 0)
|
||||||
{
|
{
|
||||||
Assert.assertTrue("exec has been turned on", args.isExec());
|
Assert.assertTrue("exec has been turned on",args.isExec());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue