diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-01-10 10:22:43 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-01-10 10:22:43 +0000 |
commit | 26c33e45e09f6c635f6a663f05e9edb51f5461ef (patch) | |
tree | 55caad6a4594a51899948b9451171098dbc7fb1e /java/src/IceInternal/IncomingAsync.java | |
parent | Win32 fix (diff) | |
download | ice-26c33e45e09f6c635f6a663f05e9edb51f5461ef.tar.bz2 ice-26c33e45e09f6c635f6a663f05e9edb51f5461ef.tar.xz ice-26c33e45e09f6c635f6a663f05e9edb51f5461ef.zip |
Fixed bug 1650
Diffstat (limited to 'java/src/IceInternal/IncomingAsync.java')
-rw-r--r-- | java/src/IceInternal/IncomingAsync.java | 261 |
1 files changed, 23 insertions, 238 deletions
diff --git a/java/src/IceInternal/IncomingAsync.java b/java/src/IceInternal/IncomingAsync.java index e8e891b49f0..7a7bb90678f 100644 --- a/java/src/IceInternal/IncomingAsync.java +++ b/java/src/IceInternal/IncomingAsync.java @@ -22,9 +22,9 @@ public class IncomingAsync extends IncomingBase { try { - if(_locator != null && _servant != null) + if(!__servantLocatorFinished()) { - _locator.finished(_current, _servant, _cookie.value); + return; } if(_response) @@ -54,18 +54,7 @@ public class IncomingAsync extends IncomingBase } catch(Ice.LocalException ex) { - _connection.exception(ex); - } - catch(java.lang.Exception ex) - { - Ice.UnknownException uex = new Ice.UnknownException(); - //uex.unknown = ex.toString(); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - ex.printStackTrace(pw); - pw.flush(); - uex.unknown = sw.toString(); - _connection.exception(uex); + _connection.invokeException(ex, 1); } } @@ -74,239 +63,35 @@ public class IncomingAsync extends IncomingBase { try { - if(_locator != null && _servant != null) - { - _locator.finished(_current, _servant, _cookie.value); - } - - try - { - throw exc; - } - catch(Ice.RequestFailedException ex) - { - if(ex.id == null) - { - ex.id = _current.id; - } - - if(ex.facet == null) - { - ex.facet = _current.facet; - } - - if(ex.operation == null || ex.operation.length() == 0) - { - ex.operation = _current.operation; - } - - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 1) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - if(ex instanceof Ice.ObjectNotExistException) - { - _os.writeByte((byte)DispatchStatus._DispatchObjectNotExist); - } - else if(ex instanceof Ice.FacetNotExistException) - { - _os.writeByte((byte)DispatchStatus._DispatchFacetNotExist); - } - else if(ex instanceof Ice.OperationNotExistException) - { - _os.writeByte((byte)DispatchStatus._DispatchOperationNotExist); - } - else - { - assert(false); - } - ex.id.__write(_os); - - // - // For compatibility with the old FacetPath. - // - if(ex.facet == null || ex.facet.length() == 0) - { - _os.writeStringSeq(null); - } - else - { - String[] facetPath = { ex.facet }; - _os.writeStringSeq(facetPath); - } - - _os.writeString(ex.operation); - - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } - catch(Ice.UnknownLocalException ex) - { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownLocalException); - _os.writeString(ex.unknown); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } - catch(Ice.UnknownUserException ex) - { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownUserException); - _os.writeString(ex.unknown); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } - catch(Ice.UnknownException ex) - { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownException); - _os.writeString(ex.unknown); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } - catch(Ice.LocalException ex) - { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownLocalException); - //_os.writeString(ex.toString()); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - ex.printStackTrace(pw); - pw.flush(); - _os.writeString(sw.toString()); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } - catch(Ice.UserException ex) + if(!__servantLocatorFinished()) { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownUserException); - //_os.writeString(ex.toString()); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - ex.printStackTrace(pw); - pw.flush(); - _os.writeString(sw.toString()); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } + return; } - catch(java.lang.Exception ex) - { - if(_os.instance().initializationData().properties.getPropertyAsIntWithDefault( - "Ice.Warn.Dispatch", 1) > 0) - { - __warning(ex); - } - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Dispatch status position. - _os.writeByte((byte)DispatchStatus._DispatchUnknownException); - //_os.writeString(ex.toString()); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - ex.printStackTrace(pw); - pw.flush(); - _os.writeString(sw.toString()); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - } + __handleException(exc); } catch(Ice.LocalException ex) { - _connection.exception(ex); + _connection.invokeException(ex, 1); } - catch(java.lang.Exception ex) + } + + final private boolean + __servantLocatorFinished() + { + try { - Ice.UnknownException uex = new Ice.UnknownException(); - //uex.unknown = ex.toString(); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - ex.printStackTrace(pw); - pw.flush(); - uex.unknown = sw.toString(); - _connection.exception(uex); + if(_locator != null && _servant != null) + { + _locator.finished(_current, _servant, _cookie.value); + } + return true; } + catch(java.lang.Exception ex) + { + __handleException(ex); + return false; + } } final protected BasicStream |