diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceInternal/Direct.java | 69 | ||||
-rw-r--r-- | java/src/IceInternal/Incoming.java | 109 | ||||
-rw-r--r-- | java/src/IceInternal/IncomingAsync.java | 45 | ||||
-rw-r--r-- | java/src/IceInternal/IncomingBase.java | 36 |
4 files changed, 118 insertions, 141 deletions
diff --git a/java/src/IceInternal/Direct.java b/java/src/IceInternal/Direct.java index 5d6f83e1966..5317fc28300 100644 --- a/java/src/IceInternal/Direct.java +++ b/java/src/IceInternal/Direct.java @@ -44,63 +44,52 @@ public abstract class Direct implements Ice.Request ServantManager servantManager = adapter.getServantManager(); assert(servantManager != null); - try + _servant = servantManager.findServant(_current.id, _current.facet); + if(_servant == null) { - _servant = servantManager.findServant(_current.id, _current.facet); - if(_servant == null) + _locator = servantManager.findServantLocator(_current.id.category); + if(_locator == null && _current.id.category.length() > 0) { - _locator = servantManager.findServantLocator(_current.id.category); - if(_locator == null && _current.id.category.length() > 0) - { - _locator = servantManager.findServantLocator(""); - } - if(_locator != null) - { - _cookie = new Ice.LocalObjectHolder(); // Lazy creation. - try - { - _servant = _locator.locate(_current, _cookie); - } - catch(Ice.UserException ex) - { - adapter.decDirectCount(); - throw ex; - } - } + _locator = servantManager.findServantLocator(""); } - if(_servant == null) + if(_locator != null) { - if(servantManager != null && servantManager.hasServant(_current.id)) + _cookie = new Ice.LocalObjectHolder(); // Lazy creation. + try + { + _servant = _locator.locate(_current, _cookie); + } + catch(Ice.UserException ex) { - Ice.FacetNotExistException ex = new Ice.FacetNotExistException(); - ex.id = _current.id; - ex.facet = _current.facet; - ex.operation = _current.operation; + adapter.decDirectCount(); throw ex; } - else + catch(java.lang.RuntimeException ex) { - Ice.ObjectNotExistException ex = new Ice.ObjectNotExistException(); - ex.id = _current.id; - ex.facet = _current.facet; - ex.operation = _current.operation; + adapter.decDirectCount(); throw ex; } } } - catch(RuntimeException ex) + + if(_servant == null) { - try + adapter.decDirectCount(); + if(servantManager != null && servantManager.hasServant(_current.id)) { - if(_locator != null && _servant != null) - { - _locator.finished(_current, _servant, _cookie.value); - } + Ice.FacetNotExistException ex = new Ice.FacetNotExistException(); + ex.id = _current.id; + ex.facet = _current.facet; + ex.operation = _current.operation; throw ex; } - finally + else { - adapter.decDirectCount(); + Ice.ObjectNotExistException ex = new Ice.ObjectNotExistException(); + ex.id = _current.id; + ex.facet = _current.facet; + ex.operation = _current.operation; + throw ex; } } } diff --git a/java/src/IceInternal/Incoming.java b/java/src/IceInternal/Incoming.java index a72e45b74ef..28dd812dbbd 100644 --- a/java/src/IceInternal/Incoming.java +++ b/java/src/IceInternal/Incoming.java @@ -120,83 +120,76 @@ final public class Incoming extends IncomingBase implements Ice.Request // the caller of this operation. // - try + if(servantManager != null) { - try + _servant = servantManager.findServant(_current.id, _current.facet); + if(_servant == null) { - if(servantManager != null) + _locator = servantManager.findServantLocator(_current.id.category); + if(_locator == null && _current.id.category.length() > 0) { - _servant = servantManager.findServant(_current.id, _current.facet); - if(_servant == null) - { - _locator = servantManager.findServantLocator(_current.id.category); - if(_locator == null && _current.id.category.length() > 0) - { - _locator = servantManager.findServantLocator(""); - } - if(_locator != null) - { - try - { - _servant = _locator.locate(_current, _cookie); - } - catch(Ice.UserException ex) - { - _os.writeUserException(ex); - replyStatus = ReplyStatus.replyUserException; - } - } - } + _locator = servantManager.findServantLocator(""); } - if(replyStatus == ReplyStatus.replyOK) + + if(_locator != null) { - if(_servant == null) + try { - if(servantManager != null && servantManager.hasServant(_current.id)) - { - replyStatus = ReplyStatus.replyFacetNotExist; - } - else - { - replyStatus = ReplyStatus.replyObjectNotExist; - } + _servant = _locator.locate(_current, _cookie); } - else + catch(Ice.UserException ex) { - dispatchStatus = _servant.__dispatch(this, _current); - if(dispatchStatus == Ice.DispatchStatus.DispatchUserException) - { - replyStatus = ReplyStatus.replyUserException; - } + _os.writeUserException(ex); + replyStatus = ReplyStatus.replyUserException; + } + catch(java.lang.Exception ex) + { + __handleException(ex); + return; } } } - finally + } + + if(_servant != null) + { + try { - if(_locator != null && _servant != null && dispatchStatus != Ice.DispatchStatus.DispatchAsync) + assert(replyStatus == ReplyStatus.replyOK); + dispatchStatus = _servant.__dispatch(this, _current); + if(dispatchStatus == Ice.DispatchStatus.DispatchUserException) { - try - { - _locator.finished(_current, _servant, _cookie.value); - } - catch(Ice.UserException ex) + replyStatus = ReplyStatus.replyUserException; + } + + if(dispatchStatus != Ice.DispatchStatus.DispatchAsync) + { + if(_locator != null && !__servantLocatorFinished()) { - // - // The operation may have already marshaled a reply; we must overwrite that reply. - // - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 5, false); // Byte following reply status. - _os.startWriteEncaps(); - _os.writeUserException(ex); - replyStatus = ReplyStatus.replyUserException; // Code below inserts the reply status. + return; } } } + catch(java.lang.Exception ex) + { + if(_locator != null && !__servantLocatorFinished()) + { + return; + } + __handleException(ex); + return; + } } - catch(java.lang.Exception ex) + else if(replyStatus == ReplyStatus.replyOK) { - __handleException(ex); - return; + if(servantManager != null && servantManager.hasServant(_current.id)) + { + replyStatus = ReplyStatus.replyFacetNotExist; + } + else + { + replyStatus = ReplyStatus.replyObjectNotExist; + } } // diff --git a/java/src/IceInternal/IncomingAsync.java b/java/src/IceInternal/IncomingAsync.java index 9882cd1ec26..d18b37d0a37 100644 --- a/java/src/IceInternal/IncomingAsync.java +++ b/java/src/IceInternal/IncomingAsync.java @@ -50,7 +50,7 @@ public class IncomingAsync extends IncomingBase { try { - if(!__servantLocatorFinished()) + if(_locator != null && !__servantLocatorFinished()) { return; } @@ -92,7 +92,7 @@ public class IncomingAsync extends IncomingBase try { - if(!__servantLocatorFinished()) + if(_locator != null && !__servantLocatorFinished()) { return; } @@ -105,47 +105,6 @@ public class IncomingAsync extends IncomingBase } } - final private boolean - __servantLocatorFinished() - { - try - { - if(_locator != null && _servant != null) - { - try - { - _locator.finished(_current, _servant, _cookie.value); - } - catch(Ice.UserException ex) - { - // The operation may have already marshaled a reply; we must overwrite that reply. - // - if(_response) - { - _os.endWriteEncaps(); - _os.resize(Protocol.headerSize + 4, false); // Reply status position. - _os.writeByte(ReplyStatus.replyUserException); - _os.startWriteEncaps(); - _os.writeUserException(ex); - _os.endWriteEncaps(); - _connection.sendResponse(_os, _compress); - } - else - { - _connection.sendNoResponse(); - } - return false; - } - } - return true; - } - catch(java.lang.Exception ex) - { - __handleException(ex); - return false; - } - } - final protected boolean __validateResponse(boolean ok) { diff --git a/java/src/IceInternal/IncomingBase.java b/java/src/IceInternal/IncomingBase.java index 2a2c5a29145..c093284e35e 100644 --- a/java/src/IceInternal/IncomingBase.java +++ b/java/src/IceInternal/IncomingBase.java @@ -153,6 +153,42 @@ public class IncomingBase _os.instance().initializationData().logger.warning(sw.toString()); } + final protected boolean + __servantLocatorFinished() + { + assert(_locator != null && _servant != null); + try + { + _locator.finished(_current, _servant, _cookie.value); + return true; + } + catch(Ice.UserException ex) + { + // + // The operation may have already marshaled a reply; we must overwrite that reply. + // + if(_response) + { + _os.endWriteEncaps(); + _os.resize(Protocol.headerSize + 4, false); // Reply status position. + _os.writeByte(ReplyStatus.replyUserException); + _os.startWriteEncaps(); + _os.writeUserException(ex); + _os.endWriteEncaps(); + _connection.sendResponse(_os, _compress); + } + else + { + _connection.sendNoResponse(); + } + } + catch(java.lang.Exception ex) + { + __handleException(ex); + } + return false; + } + final protected void __handleException(java.lang.Exception exc) { |