Merge branch 'jetty-9.1' of ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project into jetty-9.1
Conflicts:
jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
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 55c5025..e8d7806 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
@@ -35,6 +35,7 @@
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.net.URL;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -504,6 +505,16 @@
}
}
+ // Enables/Disable
+ for (String module : args.getDisable())
+ {
+ disable(args,module,true);
+ }
+ for (String module : args.getEnable())
+ {
+ enable(args,module,true);
+ }
+
// Informational command line, don't run jetty
if (!args.isRun())
{
@@ -624,6 +635,102 @@
}
}
+ private void enable(StartArgs args, String name, boolean verbose) throws IOException
+ {
+ File start_d=baseHome.getFile("start.d");
+ File ini=new File(start_d,name+".ini");
+
+ // Is it already enabled
+ if (ini.exists())
+ {
+ if (verbose)
+ StartLog.warn("Module %s already enabled by: %s",name,baseHome.toShortForm(ini));
+ return;
+ }
+
+ // Is there a disabled ini?
+ File disabled=new File(start_d,name+".ini.disabled");
+ boolean copy=false;
+ if (!disabled.exists() && baseHome.isBaseDifferent())
+ {
+ copy=true;
+ disabled=new File(new File(baseHome.getHomeDir(),"start.d"),name+".ini.disabled");
+ if (!disabled.exists())
+ disabled=new File(new File(baseHome.getHomeDir(),"start.d"),name+".ini");
+ }
+
+ if (disabled.exists())
+ {
+ // enable module by renaming/copying ini template
+ System.err.printf("Enabling %s in %s from %s%n",name,baseHome.toShortForm(ini),baseHome.toShortForm(disabled));
+ if (copy)
+ Files.copy(disabled.toPath(),ini.toPath());
+ else
+ disabled.renameTo(ini);
+ args.parse(baseHome, new StartIni(ini));
+ }
+ else if (args.getAllModules().resolveEnabled().contains(args.getAllModules().get(name)))
+ {
+ // No ini template and module is already enabled
+ List<String> sources=args.getSources(name);
+ if (sources!=null && sources.size()>0)
+ for (String s: args.getSources(name))
+ StartLog.warn("Module %s is enabled in %s",name,s);
+ else
+ StartLog.warn("Module %s is already enabled (see --list-modules)",name);
+
+ }
+ else if (ini.createNewFile())
+ {
+ System.err.printf("Enabling %s in %s%n",name,baseHome.toShortForm(ini));
+ // Create an ini
+ try(FileOutputStream out = new FileOutputStream(ini);)
+ {
+ out.write(("--module="+name+"\n").getBytes("ISO-8859-1"));
+ }
+ args.parse(baseHome, new StartIni(ini));
+ }
+ else
+ {
+ StartLog.warn("ERROR: Module %s cannot be enabled! ",name);
+ return;
+ }
+
+ // Process dependencies
+ Modules modules = args.getAllModules();
+ Module module=modules.get(name);
+ if (module!=null)
+ for (String parent:module.getParentNames())
+ enable(args,parent,false);
+ }
+
+ private void disable(StartArgs args, String name, boolean verbose) throws IOException
+ {
+ File start_d=baseHome.getFile("start.d");
+ File ini=new File(start_d,name+".ini");
+
+ // Is it enabled?
+ if (ini.exists())
+ {
+ File disabled=new File(start_d,name+".ini.disabled");
+
+ if (disabled.exists())
+ {
+ StartLog.warn("ERROR: Disabled ini already exists: %s",baseHome.toShortForm(disabled));
+ return;
+ }
+
+ StartLog.warn("Disabling %s from %s",name,baseHome.toShortForm(ini));
+ ini.renameTo(disabled);
+
+ return;
+ }
+
+ if (verbose)
+ StartLog.warn("Module %s, ini file already disabled: %s",name,baseHome.toShortForm(ini));
+
+ }
+
public void usage(boolean exit)
{
String usageResource = "org/eclipse/jetty/start/usage.txt";
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
index 7f0ae9c..70a2861 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
@@ -103,7 +103,12 @@
for (String parentName : module.getParentNames())
{
Module parent = get(parentName);
- if (parent != null)
+
+ if (parent == null)
+ {
+ System.err.printf("WARNING: module not found [%s]%n",parentName);
+ }
+ else
{
module.addParentEdge(parent);
parent.addChildEdge(module);
@@ -113,8 +118,11 @@
for (String optionalParentName : module.getOptionalParentNames())
{
Module optional = get(optionalParentName);
-
- if ((optional != null) && optional.isEnabled())
+ if (optional==null)
+ {
+ System.err.printf("WARNING: module not found [%s]%n",optionalParentName);
+ }
+ else if (optional.isEnabled())
{
module.addParentEdge(optional);
optional.addChildEdge(module);
@@ -301,12 +309,7 @@
public Module get(String name)
{
- Module module = modules.get(name);
- if (module == null)
- {
- System.err.printf("WARNING: module not found [%s]%n",name);
- }
- return module;
+ return modules.get(name);
}
@Override
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
index e47326d..1020ca7 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
@@ -146,6 +146,8 @@
private Properties properties = new Properties();
private Set<String> systemPropertyKeys = new HashSet<>();
private List<String> jvmArgs = new ArrayList<>();
+ private List<String> enable = new ArrayList<>();
+ private List<String> disable = new ArrayList<>();
private List<String> modulePersistEnable = new ArrayList<>();
private List<String> modulePersistDisable = new ArrayList<>();
private Modules allModules;
@@ -251,7 +253,6 @@
dumpSystemProperty("jetty.home");
dumpSystemProperty("jetty.base");
dumpSystemProperty("jetty.version");
-
}
public void dumpJvmArgs()
@@ -454,7 +455,18 @@
return this.commandLine;
}
+ public List<String> getEnable()
+ {
+ return enable;
+ }
+
+ public List<String> getDisable()
+ {
+ return disable;
+ }
+
public List<DownloadArg> getDownloads()
+
{
return downloads;
}
@@ -753,6 +765,24 @@
return;
}
+ if (arg.startsWith("--enable="))
+ {
+ if (!CMD_LINE_SOURCE.equals(source))
+ throw new UsageException(ERR_BAD_ARG,"%s not allowed in %s",arg,source);
+ enable.addAll(getValues(arg));
+ run = false;
+ return;
+ }
+
+ if (arg.startsWith("--disable="))
+ {
+ if (!CMD_LINE_SOURCE.equals(source))
+ throw new UsageException(ERR_BAD_ARG,"%s not allowed in %s",arg,source);
+ disable.addAll(getValues(arg));
+ run = false;
+ return;
+ }
+
if (arg.startsWith("--module="))
{
for (String moduleName : getValues(arg))