Java Code Examples for com.sun.corba.se.impl.orbutil.ORBUtility#writeSystemException()

The following examples show how to use com.sun.corba.se.impl.orbutil.ORBUtility#writeSystemException() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CorbaMessageMediatorImpl.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 2
Source File: CorbaMessageMediatorImpl.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 3
Source File: CorbaMessageMediatorImpl.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 4
Source File: CorbaMessageMediatorImpl.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 5
Source File: CorbaMessageMediatorImpl.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 6
Source File: CorbaMessageMediatorImpl.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 7
Source File: CorbaMessageMediatorImpl.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 8
Source File: CorbaMessageMediatorImpl.java    From hottub with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 9
Source File: CorbaMessageMediatorImpl.java    From openjdk-8-source with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}
 
Example 10
Source File: CorbaMessageMediatorImpl.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
public CorbaMessageMediator createSystemExceptionResponse(
    CorbaMessageMediator messageMediator,
    SystemException ex,
    ServiceContexts svc)
{
    if (messageMediator.getConnection() != null) {
        // It is possible that fragments of response have already been
        // sent.  Then an error may occur (e.g. marshaling error like
        // non serializable object).  In that case it is too late
        // to send the exception.  We just return the existing fragmented
        // stream here.  This will cause an incomplete last fragment
        // to be sent.  Then the other side will get a marshaling error
        // when attempting to unmarshal.

        // REVISIT: Impl - make interface method to do the following.
        CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl)
            ((CorbaConnection)messageMediator.getConnection())
            .serverRequestMapGet(messageMediator.getRequestId());

        OutputObject existingOutputObject = null;
        if (mediator != null) {
            existingOutputObject = mediator.getOutputObject();
        }

        // REVISIT: need to think about messageMediator containing correct
        // pointer to output object.
        if (existingOutputObject != null &&
            mediator.sentFragment() &&
            ! mediator.sentFullMessage())
        {
            return mediator;
        }
    }

    // Only do this if interceptors have been initialized on this request
    // and have not completed their lifecycle (otherwise the info stack
    // may be empty or have a different request's entry on top).
    if (messageMediator.executePIInResponseConstructor()) {
        // REVISIT: not necessary in framework now?
        // Inform Portable Interceptors of the SystemException.  This is
        // required to be done here because the ending interception point
        // is called in the when creating the response below
        // but we do not currently write the SystemException into the
        // response until after the ending point is called.
        ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex );
    }

    if (((ORB)messageMediator.getBroker()).subcontractDebugFlag &&
        ex != null)
    {
        dprint(".createSystemExceptionResponse: "
               + opAndId(messageMediator),
               ex);
    }

    ServiceContexts serviceContexts =
        getServiceContextsForReply(messageMediator, svc);

    // NOTE: We MUST add the service context before creating
    // the response since service contexts are written to the
    // stream when the response object is created.

    addExceptionDetailMessage(messageMediator, ex, serviceContexts);

    CorbaMessageMediator response =
        createResponseHelper(messageMediator, serviceContexts, false);

    // NOTE: From here on, it is too late to add more service contexts.
    // They have already been serialized to the stream (and maybe fragments
    // sent).

    ORBUtility.writeSystemException(
        ex, (OutputStream)response.getOutputObject());

    return response;
}