summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2017-02-01 14:25:17 +0100
committerBenoit Foucher <benoit@zeroc.com>2017-02-01 14:25:17 +0100
commit3bb38c886e9dbd636ae39f3b216d0f7a5c43f1e0 (patch)
tree0db6754abde6c94529d8bfb876181d800a9047f2 /java/src
parentFix argv processing in gulpfile (diff)
downloadice-3bb38c886e9dbd636ae39f3b216d0f7a5c43f1e0.tar.bz2
ice-3bb38c886e9dbd636ae39f3b216d0f7a5c43f1e0.tar.xz
ice-3bb38c886e9dbd636ae39f3b216d0f7a5c43f1e0.zip
Fixed ICE-7536 - Simplified Ice.Util createProperties/initialize methods
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Glacier2/src/main/java/com/zeroc/Glacier2/Application.java6
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/Application.java14
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/CommunicatorI.java12
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/PropertiesI.java12
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/Util.java186
-rw-r--r--java/src/IceBox/src/main/java/com/zeroc/IceBox/ServiceManagerI.java22
-rw-r--r--java/src/IceGridGUI/src/main/java/com/zeroc/IceGridGUI/Coordinator.java12
7 files changed, 155 insertions, 109 deletions
diff --git a/java/src/Glacier2/src/main/java/com/zeroc/Glacier2/Application.java b/java/src/Glacier2/src/main/java/com/zeroc/Glacier2/Application.java
index 920a9fa7ca1..b386826dcf7 100644
--- a/java/src/Glacier2/src/main/java/com/zeroc/Glacier2/Application.java
+++ b/java/src/Glacier2/src/main/java/com/zeroc/Glacier2/Application.java
@@ -274,8 +274,8 @@ public abstract class Application extends com.zeroc.Ice.Application
try
{
- Util.InitializeResult ir = Util.initialize(args, initData);
- _communicator = ir.communicator;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
+ _communicator = Util.initialize(args, initData, remainingArgs);
_router = com.zeroc.Glacier2.RouterPrx.uncheckedCast(communicator().getDefaultRouter());
if(_router == null)
@@ -331,7 +331,7 @@ public abstract class Application extends com.zeroc.Ice.Application
connection.setCloseCallback(con -> sessionDestroyed());
}
_category = _router.getCategoryForClient();
- r.returnValue = runWithSession(ir.args);
+ r.returnValue = runWithSession(remainingArgs.toArray(new String[remainingArgs.size()]));
}
}
}
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/Application.java b/java/src/Ice/src/main/java/com/zeroc/Ice/Application.java
index b0ace4a8692..7533dfece23 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/Application.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/Application.java
@@ -167,11 +167,10 @@ public abstract class Application
initData = new InitializationData();
}
- Util.CreatePropertiesResult cpr = null;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
try
{
- cpr = Util.createProperties(args, initData.properties);
- initData.properties = cpr.properties;
+ initData.properties = Util.createProperties(args, initData.properties, remainingArgs);
}
catch(LocalException ex)
{
@@ -194,7 +193,7 @@ public abstract class Application
Util.setProcessLogger(new LoggerI(initData.properties.getProperty("Ice.ProgramName"), ""));
}
- return doMain(cpr.args, initData);
+ return doMain(remainingArgs.toArray(new String[remainingArgs.size()]), initData);
}
protected int doMain(String[] args, InitializationData initData)
@@ -203,9 +202,8 @@ public abstract class Application
try
{
- Util.InitializeResult ir = Util.initialize(args, initData);
-
- _communicator = ir.communicator;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
+ _communicator = Util.initialize(args, initData, remainingArgs);
//
// The default is to destroy when a signal is received.
@@ -215,7 +213,7 @@ public abstract class Application
destroyOnInterrupt();
}
- status = run(ir.args);
+ status = run(remainingArgs.toArray(new String[remainingArgs.size()]));
}
catch(LocalException ex)
{
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/CommunicatorI.java b/java/src/Ice/src/main/java/com/zeroc/Ice/CommunicatorI.java
index 1f9041840b0..90d1d89467f 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/CommunicatorI.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/CommunicatorI.java
@@ -314,11 +314,19 @@ public final class CommunicatorI implements Communicator
// Certain initialization tasks need to be completed after the
// constructor.
//
- String[] finishSetup(String[] args)
+ void finishSetup(String[] args, java.util.List<String> rArgs)
{
try
{
- return _instance.finishSetup(args, this);
+ args = _instance.finishSetup(args, this);
+ if(rArgs != null)
+ {
+ rArgs.clear();
+ if(args.length > 0)
+ {
+ rArgs.addAll(java.util.Arrays.asList(args));
+ }
+ }
}
catch(RuntimeException ex)
{
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/PropertiesI.java b/java/src/Ice/src/main/java/com/zeroc/Ice/PropertiesI.java
index 29ae6ddc1e5..5e25b849050 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/PropertiesI.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/PropertiesI.java
@@ -485,7 +485,7 @@ public final class PropertiesI implements Properties
{
}
- String[] init(String[] args, Properties defaults)
+ void init(String[] args, Properties defaults, java.util.List<String> rArgs)
{
if(defaults != null)
{
@@ -537,7 +537,15 @@ public final class PropertiesI implements Properties
loadConfig();
}
- return parseIceCommandLineOptions(args);
+ args = parseIceCommandLineOptions(args);
+ if(rArgs != null)
+ {
+ rArgs.clear();
+ if(args.length > 0)
+ {
+ rArgs.addAll(java.util.Arrays.asList(args));
+ }
+ }
}
private void
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/Util.java b/java/src/Ice/src/main/java/com/zeroc/Ice/Util.java
index b4e008352da..646c97e1c9a 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/Util.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/Util.java
@@ -27,15 +27,41 @@ public final class Util
}
/**
- * Encapsulates the results of a call to createProperties().
+ * Creates a property set initialized from an argument vector.
+ *
+ * @param args A command-line argument vector, possibly containing
+ * options to set properties. If the command-line options include
+ * a <code>--Ice.Config</code> option, the corresponding configuration
+ * files are parsed. If the same property is set in a configuration
+ * file and in the argument vector, the argument vector takes precedence.
+ *
+ * @return A new property set initialized with the property settings
+ * that were removed from the argument vector.
**/
- public static class CreatePropertiesResult
+ public static Properties createProperties(String[] args)
{
- /** The new property set. */
- public Properties properties;
+ return createProperties(args, null, null);
+ }
- /** The original command-line arguments with Ice-related arguments removed. */
- public String[] args;
+ /**
+ * Creates a property set initialized from an argument vector and
+ * return the remaining arguments.
+ *
+ * @param args A command-line argument vector, possibly containing
+ * options to set properties. If the command-line options include
+ * a <code>--Ice.Config</code> option, the corresponding configuration
+ * files are parsed. If the same property is set in a configuration
+ * file and in the argument vector, the argument vector takes precedence.
+ *
+ * @param remainingArgs If non null, the given list will contain on
+ * return the command-line arguments that were not used to set properties.
+ *
+ * @return A new property set initialized with the property settings
+ * that were removed from the argument vector.
+ **/
+ public static Properties createProperties(String[] args, java.util.List<String> remainingArgs)
+ {
+ return createProperties(args, null, remainingArgs);
}
/**
@@ -47,17 +73,20 @@ public final class Util
* files are parsed. If the same property is set in a configuration
* file and in the argument vector, the argument vector takes precedence.
*
+ * @param defaults Default values for the property set. Settings in
+ * configuration files and <code>args</code> override these defaults.
+ *
* @return A new property set initialized with the property settings
- * that were removed from the argument vector, along with the filtered
- * argument vector.
+ * that were removed from the argument vector.
**/
- public static CreatePropertiesResult createProperties(String[] args)
+ public static Properties createProperties(String[] args, Properties defaults)
{
- return createProperties(args, null);
+ return createProperties(args, defaults, null);
}
/**
- * Creates a property set initialized from an argument vector.
+ * Creates a property set initialized from an argument vector and
+ * return the remaining arguments.
*
* @param args A command-line argument vector, possibly containing
* options to set properties. If the command-line options include
@@ -65,45 +94,32 @@ public final class Util
* files are parsed. If the same property is set in a configuration
* file and in the argument vector, the argument vector takes precedence.
*
- * @param defaults Default values for the property set. Settings in configuration
- * files and <code>args</code> override these defaults.
+ * @param defaults Default values for the property set. Settings in
+ * configuration files and <code>args</code> override these defaults.
+ *
+ * @param remainingArgs If non null, the given list will contain on
+ * return the command-line arguments that were not used to set properties.
*
* @return A new property set initialized with the property settings
- * that were removed from the argument vector, along with the filtered
- * argument vector.
+ * that were removed from the argument vector.
**/
- public static CreatePropertiesResult createProperties(String[] args, Properties defaults)
+ public static Properties createProperties(String[] args,
+ Properties defaults,
+ java.util.List<String> remainingArgs)
{
PropertiesI properties = new PropertiesI();
- CreatePropertiesResult cpr = new CreatePropertiesResult();
- cpr.properties = properties;
- cpr.args = properties.init(args, defaults);
- return cpr;
+ properties.init(args, defaults, remainingArgs);
+ return properties;
}
/**
- * Encapsulates the results of a call to initialize().
+ * Creates a communicator using a default configuration.
+ *
+ * @return A new communicator instance.
**/
- public static class InitializeResult implements java.lang.AutoCloseable
+ public static Communicator initialize()
{
- @Override
- public void close()
- {
- try
- {
- communicator.close();
- }
- catch(java.lang.Exception ex)
- {
- assert(false);
- }
- }
-
- /** The new communicator. */
- public Communicator communicator;
-
- /** The original command-line arguments with Ice-related arguments removed. */
- public String[] args;
+ return initialize(new InitializationData());
}
/**
@@ -114,9 +130,9 @@ public final class Util
*
* @return The new communicator and a filtered argument vector.
**/
- public static InitializeResult initialize(String[] args)
+ public static Communicator initialize(String[] args)
{
- return initialize(args, null);
+ return initialize(args, null, null);
}
/**
@@ -125,45 +141,62 @@ public final class Util
* @param args A command-line argument vector. Any Ice-related options
* in this vector are used to initialize the communicator.
*
- * @param initData Additional initialization data. Property settings in <code>args</code>
- * override property settings in <code>initData</code>.
+ * @param remainingArgs If non null, the given list will contain on
+ * return the command-line arguments that were not used to set properties.
*
* @return The new communicator and a filtered argument vector.
- *
- * @see InitializationData
**/
- public static InitializeResult initialize(String[] args, InitializationData initData)
+ public static Communicator initialize(String[] args, java.util.List<String> remainingArgs)
{
- if(initData == null)
- {
- initData = new InitializationData();
- }
- else
- {
- initData = initData.clone();
- }
-
- CreatePropertiesResult cpr = createProperties(args, initData.properties);
- initData.properties = cpr.properties;
-
- InitializeResult ir = new InitializeResult();
+ return initialize(args, null, remainingArgs);
+ }
- CommunicatorI c = new CommunicatorI(initData);
- ir.communicator = c;
- ir.args = c.finishSetup(cpr.args);
- return ir;
+ /**
+ * Creates a communicator.
+ *
+ * @param initData Additional initialization data.
+ *
+ * @return The new communicator and a filtered argument vector.
+ **/
+ public static Communicator initialize(InitializationData initData)
+ {
+ return initialize(null, initData, null);
}
/**
* Creates a communicator.
*
+ * @param args A command-line argument vector. Any Ice-related options
+ * in this vector are used to initialize the communicator.
+ *
* @param initData Additional initialization data.
*
- * @return The new communicator.
+ * @return The new communicator and a filtered argument vector.
+ **/
+ public static Communicator initialize(String[] args, InitializationData initData)
+ {
+ return initialize(args, initData, null);
+ }
+
+ /**
+ * Creates a communicator.
+ *
+ * @param args A command-line argument vector. Any Ice-related options
+ * in this vector are used to initialize the communicator.
+ *
+ * @param initData Additional initialization data. Property settings in <code>args</code>
+ * override property settings in <code>initData</code>.
+ *
+ * @param remainingArgs If non null, the given list will contain on
+ * return the command-line arguments that were not used to set properties.
+ *
+ * @return The new communicator and a filtered argument vector.
*
* @see InitializationData
**/
- public static Communicator initialize(InitializationData initData)
+ public static Communicator initialize(String[] args,
+ InitializationData initData,
+ java.util.List<String> remainingArgs)
{
if(initData == null)
{
@@ -174,19 +207,16 @@ public final class Util
initData = initData.clone();
}
- CommunicatorI result = new CommunicatorI(initData);
- result.finishSetup(new String[0]);
- return result;
- }
+ if(args != null)
+ {
+ java.util.List<String> rArgs = new java.util.ArrayList<>();
+ initData.properties = createProperties(args, initData.properties, rArgs);
+ args = rArgs.toArray(new String[rArgs.size()]);
+ }
- /**
- * Creates a communicator using a default configuration.
- *
- * @return A new communicator instance.
- **/
- public static Communicator initialize()
- {
- return initialize(new InitializationData());
+ CommunicatorI communicator = new CommunicatorI(initData);
+ communicator.finishSetup(args != null ? args : new String[0], remainingArgs);
+ return communicator;
}
/**
diff --git a/java/src/IceBox/src/main/java/com/zeroc/IceBox/ServiceManagerI.java b/java/src/IceBox/src/main/java/com/zeroc/IceBox/ServiceManagerI.java
index f2c60fcf1f7..bd09415c3a2 100644
--- a/java/src/IceBox/src/main/java/com/zeroc/IceBox/ServiceManagerI.java
+++ b/java/src/IceBox/src/main/java/com/zeroc/IceBox/ServiceManagerI.java
@@ -329,8 +329,9 @@ public class ServiceManagerI implements ServiceManager
// Load the service properties using the shared communicator properties as
// the default properties.
//
- Util.CreatePropertiesResult cpr = Util.createProperties(service.args, initData.properties);
- service.args = cpr.args;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
+ Properties serviceProps = Util.createProperties(service.args, initData.properties, remainingArgs);
+ service.args = remainingArgs.toArray(new String[remainingArgs.size()]);
//
// Remove properties from the shared property set that a service explicitly clears.
@@ -338,7 +339,7 @@ public class ServiceManagerI implements ServiceManager
java.util.Map<String, String> allProps = initData.properties.getPropertiesForPrefix("");
for(String key : allProps.keySet())
{
- if(cpr.properties.getProperty(key).length() == 0)
+ if(serviceProps.getProperty(key).length() == 0)
{
initData.properties.setProperty(key, "");
}
@@ -347,7 +348,7 @@ public class ServiceManagerI implements ServiceManager
//
// Add the service properties to the shared communicator properties.
//
- for(java.util.Map.Entry<String, String> p : cpr.properties.getPropertiesForPrefix("").entrySet())
+ for(java.util.Map.Entry<String, String> p : serviceProps.getPropertiesForPrefix("").entrySet())
{
initData.properties.setProperty(p.getKey(), p.getValue());
}
@@ -590,14 +591,15 @@ public class ServiceManagerI implements ServiceManager
// Create the service properties with the given service arguments. This should
// read the service config file if it's specified with --Ice.Config.
//
- Util.CreatePropertiesResult cpr = Util.createProperties(serviceArgs, initData.properties);
- initData.properties = cpr.properties;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
+ initData.properties = Util.createProperties(serviceArgs, initData.properties, remainingArgs);
+ serviceArgs = remainingArgs.toArray(new String[remainingArgs.size()]);
//
// Next, parse the service "<service>.*" command line options (the Ice command
// line options were parsed by the createProperties above).
//
- serviceArgs = initData.properties.parseCommandLineOptions(service, cpr.args);
+ serviceArgs = initData.properties.parseCommandLineOptions(service, serviceArgs);
}
//
@@ -623,9 +625,9 @@ public class ServiceManagerI implements ServiceManager
// Remaining command line options are passed to the communicator. This is
// necessary for Ice plug-in properties (e.g.: IceSSL).
//
- Util.InitializeResult ir = Util.initialize(serviceArgs, initData);
- info.communicator = ir.communicator;
- info.args = ir.args;
+ java.util.List<String> remainingArgs = new java.util.ArrayList<>();
+ info.communicator = Util.initialize(serviceArgs, initData, remainingArgs);
+ info.args = remainingArgs.toArray(new String[remainingArgs.size()]);
communicator = info.communicator;
if(addFacets)
diff --git a/java/src/IceGridGUI/src/main/java/com/zeroc/IceGridGUI/Coordinator.java b/java/src/IceGridGUI/src/main/java/com/zeroc/IceGridGUI/Coordinator.java
index 73a49d83926..354a20cd3bd 100644
--- a/java/src/IceGridGUI/src/main/java/com/zeroc/IceGridGUI/Coordinator.java
+++ b/java/src/IceGridGUI/src/main/java/com/zeroc/IceGridGUI/Coordinator.java
@@ -2454,7 +2454,7 @@ public class Coordinator
return _saveIceLogChooser;
}
- static private com.zeroc.Ice.Util.CreatePropertiesResult createProperties(String[] args)
+ static private com.zeroc.Ice.Properties createProperties(String[] args, java.util.List<String> rArgs)
{
com.zeroc.Ice.Properties properties = com.zeroc.Ice.Util.createProperties();
@@ -2468,7 +2468,7 @@ public class Coordinator
//
properties.setProperty("Ice.RetryIntervals", "-1");
- return com.zeroc.Ice.Util.createProperties(args, properties);
+ return com.zeroc.Ice.Util.createProperties(args, properties, rArgs);
}
Coordinator(JFrame mainFrame, String[] args, Preferences prefs)
@@ -2479,17 +2479,17 @@ public class Coordinator
_initData = new com.zeroc.Ice.InitializationData();
_initData.logger = new Logger(mainFrame);
- com.zeroc.Ice.Util.CreatePropertiesResult cpr = createProperties(args);
- _initData.properties = cpr.properties;
+ java.util.List<String> rArgs = new java.util.ArrayList<>();
+ _initData.properties = createProperties(args, rArgs);
//
// We enable IceSSL so the communicator knows how to parse ssl endpoints.
//
_initData.properties.setProperty("Ice.Plugin.IceSSL", "com.zeroc.IceSSL.PluginFactory");
- if(cpr.args.length > 0)
+ if(!rArgs.isEmpty())
{
String msg = "Extra command-line arguments: ";
- for(String arg : cpr.args)
+ for(String arg : rArgs)
{
msg += arg + " ";
}