diff options
author | Jose <jose@zeroc.com> | 2012-01-03 22:35:03 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2012-01-03 22:35:03 +0100 |
commit | f508d7d7cf7811062c5466efa2b3bf7f921947d8 (patch) | |
tree | adcee43513be1f8a3a76db89857d6aa73a664842 /java/src/Ice/ObjectAdapterI.java | |
parent | ICE-4744 Eclipse plugin: build failure when slice2java generates warning (diff) | |
download | ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.bz2 ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.xz ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.zip |
ICE-3318 Java finalizers are problematic
Diffstat (limited to 'java/src/Ice/ObjectAdapterI.java')
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index e975fc71434..96a44c35dd9 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -1038,25 +1038,33 @@ public final class ObjectAdapterI implements ObjectAdapter finalize() throws Throwable { - if(!_deactivated) + try { - _instance.initializationData().logger.warning("object adapter `" + getName() + - "' has not been deactivated"); + if(!_deactivated) + { + _instance.initializationData().logger.warning("object adapter `" + getName() + + "' has not been deactivated"); + } + else if(!_destroyed) + { + _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed"); + } + else + { + IceUtilInternal.Assert.FinalizerAssert(_threadPool == null); + //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable. + //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_directCount == 0); + IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate); + } } - else if(!_destroyed) + catch(java.lang.Exception ex) { - _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed"); } - else + finally { - IceUtilInternal.Assert.FinalizerAssert(_threadPool == null); - //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable. - //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty()); - IceUtilInternal.Assert.FinalizerAssert(_directCount == 0); - IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate); + super.finalize(); } - - super.finalize(); } private ObjectPrx |