Search code examples
apache-camelspring-camelcamel-http

Unable to convert exchange body to Custom Object


I am trying to covert jwt token to Object to get access token using spring DSL

 <to uri="ref:oauthTokenEndpoint" />
        <log message="Auth Token Response is ${body} " loggingLevel="INFO" />
        <choice>
            <when>
                <simple>${header.CamelHttpResponseCode} == '200'</simple>
                <to uri="bean:getResponseCode?method=processOAuthToken" />
                <to uri="direct:sendEventPostServiceCall" />
            </when>
            <otherwise>
              <log message="[POST] Error getting token response code is ${header.CamelHttpResponseCode} " loggingLevel="INFO" />
            </otherwise>
        </choice>

Here is the process code

    TokenResponse tokenResponse =   exchange.getIn().getBody(TokenResponse.class);
    logger.debug("exchange body Token Response "+tokenResponse);
    exchange.getOut().setHeader("jwt", tokenResponse.access_token );

Here is TokenResponse Class

    public class TokenResponse {


    String token_type;
    String expires_in;
    String ext_expires_in;
    String access_token;
    
    public String getToken_type() {
        return token_type;
    }
    public void setToken_type(String token_type) {
        this.token_type = token_type;
    }
    public String getExpires_in() {
        return expires_in;
    }
    public void setExpires_in(String expires_in) {
        this.expires_in = expires_in;
    }
    public String getExt_expires_in() {
        return ext_expires_in;
    }
    public void setExt_expires_in(String ext_expires_in) {
        this.ext_expires_in = ext_expires_in;
    }
    public String getAccess_token() {
        return access_token;
    }
    public void setAccess_token(String access_token) {
        this.access_token = access_token;
    }
 }

I am always getting null at the process method. do i need to setup any converter or Json ObjectMapper here.


Solution

  • I figure out , it was problem with logging before processing the token , once i removed following logging statement,

    i am able to receive token in the exchange.getIn().getBody...