use of org.apache.camel.component.cm.exceptions.cmresponse.CMResponseException 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;
}
}
Aggregations