* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights
* reserved.
+ * Modifications Copyright © 2018 IBM.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
private String uebServers;
private String defaultUebTemplateFileName = "/opt/bvc/restapi/templates/default-ueb-message.json";
+ private String responseReceivedMessage = "Response received. Time: {}";
+ private String responseHttpCodeMessage = "HTTP response code: {}";
+ private String requestPostingException = "Exception while posting http request to client ";
+ private static String skipSendingMessage = "skipSending";
+ private static String responsePrefix = "responsePrefix";
+ private static String restapiUrlString = "restapiUrl";
+
public RestapiCallNode() {
String configDir = System.getProperty(PROPERTIES_DIR_KEY, DEFAULT_PROPERTIES_DIR);
p.templateFileName = parseParam(paramMap, "templateFileName",
false, null);
p.requestBody = parseParam(paramMap, "requestBody", false, null);
- p.restapiUrl = parseParam(paramMap, "restapiUrl", true, null);
+ p.restapiUrl = parseParam(paramMap, restapiUrlString, true, null);
validateUrl(p.restapiUrl);
p.restapiUser = parseParam(paramMap, "restapiUser", false, null);
p.restapiPassword = parseParam(paramMap, "restapiPassword", false,
"unspecified"));
p.httpMethod = HttpMethod.fromString(parseParam(paramMap, "httpMethod",
false, "post"));
- p.responsePrefix = parseParam(paramMap, "responsePrefix", false, null);
+ p.responsePrefix = parseParam(paramMap, responsePrefix, false, null);
p.listNameList = getListNameList(paramMap);
- String skipSendingStr = paramMap.get("skipSending");
+ String skipSendingStr = paramMap.get(skipSendingMessage);
p.skipSending = "true".equalsIgnoreCase(skipSendingStr);
p.convertResponse = valueOf(parseParam(paramMap, "convertResponse",
false, "true"));
}
log.error("Error sending the request: " + e.getMessage(), e);
- String prefix = parseParam(paramMap, "responsePrefix", false, null);
- if (retryPolicy == null || shouldRetry == false) {
+ String prefix = parseParam(paramMap, responsePrefix, false, null);
+ if (retryPolicy == null || !shouldRetry) {
setFailureResponseStatus(ctx, prefix, e.getMessage(), r);
} else {
if (retryCount == null) {
try {
retryCount = retryCount + 1;
if (retryCount < retryPolicy.getMaximumRetries() + 1) {
- URI uri = new URI(paramMap.get("restapiUrl"));
+ URI uri = new URI(paramMap.get(restapiUrlString));
String hostname = uri.getHost();
String retryString = retryPolicy.getNextHostName(uri.toString());
URI uriTwo = new URI(retryString);
URI retryUri = UriBuilder.fromUri(uri).host(uriTwo.getHost()).port(uriTwo.getPort()).scheme(
uriTwo.getScheme()).build();
- paramMap.put("restapiUrl", retryUri.toString());
+ paramMap.put(restapiUrlString, retryUri.toString());
log.debug("URL was set to {}", retryUri.toString());
log.debug("Failed to communicate with host {}. Request will be re-attempted using the host {}.",
hostname, retryString);
throws SvcLogicException {
log.info("Building {} started", format);
long t1 = System.currentTimeMillis();
+ String originalTemplate = template;
template = expandRepeats(ctx, template, 1);
String var1 = template.substring(i1 + 2, i2);
String value1 = format == Format.XML ? XmlJsonUtil.getXml(mm, var1) : XmlJsonUtil.getJson(mm, var1);
- // log.info(" " + var1 + ": " + value1);
if (value1 == null || value1.trim().length() == 0) {
// delete the whole element (line)
int i3 = template.lastIndexOf('\n', i1);
}
String req = format == Format.XML
- ? XmlJsonUtil.removeEmptyStructXml(ss.toString()) : XmlJsonUtil.removeEmptyStructJson(ss.toString());
+ ? XmlJsonUtil.removeEmptyStructXml(ss.toString()) : XmlJsonUtil.removeEmptyStructJson(originalTemplate, ss.toString());
if (format == Format.JSON) {
req = XmlJsonUtil.removeLastCommaJson(req);
return addAuthType(c, p);
}
- protected Client addAuthType(Client client, Parameters p) throws SvcLogicException {
+ public Client addAuthType(Client client, Parameters p) throws SvcLogicException {
if (p.authtype == AuthType.Unspecified) {
if (p.restapiUser != null && p.restapiPassword != null) {
client.register(HttpAuthenticationFeature.basic(p.restapiUser, p.restapiPassword));
try {
response = invocationBuilder.method(p.httpMethod.toString(), entity(request, tt1));
} catch (ProcessingException | IllegalStateException e) {
- throw new SvcLogicException("Exception while posting http request to client " +
+ throw new SvcLogicException(requestPostingException +
e.getLocalizedMessage(), e);
}
}
long t2 = System.currentTimeMillis();
- log.info("Response received. Time: {}", (t2 - t1));
- log.info("HTTP response code: {}", r.code);
+ log.info(responseReceivedMessage, (t2 - t1));
+ log.info(responseHttpCodeMessage, r.code);
log.info("HTTP response message: {}", r.message);
logHeaders(r.headers);
log.info("HTTP response: {}", r.body);
r = new HttpResponse();
r.code = 500;
r.message = e.getMessage();
- String prefix = parseParam(paramMap, "responsePrefix", false, null);
+ String prefix = parseParam(paramMap, responsePrefix, false, null);
setResponseStatus(ctx, prefix, r);
}
p.user = parseParam(paramMap, "user", false, null);
p.password = parseParam(paramMap, "password", false, null);
p.httpMethod = HttpMethod.fromString(parseParam(paramMap, "httpMethod", false, "post"));
- p.responsePrefix = parseParam(paramMap, "responsePrefix", false, null);
- String skipSendingStr = paramMap.get("skipSending");
+ p.responsePrefix = parseParam(paramMap, responsePrefix, false, null);
+ String skipSendingStr = paramMap.get(skipSendingMessage);
p.skipSending = "true".equalsIgnoreCase(skipSendingStr);
p.oAuthConsumerKey = parseParam(paramMap, "oAuthConsumerKey", false, null);
p.oAuthVersion = parseParam(paramMap, "oAuthVersion", false, null);
r = new HttpResponse();
r.code = 500;
r.message = e.getMessage();
- String prefix = parseParam(paramMap, "responsePrefix", false, null);
+ String prefix = parseParam(paramMap, responsePrefix, false, null);
setResponseStatus(ctx, prefix, r);
}
throw new SvcLogicException("Http operation" + p.httpMethod + "not supported");
}
} catch (ProcessingException e) {
- throw new SvcLogicException("Exception while posting http request to client " +
+ throw new SvcLogicException(requestPostingException +
e.getLocalizedMessage(), e);
}
throw new SvcLogicException("Http operation" + p.httpMethod + "not supported");
}
} catch (ProcessingException e) {
- throw new SvcLogicException("Exception while posting http request to client " +
+ throw new SvcLogicException(requestPostingException +
e.getLocalizedMessage(), e);
}
}
long t2 = System.currentTimeMillis();
- log.info("Response received. Time: {}", (t2 - t1));
- log.info("HTTP response code: {}", r.code);
+ log.info(responseReceivedMessage, (t2 - t1));
+ log.info(responseHttpCodeMessage, r.code);
log.info("HTTP response message: {}", r.message);
logHeaders(r.headers);
log.info("HTTP response: {}", r.body);
p.topic = parseParam(paramMap, "topic", true, null);
p.templateFileName = parseParam(paramMap, "templateFileName", false, null);
p.rootVarName = parseParam(paramMap, "rootVarName", false, null);
- p.responsePrefix = parseParam(paramMap, "responsePrefix", false, null);
- String skipSendingStr = paramMap.get("skipSending");
+ p.responsePrefix = parseParam(paramMap, responsePrefix, false, null);
+ String skipSendingStr = paramMap.get(skipSendingMessage);
p.skipSending = "true".equalsIgnoreCase(skipSendingStr);
return p;
}
try {
response = invocationBuilder.post(Entity.entity(request, tt1));
} catch (ProcessingException e) {
- throw new SvcLogicException("Exception while posting http request to client " +
+ throw new SvcLogicException(requestPostingException +
e.getLocalizedMessage(), e);
}
r.code = response.getStatus();
}
long t2 = System.currentTimeMillis();
- log.info("Response received. Time: {}", (t2 - t1));
- log.info("HTTP response code: {}", r.code);
+ log.info(responseReceivedMessage, (t2 - t1));
+ log.info(responseHttpCodeMessage, r.code);
logHeaders(r.headers);
log.info("HTTP response:\n {}", r.body);