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

The following are Jave code examples for showing how to use writeSystemException() of the com.sun.corba.se.impl.orbutil.ORBUtility class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
Example 1
Project: OpenJSharp   File: CorbaMessageMediatorImpl.java   Source Code and License Vote up 4 votes
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
Project: openjdk-jdk10   File: CorbaMessageMediatorImpl.java   Source Code and License Vote up 4 votes
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;
}