Search in sources :

Example 1 with OnSuccess

use of org.mule.runtime.extension.api.annotation.execution.OnSuccess in project mule-coap-connector by teslanet-nl.

the class Listener method onSuccess.

@OnSuccess
@MediaType(value = "*/*", strict = false)
public void onSuccess(@Optional @NullSafe @Alias("response") @Placement(tab = "Response", order = 1) ResponseParams response, @Optional @NullSafe @Alias("response-options") @Expression(ExpressionSupport.SUPPORTED) @Summary("The CoAP options to send with the response.") @Placement(tab = "Response", order = 2) ResponseOptions responseOptions, SourceCallbackContext callbackContext) throws InternalInvalidByteArrayValueException, InternalInvalidResponseCodeException, IOException, InvalidETagException, InternalInvalidOptionValueException {
    CoAPResponseCode defaultCoapResponseCode = (CoAPResponseCode) callbackContext.getVariable("defaultCoAPResponseCode").get();
    Response coapResponse = new Response(AttributeUtils.toResponseCode(response.getResponseCode(), defaultCoapResponseCode));
    // TODO give user control
    TypedValue<Object> responsePayload = response.getResponsePayload();
    coapResponse.getOptions().setContentFormat(MediaTypeMediator.toContentFormat(responsePayload.getDataType().getMediaType()));
    if (responseOptions != null) {
        MessageUtils.copyOptions(responseOptions, coapResponse.getOptions(), transformationService);
    }
    // TODO add streaming & blockwise cooperation
    try {
        coapResponse.setPayload(MessageUtils.toBytes(responsePayload, transformationService));
    } catch (Exception e) {
        throw new InternalInvalidByteArrayValueException("Cannot convert payload to byte[]", e);
    }
    ((CoapExchange) callbackContext.getVariable("CoapExchange").get()).respond(coapResponse);
}
Also used : Response(org.eclipse.californium.core.coap.Response) EmitsResponse(org.mule.runtime.extension.api.annotation.source.EmitsResponse) InternalInvalidByteArrayValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException) CoAPResponseCode(nl.teslanet.mule.connectors.coap.api.CoAPResponseCode) InvalidETagException(nl.teslanet.mule.connectors.coap.api.error.InvalidETagException) InternalInvalidOptionValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidOptionValueException) MuleException(org.mule.runtime.api.exception.MuleException) InternalInvalidResponseCodeException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException) InternalResourceUriException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResourceUriException) IOException(java.io.IOException) InternalInvalidByteArrayValueException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException) DefaultMuleException(org.mule.runtime.api.exception.DefaultMuleException) InternalUriPatternException(nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriPatternException) CoapExchange(org.eclipse.californium.core.server.resources.CoapExchange) OnSuccess(org.mule.runtime.extension.api.annotation.execution.OnSuccess) MediaType(org.mule.runtime.extension.api.annotation.param.MediaType)

Example 2 with OnSuccess

use of org.mule.runtime.extension.api.annotation.execution.OnSuccess in project mule-http-connector by mulesoft.

the class HttpListener method onSuccess.

// TODO: MULE-10900 figure out a way to have a shared group between callbacks and possibly regular params
@OnSuccess
public void onSuccess(@ParameterGroup(name = RESPONSE, showInDsl = true) HttpListenerSuccessResponseBuilder response, SourceCallbackContext callbackContext, SourceCompletionCallback completionCallback) throws Exception {
    HttpResponseContext context = callbackContext.<HttpResponseContext>getVariable(RESPONSE_CONTEXT).orElseThrow(() -> new MuleRuntimeException(createStaticMessage(RESPONSE_CONTEXT_NOT_FOUND)));
    responseSender.sendResponse(context, response, completionCallback);
}
Also used : MuleRuntimeException(org.mule.runtime.api.exception.MuleRuntimeException) OnSuccess(org.mule.runtime.extension.api.annotation.execution.OnSuccess)

Aggregations

OnSuccess (org.mule.runtime.extension.api.annotation.execution.OnSuccess)2 IOException (java.io.IOException)1 CoAPResponseCode (nl.teslanet.mule.connectors.coap.api.CoAPResponseCode)1 InvalidETagException (nl.teslanet.mule.connectors.coap.api.error.InvalidETagException)1 InternalInvalidByteArrayValueException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidByteArrayValueException)1 InternalInvalidOptionValueException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidOptionValueException)1 InternalInvalidResponseCodeException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalInvalidResponseCodeException)1 InternalResourceUriException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalResourceUriException)1 InternalUriPatternException (nl.teslanet.mule.connectors.coap.internal.exceptions.InternalUriPatternException)1 Response (org.eclipse.californium.core.coap.Response)1 CoapExchange (org.eclipse.californium.core.server.resources.CoapExchange)1 DefaultMuleException (org.mule.runtime.api.exception.DefaultMuleException)1 MuleException (org.mule.runtime.api.exception.MuleException)1 MuleRuntimeException (org.mule.runtime.api.exception.MuleRuntimeException)1 MediaType (org.mule.runtime.extension.api.annotation.param.MediaType)1 EmitsResponse (org.mule.runtime.extension.api.annotation.source.EmitsResponse)1