diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/InitializationData.java | 19 | ||||
-rw-r--r-- | java/src/Ice/Util.java | 9 |
2 files changed, 23 insertions, 5 deletions
diff --git a/java/src/Ice/InitializationData.java b/java/src/Ice/InitializationData.java index a5ea98908e2..62603c9086b 100644 --- a/java/src/Ice/InitializationData.java +++ b/java/src/Ice/InitializationData.java @@ -9,13 +9,30 @@ package Ice; -public final class InitializationData +public final class InitializationData implements Cloneable { public InitializationData() { } + public java.lang.Object + clone() + { + // + // A member-wise copy is safe because the members are immutable. + // + java.lang.Object o = null; + try + { + o = super.clone(); + } + catch(CloneNotSupportedException ex) + { + } + return o; + } + public Properties properties; public Logger logger; public Stats stats; diff --git a/java/src/Ice/Util.java b/java/src/Ice/Util.java index e38c9afa162..c0d0426d1fa 100644 --- a/java/src/Ice/Util.java +++ b/java/src/Ice/Util.java @@ -80,13 +80,14 @@ public final class Util public static Communicator initialize(StringSeqHolder args, InitializationData initData) { - if(initData.properties == null) + InitializationData tmpData = (InitializationData)initData.clone(); + if(tmpData.properties == null) { - initData.properties = getDefaultProperties(args); + tmpData.properties = getDefaultProperties(args); } - args.value = initData.properties.parseIceCommandLineOptions(args.value); + args.value = tmpData.properties.parseIceCommandLineOptions(args.value); - CommunicatorI result = new CommunicatorI(initData); + CommunicatorI result = new CommunicatorI(tmpData); result.finishSetup(args); return result; } |