Search in sources :

Example 1 with InsufficientBalanceException

use of org.apache.camel.component.cm.exceptions.cmresponse.InsufficientBalanceException in project camel by apache.

the class CMSenderOneMessageImpl method doHttpPost.

private void doHttpPost(final String urlString, final String requestString) {
    final HttpClient client = HttpClientBuilder.create().build();
    final HttpPost post = new HttpPost(urlString);
    post.setEntity(new StringEntity(requestString, Charset.forName("UTF-8")));
    try {
        final HttpResponse response = client.execute(post);
        final int statusCode = response.getStatusLine().getStatusCode();
        LOG.debug("Response Code : {}", statusCode);
        if (statusCode == 400) {
            throw new CMDirectException("CM Component and CM API show some kind of inconsistency. " + "CM is complaining about not using a post method for the request. And this component only uses POST requests. What happens?");
        }
        if (statusCode != 200) {
            throw new CMDirectException("CM Component and CM API show some kind of inconsistency. The component expects the status code to be 200 or 400. New api released? ");
        }
        // So we have 200 status code...
        // The response type is 'text/plain' and contains the actual
        // result of the request processing.
        // We obtaing the result text
        final BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        final StringBuffer result = new StringBuffer();
        String line = null;
        while ((line = rd.readLine()) != null) {
            result.append(line);
        }
        // ... and process it
        line = result.toString();
        if (!line.isEmpty()) {
            // Line is not empty = error
            LOG.debug("Result of the request processing: FAILED\n{}", line);
            if (line.contains(CMConstants.ERROR_UNKNOWN)) {
                throw new UnknownErrorException();
            } else if (line.contains(CMConstants.ERROR_NO_ACCOUNT)) {
                throw new NoAccountFoundForProductTokenException();
            } else if (line.contains(CMConstants.ERROR_INSUFICIENT_BALANCE)) {
                throw new InsufficientBalanceException();
            } else if (line.contains(CMConstants.ERROR_UNROUTABLE_MESSAGE)) {
                throw new UnroutableMessageException();
            } else if (line.contains(CMConstants.ERROR_INVALID_PRODUCT_TOKEN)) {
                throw new InvalidProductTokenException();
            } else {
                // responsibility
                throw new CMResponseException("CHECK ME. I am not expecting this. ");
            }
        }
        // Ok. Line is EMPTY - successfully submitted
        LOG.debug("Result of the request processing: Successfully submited");
    } catch (final IOException io) {
        throw new CMDirectException(io);
    } catch (Throwable t) {
        if (!(t instanceof CMDirectException)) {
            // Chain it
            t = new CMDirectException(t);
        }
        throw (CMDirectException) t;
    }
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) CMDirectException(org.apache.camel.component.cm.exceptions.CMDirectException) UnknownErrorException(org.apache.camel.component.cm.exceptions.cmresponse.UnknownErrorException) InputStreamReader(java.io.InputStreamReader) CMResponseException(org.apache.camel.component.cm.exceptions.cmresponse.CMResponseException) InsufficientBalanceException(org.apache.camel.component.cm.exceptions.cmresponse.InsufficientBalanceException) HttpResponse(org.apache.http.HttpResponse) IOException(java.io.IOException) StringEntity(org.apache.http.entity.StringEntity) UnroutableMessageException(org.apache.camel.component.cm.exceptions.cmresponse.UnroutableMessageException) InvalidProductTokenException(org.apache.camel.component.cm.exceptions.cmresponse.InvalidProductTokenException) HttpClient(org.apache.http.client.HttpClient) BufferedReader(java.io.BufferedReader) NoAccountFoundForProductTokenException(org.apache.camel.component.cm.exceptions.cmresponse.NoAccountFoundForProductTokenException)

Aggregations

BufferedReader (java.io.BufferedReader)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 CMDirectException (org.apache.camel.component.cm.exceptions.CMDirectException)1 CMResponseException (org.apache.camel.component.cm.exceptions.cmresponse.CMResponseException)1 InsufficientBalanceException (org.apache.camel.component.cm.exceptions.cmresponse.InsufficientBalanceException)1 InvalidProductTokenException (org.apache.camel.component.cm.exceptions.cmresponse.InvalidProductTokenException)1 NoAccountFoundForProductTokenException (org.apache.camel.component.cm.exceptions.cmresponse.NoAccountFoundForProductTokenException)1 UnknownErrorException (org.apache.camel.component.cm.exceptions.cmresponse.UnknownErrorException)1 UnroutableMessageException (org.apache.camel.component.cm.exceptions.cmresponse.UnroutableMessageException)1 HttpResponse (org.apache.http.HttpResponse)1 HttpClient (org.apache.http.client.HttpClient)1 HttpPost (org.apache.http.client.methods.HttpPost)1 StringEntity (org.apache.http.entity.StringEntity)1