diff options
72 files changed, 378 insertions, 424 deletions
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp index 3c6d0ece494..642b16f7e1f 100644 --- a/cpp/src/Slice/JavaUtil.cpp +++ b/cpp/src/Slice/JavaUtil.cpp @@ -396,6 +396,11 @@ private: result.push_back(s); continue; } + else if(s.substr(prefix.size(), pos - prefix.size()) == "implements") + { + result.push_back(s); + continue; + } emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); } @@ -455,7 +460,7 @@ private: else if(i->find("java:protobuf:") == 0 || i->find("java:serializable:") == 0) { // - // Only valid in sequence defintion which is checked in visitSequence + // Only valid in sequence definition which is checked in visitSequence // emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } @@ -468,6 +473,14 @@ private: } emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } + else if(i->find("java:implements:") == 0) + { + if(ClassDefPtr::dynamicCast(p) || StructPtr::dynamicCast(p)) + { + continue; + } + emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); + } } } diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 6aee01c293b..6fea7f223f1 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -2445,6 +2445,20 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) Output& out = output(); + // + // Check for java:implements metadata. + // + const StringList metaData = p->getMetaData(); + static const string prefix = "java:implements:"; + StringList implements; + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q) + { + if(q->find(prefix) == 0) + { + implements.push_back(q->substr(prefix.size())); + } + } + DocCommentPtr dc = parseDocComment(p); // @@ -2459,61 +2473,79 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) if(p->isInterface()) { out << nl << "public interface " << fixKwd(name); - if(!p->isLocal()) + ClassList::const_iterator q = bases.begin(); + StringList::const_iterator r = implements.begin(); + + if(!p->isLocal() || !bases.empty() || !implements.empty()) { out << " extends "; - out.useCurrentPosAsIndent(); - out << "com.zeroc.Ice.Object"; } - else + out.useCurrentPosAsIndent(); + if(!p->isLocal() && bases.empty()) { - if(!bases.empty()) - { - out << " extends "; - } - out.useCurrentPosAsIndent(); + out << "com.zeroc.Ice.Object"; } - - ClassList::const_iterator q = bases.begin(); - if(p->isLocal() && q != bases.end()) + else if(q != bases.end()) { out << getAbsolute(*q++, package); } - while(q != bases.end()) + else if(r != implements.end()) + { + out << *r++; + } + + for(;q != bases.end(); ++q) { out << ',' << nl << getAbsolute(*q, package); - q++; + } + for(; r != implements.end(); ++r) + { + out << ',' << nl << *r; } out.restoreIndent(); } else { out << nl << "public "; - if(p->isLocal() && !p->allOperations().empty()) + if((p->isLocal() && !p->allOperations().empty()) || !implements.empty()) { out << "abstract "; } out << "class " << fixKwd(name); out.useCurrentPosAsIndent(); - StringList implements; + if(baseClass) + { + out << " extends " << getAbsolute(baseClass, package); + bases.pop_front(); + } + else if(!p->isLocal()) + { + out << " extends com.zeroc.Ice.Value"; + } + else + { + implements.push_back("java.lang.Cloneable"); + } - if(bases.empty() || bases.front()->isInterface()) + if(!implements.empty()) { - if(p->isLocal()) + if(baseClass || !p->isLocal()) { - implements.push_back("java.lang.Cloneable"); + out << nl; } - else + + out << " implements "; + out.useCurrentPosAsIndent(); + for(StringList::const_iterator q = implements.begin(); q != implements.end(); ++q) { - out << " extends com.zeroc.Ice.Value"; + if(q != implements.begin()) + { + out << ',' << nl; + } + out << *q; } - } - else - { - out << " extends "; - out << getAbsolute(baseClass, package); - bases.pop_front(); + out.restoreIndent(); } out.restoreIndent(); @@ -3296,6 +3328,20 @@ Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p) Output& out = output(); + // + // Check for java:implements metadata. + // + const StringList metaData = p->getMetaData(); + static const string prefix = "java:implements:"; + StringList implements; + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q) + { + if(q->find(prefix) == 0) + { + implements.push_back(q->substr(prefix.size())); + } + } + out << sp; DocCommentPtr dc = parseDocComment(p); @@ -3305,10 +3351,16 @@ Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p) out << nl << "@Deprecated"; } - out << nl << "public class " << name << " implements java.lang.Cloneable"; + out << nl << "public class " << name << " implements "; + out.useCurrentPosAsIndent(); + out << "java.lang.Cloneable"; if(!p->isLocal()) { - out << ", java.io.Serializable"; + out << "," << nl << "java.io.Serializable"; + } + for(StringList::const_iterator q = implements.begin(); q != implements.end(); ++q) + { + out << "," << nl << *q; } out << sb; diff --git a/cpp/src/slice2java/GenCompat.cpp b/cpp/src/slice2java/GenCompat.cpp index eb0a18ddc4c..7bccb844408 100644 --- a/cpp/src/slice2java/GenCompat.cpp +++ b/cpp/src/slice2java/GenCompat.cpp @@ -2578,6 +2578,20 @@ Slice::GenCompat::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) Output& out = output(); // + // Check for java:implements metadata. + // + const StringList metaData = p->getMetaData(); + static const string prefix = "java:implements:"; + StringList implements; + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q) + { + if(q->find(prefix) == 0) + { + implements.push_back(q->substr(prefix.size())); + } + } + + // // Slice interfaces map to Java interfaces. // out << sp; @@ -2585,108 +2599,91 @@ Slice::GenCompat::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) if(p->isInterface()) { out << nl << "public interface " << fixKwd(name); - if(!p->isLocal()) + ClassList::const_iterator q = bases.begin(); + StringList::const_iterator r = implements.begin(); + if(!p->isLocal() || !bases.empty() || !implements.empty()) { out << " extends "; - out.useCurrentPosAsIndent(); - out << "Ice.Object"; - out << "," << nl << '_' << name; - out << "Operations, _" << name << "OperationsNC"; } - else + out.useCurrentPosAsIndent(); + if(!p->isLocal()) { - if(!bases.empty()) + out << '_' << name << "Operations, _" << name << "OperationsNC"; + if(bases.empty()) { - out << " extends "; + out << "," << nl << "Ice.Object"; } - out.useCurrentPosAsIndent(); } - - ClassList::const_iterator q = bases.begin(); - if(p->isLocal() && q != bases.end()) + else if(q != bases.end()) { out << getAbsolute(*q++, package); } - while(q != bases.end()) + else if(r != implements.end()) + { + out << *r++; + } + + for(;q != bases.end(); ++q) { out << ',' << nl << getAbsolute(*q, package); - q++; + } + for(; r != implements.end(); ++r) + { + out << ',' << nl << *r; } out.restoreIndent(); } else { out << nl << "public "; - if(p->allOperations().size() > 0) // Don't use isAbstract() - see bug 3739 + if(p->allOperations().size() > 0 || !implements.empty()) // Don't use isAbstract() - see bug 3739 { out << "abstract "; } out << "class " << fixKwd(name); out.useCurrentPosAsIndent(); - StringList implements; - bool implementsOnNewLine = true; - - if(bases.empty() || bases.front()->isInterface()) + if(baseClass) { - if(p->isLocal()) - { - implementsOnNewLine = false; - implements.push_back("java.lang.Cloneable"); - } - else - { - out << " extends Ice.ObjectImpl"; - } + out << " extends " << getAbsolute(baseClass, package); + bases.pop_front(); + } + else if(!p->isLocal()) + { + out << " extends Ice.ObjectImpl"; } else { - out << " extends "; - out << getAbsolute(baseClass, package); - bases.pop_front(); + implements.push_back("java.lang.Cloneable"); } - // - // Implement interfaces - // - - if(p->isAbstract()) + if(p->isAbstract() && !p->isLocal()) { - if(!p->isLocal()) - { - implements.push_back("_" + name + "Operations"); - implements.push_back("_" + name + "OperationsNC"); - } + implements.push_back("_" + name + "Operations"); + implements.push_back("_" + name + "OperationsNC"); } - if(!bases.empty()) + for(ClassList::const_iterator q = bases.begin(); q != bases.end(); ++q) { - for(ClassList::const_iterator q = bases.begin(); q != bases.end();) - { - implements.push_back(getAbsolute(*q, package)); - q++; - } + implements.push_back(getAbsolute(*q, package)); } if(!implements.empty()) { - if(implementsOnNewLine) + if(baseClass || !p->isLocal()) { out << nl; } out << " implements "; out.useCurrentPosAsIndent(); - - for(StringList::const_iterator q = implements.begin(); q != implements.end();) + for(StringList::const_iterator q = implements.begin(); q != implements.end(); ++q) { if(q != implements.begin()) { out << ',' << nl; } out << *q; - q++; } - out.restoreIndent(); } @@ -3480,15 +3477,37 @@ Slice::GenCompat::TypesVisitor::visitStructStart(const StructPtr& p) Output& out = output(); + // + // Check for java:implements metadata. + // + const StringList metaData = p->getMetaData(); + static const string prefix = "java:implements:"; + StringList implements; + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q) + { + if(q->find(prefix) == 0) + { + implements.push_back(q->substr(prefix.size())); + } + } + out << sp; writeDocComment(out, p, getDeprecateReason(p, 0, "type")); - out << nl << "public class " << name << " implements java.lang.Cloneable"; + out << nl << "public class " << name << " implements "; + out.useCurrentPosAsIndent(); + out << "java.lang.Cloneable"; if(!p->isLocal()) { - out << ", java.io.Serializable"; + out << "," << nl << "java.io.Serializable"; } + for(StringList::const_iterator q = implements.begin(); q != implements.end(); ++q) + { + out << "," << nl << *q; + } + out.restoreIndent(); + out << sb; return true; diff --git a/java-compat/src/Ice/src/main/java/Ice/CommunicatorI.java b/java-compat/src/Ice/src/main/java/Ice/CommunicatorI.java index de973f2c75a..e4eea1ecf6d 100644 --- a/java-compat/src/Ice/src/main/java/Ice/CommunicatorI.java +++ b/java-compat/src/Ice/src/main/java/Ice/CommunicatorI.java @@ -13,9 +13,16 @@ public final class CommunicatorI implements Communicator { @Override public void + close() + { + _instance.destroy(false); // Don't allow destroy to be interrupted if called from try with statement. + } + + @Override + public void destroy() { - _instance.destroy(); + _instance.destroy(true); // Destroy is interruptible when call explicitly. } @Override @@ -371,7 +378,7 @@ public final class CommunicatorI implements Communicator } catch(RuntimeException ex) { - _instance.destroy(); + _instance.destroy(false); throw ex; } } diff --git a/java-compat/src/Ice/src/main/java/IceInternal/Instance.java b/java-compat/src/Ice/src/main/java/IceInternal/Instance.java index 997b64313f6..2007fcb57ff 100644 --- a/java-compat/src/Ice/src/main/java/IceInternal/Instance.java +++ b/java-compat/src/Ice/src/main/java/IceInternal/Instance.java @@ -1121,7 +1121,7 @@ public final class Instance implements Ice.ClassResolver } catch(Ice.LocalException ex) { - destroy(); + destroy(false); throw ex; } } @@ -1348,9 +1348,9 @@ public final class Instance implements Ice.ClassResolver // @SuppressWarnings("deprecation") public void - destroy() + destroy(boolean interruptible) { - if(Thread.interrupted()) + if(interruptible && Thread.interrupted()) { throw new Ice.OperationInterruptedException(); } @@ -1370,7 +1370,10 @@ public final class Instance implements Ice.ClassResolver } catch(InterruptedException ex) { - throw new Ice.OperationInterruptedException(); + if(interruptible) + { + throw new Ice.OperationInterruptedException(); + } } } @@ -1479,7 +1482,10 @@ public final class Instance implements Ice.ClassResolver } catch(InterruptedException ex) { - throw new Ice.OperationInterruptedException(); + if(interruptible) + { + throw new Ice.OperationInterruptedException(); + } } // @@ -1570,6 +1576,7 @@ public final class Instance implements Ice.ClassResolver { if(_state == StateDestroyInProgress) { + assert(interruptible); _state = StateActive; notifyAll(); } diff --git a/java-compat/test/src/main/java/test/Ice/info/AllTests.java b/java-compat/test/src/main/java/test/Ice/info/AllTests.java index 4de2a87c2ff..a52714ac866 100644 --- a/java-compat/test/src/main/java/test/Ice/info/AllTests.java +++ b/java-compat/test/src/main/java/test/Ice/info/AllTests.java @@ -196,6 +196,12 @@ public class AllTests test(info.rcvSize >= 1024); test(info.sndSize >= 2048); + // + // Make sure the local slice class is cloneable + // + java.lang.Cloneable cloneable = info; + Ice.TCPConnectionInfo info2 = (Ice.TCPConnectionInfo)info.clone(); + java.util.Map<String, String> ctx = testIntf.getConnectionInfoAsContext(); test(ctx.get("incoming").equals("true")); test(ctx.get("adapterName").equals("TestAdapter")); diff --git a/java-compat/test/src/main/java/test/Util/Application.java b/java-compat/test/src/main/java/test/Util/Application.java index 30fcbc3d3af..59d76ceac2c 100644 --- a/java-compat/test/src/main/java/test/Util/Application.java +++ b/java-compat/test/src/main/java/test/Util/Application.java @@ -92,9 +92,9 @@ public abstract class Application int status = 0; - try + try(Ice.Communicator communicator = Util.initialize(argHolder, initData)) { - _communicator = Util.initialize(argHolder, initData); + _communicator = communicator; if(_communicatorListener != null) { _communicatorListener.communicatorInitialized(_communicator); @@ -131,15 +131,11 @@ public abstract class Application err.printStackTrace(writer); status = 1; } - writer.flush(); - - if(_communicator != null) + finally { - _communicator.destroy(); _communicator = null; } writer.flush(); - return status; } 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 3ee8b9f7054..1f9041840b0 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 @@ -13,9 +13,16 @@ public final class CommunicatorI implements Communicator { @Override public void + close() + { + _instance.destroy(false); // Don't allow destroy to be interrupted if called from try with statement. + } + + @Override + public void destroy() { - _instance.destroy(); + _instance.destroy(true); // Destroy is interruptible when call explicitly. } @Override @@ -315,7 +322,7 @@ public final class CommunicatorI implements Communicator } catch(RuntimeException ex) { - _instance.destroy(); + _instance.destroy(false); throw ex; } } 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 ff50bab15e7..b4e008352da 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 @@ -84,8 +84,21 @@ public final class Util /** * Encapsulates the results of a call to initialize(). **/ - public static class InitializeResult + public static class InitializeResult implements java.lang.AutoCloseable { + @Override + public void close() + { + try + { + communicator.close(); + } + catch(java.lang.Exception ex) + { + assert(false); + } + } + /** The new communicator. */ public Communicator communicator; diff --git a/java/src/Ice/src/main/java/com/zeroc/IceInternal/Instance.java b/java/src/Ice/src/main/java/com/zeroc/IceInternal/Instance.java index 5bf70b1d2f6..305fee3f5d3 100644 --- a/java/src/Ice/src/main/java/com/zeroc/IceInternal/Instance.java +++ b/java/src/Ice/src/main/java/com/zeroc/IceInternal/Instance.java @@ -1171,7 +1171,7 @@ public final class Instance implements com.zeroc.Ice.ClassResolver } catch(com.zeroc.Ice.LocalException ex) { - destroy(); + destroy(false); throw ex; } } @@ -1401,9 +1401,9 @@ public final class Instance implements com.zeroc.Ice.ClassResolver // @SuppressWarnings("deprecation") public void - destroy() + destroy(boolean interruptible) { - if(Thread.interrupted()) + if(interruptible && Thread.interrupted()) { throw new com.zeroc.Ice.OperationInterruptedException(); } @@ -1423,7 +1423,10 @@ public final class Instance implements com.zeroc.Ice.ClassResolver } catch(InterruptedException ex) { - throw new com.zeroc.Ice.OperationInterruptedException(); + if(interruptible) + { + throw new com.zeroc.Ice.OperationInterruptedException(); + } } } @@ -1532,7 +1535,10 @@ public final class Instance implements com.zeroc.Ice.ClassResolver } catch(InterruptedException ex) { - throw new com.zeroc.Ice.OperationInterruptedException(); + if(interruptible) + { + throw new com.zeroc.Ice.OperationInterruptedException(); + } } // @@ -1624,6 +1630,7 @@ public final class Instance implements com.zeroc.Ice.ClassResolver { if(_state == StateDestroyInProgress) { + assert(interruptible); _state = StateActive; notifyAll(); } diff --git a/java/test/src/main/java/test/Ice/info/AllTests.java b/java/test/src/main/java/test/Ice/info/AllTests.java index 9123be0a685..d22aaf55e5b 100644 --- a/java/test/src/main/java/test/Ice/info/AllTests.java +++ b/java/test/src/main/java/test/Ice/info/AllTests.java @@ -210,6 +210,12 @@ public class AllTests test(info.rcvSize >= 1024); test(info.sndSize >= 2048); + // + // Make sure the local slice class is cloneable + // + java.lang.Cloneable cloneable = info; + TCPConnectionInfo info2 = (TCPConnectionInfo)info.clone(); + java.util.Map<String, String> ctx = testIntf.getConnectionInfoAsContext(); test(ctx.get("incoming").equals("true")); test(ctx.get("adapterName").equals("TestAdapter")); diff --git a/java/test/src/main/java/test/Util/Application.java b/java/test/src/main/java/test/Util/Application.java index 73f49b04ff9..50c0badd0b8 100644 --- a/java/test/src/main/java/test/Util/Application.java +++ b/java/test/src/main/java/test/Util/Application.java @@ -94,9 +94,8 @@ public abstract class Application int status = 0; - try + try(Util.InitializeResult ir = Util.initialize(cpr.args, initData)) { - Util.InitializeResult ir = Util.initialize(cpr.args, initData); _communicator = ir.communicator; if(_communicatorListener != null) { @@ -134,11 +133,8 @@ public abstract class Application err.printStackTrace(writer); status = 1; } - writer.flush(); - - if(_communicator != null) + finally { - _communicator.destroy(); _communicator = null; } writer.flush(); diff --git a/python/python/Ice.py b/python/python/Ice.py index 4c7e80227cf..80b48c639fc 100644 --- a/python/python/Ice.py +++ b/python/python/Ice.py @@ -318,10 +318,10 @@ Returns: # pass class InterfaceByValue(Value): - + def __init__(self, id): self.id = id - + def ice_id(self): return self.id @@ -838,6 +838,12 @@ class CommunicatorI(Communicator): self._impl = impl impl._setWrapper(self) + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self._impl.destroy() + def destroy(self): self._impl.destroy() diff --git a/python/test/Ice/acm/Client.py b/python/test/Ice/acm/Client.py index 8e9586ab9f7..7a2023a4374 100755 --- a/python/test/Ice/acm/Client.py +++ b/python/test/Ice/acm/Client.py @@ -32,13 +32,10 @@ try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty('Ice.Warn.Connections', '0') - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/acm/Server.py b/python/test/Ice/acm/Server.py index 2db5b7dece5..3631b716932 100755 --- a/python/test/Ice/acm/Server.py +++ b/python/test/Ice/acm/Server.py @@ -37,13 +37,10 @@ try: initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.Warn.Connections", "0"); initData.properties.setProperty("Ice.ACM.Timeout", "1"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/admin/Client.py b/python/test/Ice/admin/Client.py index 8ad8e0d5fe3..0d4f59af69d 100644 --- a/python/test/Ice/admin/Client.py +++ b/python/test/Ice/admin/Client.py @@ -28,13 +28,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/admin/Server.py b/python/test/Ice/admin/Server.py index 50b762fc9ec..90acf7530a3 100644 --- a/python/test/Ice/admin/Server.py +++ b/python/test/Ice/admin/Server.py @@ -30,13 +30,10 @@ def run(args, communicator): return True; try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/ami/Client.py b/python/test/Ice/ami/Client.py index d3a0275ffe2..1966ff4bd6d 100755 --- a/python/test/Ice/ami/Client.py +++ b/python/test/Ice/ami/Client.py @@ -40,13 +40,10 @@ try: # initData.properties.setProperty("Ice.TCP.SndSize", "50000"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/ami/Collocated.py b/python/test/Ice/ami/Collocated.py index 8336b26a3d9..060bf5b4c52 100755 --- a/python/test/Ice/ami/Collocated.py +++ b/python/test/Ice/ami/Collocated.py @@ -50,13 +50,10 @@ try: # initData.properties.setProperty("Ice.Warn.Connections", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/ami/Server.py b/python/test/Ice/ami/Server.py index c98543c93b2..1872276ecb0 100755 --- a/python/test/Ice/ami/Server.py +++ b/python/test/Ice/ami/Server.py @@ -52,13 +52,10 @@ try: # initData.properties.setProperty("Ice.TCP.RcvSize", "50000"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/binding/Client.py b/python/test/Ice/binding/Client.py index c702a3752da..7aff07d049c 100755 --- a/python/test/Ice/binding/Client.py +++ b/python/test/Ice/binding/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/binding/Server.py b/python/test/Ice/binding/Server.py index 5cfa8e9a7df..623afa99954 100755 --- a/python/test/Ice/binding/Server.py +++ b/python/test/Ice/binding/Server.py @@ -25,13 +25,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/blobject/Client.py b/python/test/Ice/blobject/Client.py index ce25b994c8c..43d6be41f50 100755 --- a/python/test/Ice/blobject/Client.py +++ b/python/test/Ice/blobject/Client.py @@ -52,41 +52,31 @@ try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(argv) initData.properties.setProperty('Ice.Warn.Dispatch', '0') - communicator = Ice.initialize(argv, initData) - router = RouterI.RouterI(communicator, False) - sys.stdout.write("testing async blobject... ") - sys.stdout.flush() - status = run(sys.argv, communicator, False) - print("ok") - router.destroy() + with Ice.initialize(argv, initData) as communicator: + router = RouterI.RouterI(communicator, False) + sys.stdout.write("testing async blobject... ") + sys.stdout.flush() + status = run(sys.argv, communicator, False) + print("ok") + router.destroy() except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - if status: try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty('Ice.Warn.Dispatch', '0') - communicator = Ice.initialize(sys.argv, initData) - router = RouterI.RouterI(communicator, True) - sys.stdout.write("testing sync blobject... ") - sys.stdout.flush() - status = run(sys.argv, communicator, True) - print("ok") - router.destroy() + with Ice.initialize(sys.argv, initData) as communicator: + router = RouterI.RouterI(communicator, True) + sys.stdout.write("testing sync blobject... ") + sys.stdout.flush() + status = run(sys.argv, communicator, True) + print("ok") + router.destroy() except: traceback.print_exc() status = False - if communicator: - try: - communicator.destroy() - except: - traceback.print_exc() - status = False - sys.exit(not status) diff --git a/python/test/Ice/blobject/Server.py b/python/test/Ice/blobject/Server.py index cd02c163c36..ad6d43b5b9f 100755 --- a/python/test/Ice/blobject/Server.py +++ b/python/test/Ice/blobject/Server.py @@ -47,13 +47,10 @@ try: # this warning. # initData.properties.setProperty("Ice.Warn.Dispatch", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/checksum/Client.py b/python/test/Ice/checksum/Client.py index ac14ef4820a..fc8e6a1de9c 100755 --- a/python/test/Ice/checksum/Client.py +++ b/python/test/Ice/checksum/Client.py @@ -25,13 +25,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/checksum/Server.py b/python/test/Ice/checksum/Server.py index 990de16608e..6b1ae945fad 100755 --- a/python/test/Ice/checksum/Server.py +++ b/python/test/Ice/checksum/Server.py @@ -36,13 +36,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/custom/Client.py b/python/test/Ice/custom/Client.py index 31d6c9f0d7c..377c310b823 100755 --- a/python/test/Ice/custom/Client.py +++ b/python/test/Ice/custom/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/custom/Server.py b/python/test/Ice/custom/Server.py index 0c118c80344..49c830c1ace 100755 --- a/python/test/Ice/custom/Server.py +++ b/python/test/Ice/custom/Server.py @@ -99,13 +99,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/defaultServant/Client.py b/python/test/Ice/defaultServant/Client.py index c702a3752da..7aff07d049c 100755 --- a/python/test/Ice/defaultServant/Client.py +++ b/python/test/Ice/defaultServant/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/enums/Client.py b/python/test/Ice/enums/Client.py index cc50301dbf1..8033ba44588 100755 --- a/python/test/Ice/enums/Client.py +++ b/python/test/Ice/enums/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/enums/Server.py b/python/test/Ice/enums/Server.py index 299e1196301..bdb7a4357d3 100755 --- a/python/test/Ice/enums/Server.py +++ b/python/test/Ice/enums/Server.py @@ -56,13 +56,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/exceptions/Client.py b/python/test/Ice/exceptions/Client.py index a721c09b5e5..2a2a9ddbcb4 100755 --- a/python/test/Ice/exceptions/Client.py +++ b/python/test/Ice/exceptions/Client.py @@ -29,13 +29,10 @@ try: initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.MessageSizeMax", "10") initData.properties.setProperty("Ice.Warn.Connections", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/exceptions/Collocated.py b/python/test/Ice/exceptions/Collocated.py index 555805a08db..b0345cbc7d7 100755 --- a/python/test/Ice/exceptions/Collocated.py +++ b/python/test/Ice/exceptions/Collocated.py @@ -36,13 +36,10 @@ try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.MessageSizeMax", "10") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/exceptions/Server.py b/python/test/Ice/exceptions/Server.py index 3cb70a97161..018adf04c93 100755 --- a/python/test/Ice/exceptions/Server.py +++ b/python/test/Ice/exceptions/Server.py @@ -44,13 +44,10 @@ try: initData.properties.setProperty("TestAdapter2.MessageSizeMax", "0") initData.properties.setProperty("TestAdapter3.Endpoints", "default -p 12012") initData.properties.setProperty("TestAdapter3.MessageSizeMax", "1") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/exceptions/ServerAMD.py b/python/test/Ice/exceptions/ServerAMD.py index 999a41115c8..04e28fdf8d0 100755 --- a/python/test/Ice/exceptions/ServerAMD.py +++ b/python/test/Ice/exceptions/ServerAMD.py @@ -175,13 +175,10 @@ try: initData.properties.setProperty("TestAdapter2.MessageSizeMax", "0") initData.properties.setProperty("TestAdapter3.Endpoints", "default -p 12012") initData.properties.setProperty("TestAdapter3.MessageSizeMax", "1") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/facets/Client.py b/python/test/Ice/facets/Client.py index 07b46c03e43..cf0d5394643 100755 --- a/python/test/Ice/facets/Client.py +++ b/python/test/Ice/facets/Client.py @@ -21,13 +21,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/facets/Collocated.py b/python/test/Ice/facets/Collocated.py index 7b0734c6801..47844d24114 100755 --- a/python/test/Ice/facets/Collocated.py +++ b/python/test/Ice/facets/Collocated.py @@ -32,13 +32,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/facets/Server.py b/python/test/Ice/facets/Server.py index 293b1a24bdc..89871e1feb5 100755 --- a/python/test/Ice/facets/Server.py +++ b/python/test/Ice/facets/Server.py @@ -31,13 +31,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/faultTolerance/Client.py b/python/test/Ice/faultTolerance/Client.py index 2148c01553b..2284d80f979 100755 --- a/python/test/Ice/faultTolerance/Client.py +++ b/python/test/Ice/faultTolerance/Client.py @@ -51,13 +51,10 @@ try: # initData.properties.setProperty('Ice.Warn.Connections', '0') - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/faultTolerance/Server.py b/python/test/Ice/faultTolerance/Server.py index 6185f4e23ac..d5545bd1000 100755 --- a/python/test/Ice/faultTolerance/Server.py +++ b/python/test/Ice/faultTolerance/Server.py @@ -69,13 +69,10 @@ try: initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.ServerIdleTime", "120") # Two minutes. - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/info/Client.py b/python/test/Ice/info/Client.py index 8d395d34d36..cb2771d86ba 100755 --- a/python/test/Ice/info/Client.py +++ b/python/test/Ice/info/Client.py @@ -30,13 +30,10 @@ def run(args, communicator): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/info/Server.py b/python/test/Ice/info/Server.py index 63dfac1ebd0..3a5ade3c048 100755 --- a/python/test/Ice/info/Server.py +++ b/python/test/Ice/info/Server.py @@ -30,13 +30,10 @@ def run(args, communicator): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/inheritance/Client.py b/python/test/Ice/inheritance/Client.py index 5d978d0bb61..e095ce7f61c 100755 --- a/python/test/Ice/inheritance/Client.py +++ b/python/test/Ice/inheritance/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/inheritance/Collocated.py b/python/test/Ice/inheritance/Collocated.py index 5fd18d1b4c6..22552fc8565 100755 --- a/python/test/Ice/inheritance/Collocated.py +++ b/python/test/Ice/inheritance/Collocated.py @@ -26,13 +26,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/inheritance/Server.py b/python/test/Ice/inheritance/Server.py index 027ff3b5e80..c00f6ec3813 100755 --- a/python/test/Ice/inheritance/Server.py +++ b/python/test/Ice/inheritance/Server.py @@ -24,13 +24,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/location/Client.py b/python/test/Ice/location/Client.py index 71418f137a6..2dc7cf6597b 100755 --- a/python/test/Ice/location/Client.py +++ b/python/test/Ice/location/Client.py @@ -31,13 +31,10 @@ try: data = Ice.InitializationData() data.properties = Ice.createProperties(sys.argv) data.properties.setProperty("Ice.Default.Locator", "locator:default -p 12010") - communicator = Ice.initialize(sys.argv, data) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, data) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/location/Server.py b/python/test/Ice/location/Server.py index 00e91ef3f47..124407f3588 100755 --- a/python/test/Ice/location/Server.py +++ b/python/test/Ice/location/Server.py @@ -183,13 +183,10 @@ def run(args, communicator, initData): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator, initData) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator, initData) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/objects/Client.py b/python/test/Ice/objects/Client.py index 6cd16ce186d..00d366ff9e3 100755 --- a/python/test/Ice/objects/Client.py +++ b/python/test/Ice/objects/Client.py @@ -21,13 +21,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/objects/Collocated.py b/python/test/Ice/objects/Collocated.py index ca2c54b22bc..8a9fd789eb8 100755 --- a/python/test/Ice/objects/Collocated.py +++ b/python/test/Ice/objects/Collocated.py @@ -32,13 +32,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/objects/Server.py b/python/test/Ice/objects/Server.py index b986603ccdf..4810fefa5b9 100755 --- a/python/test/Ice/objects/Server.py +++ b/python/test/Ice/objects/Server.py @@ -40,13 +40,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/operations/Client.py b/python/test/Ice/operations/Client.py index 2815874b243..6bcc4502d00 100755 --- a/python/test/Ice/operations/Client.py +++ b/python/test/Ice/operations/Client.py @@ -49,13 +49,10 @@ try: initData.properties.setProperty('Ice.ThreadPool.Client.SizeWarn', '0') initData.properties.setProperty("Ice.BatchAutoFlushSize", "100") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/operations/Collocated.py b/python/test/Ice/operations/Collocated.py index 02d35848c0c..a8240de89e8 100755 --- a/python/test/Ice/operations/Collocated.py +++ b/python/test/Ice/operations/Collocated.py @@ -38,13 +38,10 @@ try: initData.properties.setProperty("Ice.BatchAutoFlushSize", "100") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/operations/Server.py b/python/test/Ice/operations/Server.py index 6a0dc70da53..c2f68be89c0 100755 --- a/python/test/Ice/operations/Server.py +++ b/python/test/Ice/operations/Server.py @@ -35,13 +35,10 @@ try: # this warning. # initData.properties.setProperty("Ice.Warn.Dispatch", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/operations/ServerAMD.py b/python/test/Ice/operations/ServerAMD.py index cc950bb90ec..c603b9264b8 100755 --- a/python/test/Ice/operations/ServerAMD.py +++ b/python/test/Ice/operations/ServerAMD.py @@ -455,13 +455,10 @@ try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.Warn.Dispatch", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/optional/Client.py b/python/test/Ice/optional/Client.py index 3ebef40e6be..98b80f445ee 100755 --- a/python/test/Ice/optional/Client.py +++ b/python/test/Ice/optional/Client.py @@ -20,13 +20,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/optional/Server.py b/python/test/Ice/optional/Server.py index c9182ac46a7..75843937efa 100755 --- a/python/test/Ice/optional/Server.py +++ b/python/test/Ice/optional/Server.py @@ -197,13 +197,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/optional/ServerAMD.py b/python/test/Ice/optional/ServerAMD.py index 65f84d2f269..1659377060a 100755 --- a/python/test/Ice/optional/ServerAMD.py +++ b/python/test/Ice/optional/ServerAMD.py @@ -203,13 +203,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/proxy/Client.py b/python/test/Ice/proxy/Client.py index 027a6eb070a..8b73fb8a670 100755 --- a/python/test/Ice/proxy/Client.py +++ b/python/test/Ice/proxy/Client.py @@ -32,13 +32,10 @@ def run(args, communicator): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/proxy/Collocated.py b/python/test/Ice/proxy/Collocated.py index bc240b8fc26..48f74175880 100755 --- a/python/test/Ice/proxy/Collocated.py +++ b/python/test/Ice/proxy/Collocated.py @@ -32,13 +32,10 @@ def run(args, communicator): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/proxy/Server.py b/python/test/Ice/proxy/Server.py index 4d2826e43a0..eb9dc15f064 100755 --- a/python/test/Ice/proxy/Server.py +++ b/python/test/Ice/proxy/Server.py @@ -32,13 +32,10 @@ try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.Warn.Dispatch", "0") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/proxy/ServerAMD.py b/python/test/Ice/proxy/ServerAMD.py index 00a109ef7db..7cbc59a5662 100755 --- a/python/test/Ice/proxy/ServerAMD.py +++ b/python/test/Ice/proxy/ServerAMD.py @@ -49,13 +49,10 @@ try: initData.properties = Ice.createProperties(sys.argv) initData.properties.setProperty("Ice.Warn.Connections", "0") initData.properties.setProperty("Ice.Warn.Dispatch", "0") - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/exceptions/Client.py b/python/test/Ice/slicing/exceptions/Client.py index ef47308a897..9e7c832f104 100755 --- a/python/test/Ice/slicing/exceptions/Client.py +++ b/python/test/Ice/slicing/exceptions/Client.py @@ -18,13 +18,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/exceptions/Server.py b/python/test/Ice/slicing/exceptions/Server.py index d77acfcccca..e31ccced5e8 100755 --- a/python/test/Ice/slicing/exceptions/Server.py +++ b/python/test/Ice/slicing/exceptions/Server.py @@ -163,13 +163,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/exceptions/ServerAMD.py b/python/test/Ice/slicing/exceptions/ServerAMD.py index 8e821636a60..00a915508e3 100755 --- a/python/test/Ice/slicing/exceptions/ServerAMD.py +++ b/python/test/Ice/slicing/exceptions/ServerAMD.py @@ -224,13 +224,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/objects/Client.py b/python/test/Ice/slicing/objects/Client.py index ef47308a897..9e7c832f104 100755 --- a/python/test/Ice/slicing/objects/Client.py +++ b/python/test/Ice/slicing/objects/Client.py @@ -18,13 +18,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/objects/Server.py b/python/test/Ice/slicing/objects/Server.py index a8048d2bf8d..b17c73b57d7 100755 --- a/python/test/Ice/slicing/objects/Server.py +++ b/python/test/Ice/slicing/objects/Server.py @@ -376,13 +376,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/slicing/objects/ServerAMD.py b/python/test/Ice/slicing/objects/ServerAMD.py index 1f925613b6b..1839a9f6480 100755 --- a/python/test/Ice/slicing/objects/ServerAMD.py +++ b/python/test/Ice/slicing/objects/ServerAMD.py @@ -412,13 +412,10 @@ def run(args, communicator): return True try: - communicator = Ice.initialize(sys.argv) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/timeout/Client.py b/python/test/Ice/timeout/Client.py index f6695090351..343420bc121 100755 --- a/python/test/Ice/timeout/Client.py +++ b/python/test/Ice/timeout/Client.py @@ -58,13 +58,10 @@ try: # initData.properties.setProperty("Ice.TCP.SndSize", "50000"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Ice/timeout/Server.py b/python/test/Ice/timeout/Server.py index d607016e64e..413a85b834a 100755 --- a/python/test/Ice/timeout/Server.py +++ b/python/test/Ice/timeout/Server.py @@ -65,13 +65,10 @@ try: # send() blocking after sending a given amount of data. # initData.properties.setProperty("Ice.TCP.RcvSize", "50000"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Slice/escape/Client.py b/python/test/Slice/escape/Client.py index 6305365602a..882e9739329 100755 --- a/python/test/Slice/escape/Client.py +++ b/python/test/Slice/escape/Client.py @@ -104,13 +104,10 @@ try: # this warning. # initData.properties.setProperty("Ice.Warn.Dispatch", "0"); - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/python/test/Slice/structure/Client.py b/python/test/Slice/structure/Client.py index ee963021e65..ded72abdf7b 100755 --- a/python/test/Slice/structure/Client.py +++ b/python/test/Slice/structure/Client.py @@ -195,13 +195,10 @@ def run(args, communicator): try: initData = Ice.InitializationData() initData.properties = Ice.createProperties(sys.argv) - communicator = Ice.initialize(sys.argv, initData) - status = run(sys.argv, communicator) + with Ice.initialize(sys.argv, initData) as communicator: + status = run(sys.argv, communicator) except: traceback.print_exc() status = False -if communicator: - communicator.destroy() - sys.exit(not status) diff --git a/slice/Ice/Communicator.ice b/slice/Ice/Communicator.ice index 13340562e06..49821037313 100644 --- a/slice/Ice/Communicator.ice +++ b/slice/Ice/Communicator.ice @@ -54,7 +54,7 @@ module Ice * @see ValueFactory * **/ -["clr:implements:_System.IDisposable", "php:internal"] +["clr:implements:_System.IDisposable", "java:implements:java.lang.AutoCloseable", "php:internal"] local interface Communicator { /** |