aboutsummaryrefslogtreecommitdiffstats
path: root/datafile-app-server/src/main/java/org/onap/dcaegen2
diff options
context:
space:
mode:
authorelinuxhenrik <henrik.b.andersson@est.tech>2019-06-05 08:54:17 +0000
committerelinuxhenrik <henrik.b.andersson@est.tech>2019-06-05 08:54:17 +0000
commitaddf3f10dd0cc1d0797151633839c65276af8b1c (patch)
tree395552aa46082ccc7f22c0d7540731f7534d5ec9 /datafile-app-server/src/main/java/org/onap/dcaegen2
parent8cae76ef66f1928b3d5afb9a67bb330c5cd513c4 (diff)
Datafile - Improve JUnit tests
Improve JUnit tests for the Datafile Collector. Add tests of logging. Remove dependency to old JUnit version. Improve some log messages. Improve code coverage. Change-Id: Ie8204619ab7fe4294c4ac0dd8f030973653ef4a3 Issue-ID: DCAEGEN2-1490 Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
Diffstat (limited to 'datafile-app-server/src/main/java/org/onap/dcaegen2')
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/AppConfig.java12
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/CloudConfigParser.java8
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/ConsumerConfiguration.java3
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/SchedulerConfig.java5
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/Scheme.java8
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/SftpClient.java31
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java5
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParser.java36
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java21
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/FileCollector.java2
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/ScheduledTasks.java13
-rw-r--r--datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/web/PublishRedirectStrategy.java34
12 files changed, 88 insertions, 90 deletions
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/AppConfig.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/AppConfig.java
index d324ca99..b66be163 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/AppConfig.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/AppConfig.java
@@ -22,7 +22,6 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapterFactory;
-
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
@@ -32,10 +31,8 @@ import java.time.Duration;
import java.util.Map;
import java.util.Properties;
import java.util.ServiceLoader;
-
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
-
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
import org.onap.dcaegen2.collectors.datafile.model.logging.MappedDiagnosticContext;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.http.configuration.EnvProperties;
@@ -49,7 +46,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
-
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -174,11 +170,11 @@ public class AppConfig {
}
/**
- * parse configuration
+ * Parse configuration.
*
- * @param serviceConfigRootObject
- * @param dmaapConfigRootObject if there is no dmaapConfigRootObject, the dmaap feeds are taken
- * from the serviceConfigRootObject
+ * @param serviceConfigRootObject the DFC service's configuration
+ * @param dmaapConfigRootObject if there is no dmaapConfigRootObject, the dmaap feeds are taken from the
+ * serviceConfigRootObject
* @return this which is updated if successful
*/
private AppConfig parseCloudConfig(JsonObject serviceConfigRootObject, JsonObject dmaapConfigRootObject) {
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/CloudConfigParser.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/CloudConfigParser.java
index 3ac6b2c6..3103af49 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/CloudConfigParser.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/CloudConfigParser.java
@@ -21,13 +21,11 @@ package org.onap.dcaegen2.collectors.datafile.configuration;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
@@ -68,7 +66,8 @@ public class CloudConfigParser {
.passWord(getAsString(feedConfig, "password")) //
.userName(getAsString(feedConfig, "username")) //
.trustStorePath(getAsString(serviceConfigurationRoot, DMAAP_SECURITY_TRUST_STORE_PATH)) //
- .trustStorePasswordPath(getAsString(serviceConfigurationRoot, DMAAP_SECURITY_TRUST_STORE_PASS_PATH)) //
+ .trustStorePasswordPath(
+ getAsString(serviceConfigurationRoot, DMAAP_SECURITY_TRUST_STORE_PASS_PATH)) //
.keyStorePath(getAsString(serviceConfigurationRoot, DMAAP_SECURITY_KEY_STORE_PATH)) //
.keyStorePasswordPath(getAsString(serviceConfigurationRoot, DMAAP_SECURITY_KEY_STORE_PASS_PATH)) //
.enableDmaapCertAuth(
@@ -126,8 +125,7 @@ public class CloudConfigParser {
private JsonObject getFeedConfig(String feedName) throws DatafileTaskException {
JsonElement elem = dmaapConfigurationRoot.get(feedName);
if (elem == null) {
- elem = get(serviceConfigurationRoot, feedName); // Fallback, try to find it under
- // serviceConfigurationRoot
+ elem = get(serviceConfigurationRoot, feedName); // Fallback, try to find it under serviceConfigurationRoot
}
return elem.getAsJsonObject();
}
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/ConsumerConfiguration.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/ConsumerConfiguration.java
index fc9ab204..bd8f0c3c 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/ConsumerConfiguration.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/ConsumerConfiguration.java
@@ -18,7 +18,6 @@ package org.onap.dcaegen2.collectors.datafile.configuration;
import java.net.MalformedURLException;
import java.net.URL;
-
import org.immutables.gson.Gson;
import org.immutables.value.Value;
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
@@ -96,7 +95,7 @@ public abstract class ConsumerConfiguration {
throw new DatafileTaskException("The path has incorrect syntax: " + urlPath);
}
- final String dmaapTopicName = tokens[1] + "/" + tokens[2]; // ex. // /events/unauthenticated.VES_NOTIFICATION_OUTPUT
+ final String dmaapTopicName = tokens[1] + "/" + tokens[2]; // e.g. /events/unauthenticated.VES_NOTIFICATION_OUTPUT
final String consumerGroup = tokens[3]; // ex. OpenDcae-c12
final String consumerId = tokens[4]; // ex. C12
return new DmaapConsumerUrlPath(dmaapTopicName, consumerGroup, consumerId);
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/SchedulerConfig.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/SchedulerConfig.java
index 5835de1a..e0362373 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/SchedulerConfig.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/configuration/SchedulerConfig.java
@@ -16,6 +16,7 @@
package org.onap.dcaegen2.collectors.datafile.configuration;
+import io.swagger.annotations.ApiOperation;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
@@ -23,9 +24,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
-
import javax.annotation.PostConstruct;
-
import org.onap.dcaegen2.collectors.datafile.model.logging.MappedDiagnosticContext;
import org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks;
import org.slf4j.Logger;
@@ -37,8 +36,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
-
-import io.swagger.annotations.ApiOperation;
import reactor.core.publisher.Mono;
/**
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/Scheme.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/Scheme.java
index b98885b3..585dd775 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/Scheme.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/Scheme.java
@@ -29,6 +29,10 @@ import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
public enum Scheme {
FTPS, SFTP;
+ public static final String DFC_DOES_NOT_SUPPORT_PROTOCOL_ERROR_MSG = "DFC does not support protocol ";
+ public static final String SUPPORTED_PROTOCOLS_ERROR_MESSAGE =
+ ". Supported protocols are FTPES, FTPS, and SFTP";
+
/**
* Get a <code>Scheme</code> from a string.
*
@@ -43,8 +47,8 @@ public enum Scheme {
} else if ("SFTP".equalsIgnoreCase(schemeString)) {
result = Scheme.SFTP;
} else {
- throw new DatafileTaskException(
- "DFC does not support protocol " + schemeString + ". Supported protocols are FTPES , FTPS, and SFTP");
+ throw new DatafileTaskException(DFC_DOES_NOT_SUPPORT_PROTOCOL_ERROR_MSG + schemeString
+ + SUPPORTED_PROTOCOLS_ERROR_MESSAGE);
}
return result;
}
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/SftpClient.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/SftpClient.java
index bdaf6d4c..ec523354 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/SftpClient.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/SftpClient.java
@@ -22,10 +22,8 @@ import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
-
import java.nio.file.Path;
import java.util.Optional;
-
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,11 +37,11 @@ import org.slf4j.LoggerFactory;
public class SftpClient implements FileCollectClient {
private static final Logger logger = LoggerFactory.getLogger(SftpClient.class);
- private static final int FTPS_DEFAULT_PORT = 22;
+ private static final int SFTP_DEFAULT_PORT = 22;
private final FileServerData fileServerData;
- private Session session = null;
- private ChannelSftp sftpChannel = null;
+ protected Session session = null;
+ protected ChannelSftp sftpChannel = null;
public SftpClient(FileServerData fileServerData) {
this.fileServerData = fileServerData;
@@ -57,7 +55,8 @@ public class SftpClient implements FileCollectClient {
sftpChannel.get(remoteFile, localFile.toString());
logger.trace("File {} Download Successfull from xNF", localFile.getFileName());
} catch (SftpException e) {
- boolean retry = e.id != ChannelSftp.SSH_FX_NO_SUCH_FILE && e.id != ChannelSftp.SSH_FX_PERMISSION_DENIED && e.id != ChannelSftp.SSH_FX_OP_UNSUPPORTED;
+ boolean retry = e.id != ChannelSftp.SSH_FX_NO_SUCH_FILE && e.id != ChannelSftp.SSH_FX_PERMISSION_DENIED
+ && e.id != ChannelSftp.SSH_FX_OP_UNSUPPORTED;
throw new DatafileTaskException("Unable to get file from xNF. Data: " + fileServerData, e, retry);
}
@@ -86,28 +85,32 @@ public class SftpClient implements FileCollectClient {
}
} catch (JSchException e) {
boolean retry = !e.getMessage().contains("Auth fail");
- throw new DatafileTaskException("Could not open Sftp client" + e, e, retry);
+ throw new DatafileTaskException("Could not open Sftp client. " + e, e, retry);
}
}
- private static int getPort(Optional<Integer> port) {
- return port.isPresent() ? port.get() : FTPS_DEFAULT_PORT;
+ private int getPort(Optional<Integer> port) {
+ return port.isPresent() ? port.get() : SFTP_DEFAULT_PORT;
}
- private static Session setUpSession(FileServerData fileServerData) throws JSchException {
- JSch jsch = new JSch();
+ private Session setUpSession(FileServerData fileServerData) throws JSchException {
+ JSch jsch = createJsch();
- Session newSession =
- jsch.getSession(fileServerData.userId(), fileServerData.serverAddress(), getPort(fileServerData.port()));
+ Session newSession = jsch.getSession(fileServerData.userId(), fileServerData.serverAddress(),
+ getPort(fileServerData.port()));
newSession.setConfig("StrictHostKeyChecking", "no");
newSession.setPassword(fileServerData.password());
newSession.connect();
return newSession;
}
- private static ChannelSftp getChannel(Session session) throws JSchException {
+ private ChannelSftp getChannel(Session session) throws JSchException {
Channel channel = session.openChannel("sftp");
channel.connect();
return (ChannelSftp) channel;
}
+
+ protected JSch createJsch() {
+ return new JSch();
+ }
}
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java
index b8df125b..efd69a09 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java
@@ -23,7 +23,6 @@ import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-
import java.util.Set;
/**
@@ -31,13 +30,13 @@ import java.util.Set;
*/
public abstract class JsonSerializer {
- private JsonSerializer() {}
-
private static Gson gson = new GsonBuilder() //
.serializeNulls() //
.addSerializationExclusionStrategy(new FilePublishInformationExclusionStrategy()) //
.create(); //
+ private JsonSerializer() {}
+
/**
* Serializes a <code>filePublishInformation</code>.
*
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParser.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParser.java
index 470c4e73..5e02ecdd 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParser.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParser.java
@@ -22,13 +22,11 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.StreamSupport;
-
import org.onap.dcaegen2.collectors.datafile.ftp.Scheme;
import org.onap.dcaegen2.collectors.datafile.model.FileData;
import org.onap.dcaegen2.collectors.datafile.model.FileReadyMessage;
@@ -39,7 +37,6 @@ import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
-
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -51,6 +48,8 @@ import reactor.core.publisher.Mono;
public class JsonMessageParser {
private static final Logger logger = LoggerFactory.getLogger(JsonMessageParser.class);
+ public static final String ERROR_MSG_VES_EVENT_PARSING = "VES event parsing. ";
+
private static final String COMMON_EVENT_HEADER = "commonEventHeader";
private static final String EVENT_NAME = "eventName";
private static final String LAST_EPOCH_MICROSEC = "lastEpochMicrosec";
@@ -152,10 +151,10 @@ public class JsonMessageParser {
}
}
- logger.error("VES event parsing. Missing arrayOfNamedHashMap in message. {}", message);
+ logger.error(ERROR_MSG_VES_EVENT_PARSING + "Missing arrayOfNamedHashMap in message. {}", message);
return Mono.empty();
}
- logger.error("VES event parsing. FileReady event has incorrect JsonObject. {}", message);
+ logger.error(ERROR_MSG_VES_EVENT_PARSING + "FileReady event has incorrect JsonObject. {}", message);
return Mono.empty();
}
@@ -186,12 +185,12 @@ public class JsonMessageParser {
if (missingValues.isEmpty() && isChangeTypeCorrect(changeType)) {
return Optional.of(messageMetaData);
} else {
- String errorMessage = "VES event parsing.";
+ String errorMessage = ERROR_MSG_VES_EVENT_PARSING;
if (!missingValues.isEmpty()) {
- errorMessage += " Missing data: " + missingValues;
+ errorMessage += "Missing data: " + missingValues + ".";
}
if (!isChangeTypeCorrect(changeType)) {
- errorMessage += " Change type is wrong: " + changeType + " expected: " + FILE_READY_CHANGE_TYPE;
+ errorMessage += " Change type is wrong: " + changeType + " Expected: " + FILE_READY_CHANGE_TYPE;
}
errorMessage += " Message: {}";
logger.error(errorMessage, message);
@@ -224,11 +223,17 @@ public class JsonMessageParser {
JsonObject data = fileInfo.getAsJsonObject(HASH_MAP);
String location = getValueFromJson(data, LOCATION, missingValues);
+ if (StringUtils.isEmpty(location)) {
+ logger.error(ERROR_MSG_VES_EVENT_PARSING + "File information wrong. Missing location. Data: {} {}",
+ messageMetaData, fileInfo);
+ return Optional.empty();
+ }
Scheme scheme;
try {
scheme = Scheme.getSchemeFromString(URI.create(location).getScheme());
} catch (Exception e) {
- logger.error("VES event parsing.", e);
+ logger.error(ERROR_MSG_VES_EVENT_PARSING + "{}. Location: {} Data: {}", e.getMessage(), location,
+ messageMetaData, e);
return Optional.empty();
}
FileData fileData = ImmutableFileData.builder() //
@@ -243,14 +248,14 @@ public class JsonMessageParser {
if (missingValues.isEmpty()) {
return Optional.of(fileData);
}
- logger.error("VES event parsing. File information wrong. Missing data: {} Data: {}", missingValues, fileInfo);
+ logger.error(ERROR_MSG_VES_EVENT_PARSING + "File information wrong. Missing data: {} Data: {}", missingValues,
+ fileInfo);
return Optional.empty();
}
/**
- * Gets data from the event name. Defined as:
- * {DomainAbbreviation}_{productName}-{vendorName}_{Description}, example:
- * Noti_RnNode-Ericsson_FileReady
+ * Gets data from the event name. Defined as: {DomainAbbreviation}_{productName}-{vendorName}_{Description},
+ * example: Noti_RnNode-Ericsson_FileReady
*
* @param dataType The type of data to get, {@link DmaapConsumerJsonParser.EventNameDataType}.
* @param eventName The event name to get the data from.
@@ -264,7 +269,10 @@ public class JsonMessageParser {
return eventArray[dataType.index];
} else {
missingValues.add(dataType.toString());
- logger.error("Can not get {} from eventName, eventName is not in correct format: {}", dataType, eventName);
+ logger.error(
+ ERROR_MSG_VES_EVENT_PARSING
+ + "Can not get {} from eventName, eventName is not in correct format: {}",
+ dataType, eventName);
}
return "";
}
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java
index 1d6baa65..d9efe802 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java
@@ -22,14 +22,12 @@ package org.onap.dcaegen2.collectors.datafile.tasks;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
-
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.nio.file.Path;
import java.time.Duration;
-
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPut;
@@ -50,7 +48,6 @@ import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.web.util.DefaultUriBuilderFactory;
-
import reactor.core.publisher.Mono;
/**
@@ -103,7 +100,7 @@ public class DataRouterPublisher {
logger.trace("{}", response);
return Mono.just(HttpStatus.valueOf(response.getStatusLine().getStatusCode()));
} catch (Exception e) {
- logger.warn("Unable to send file to DataRouter. Data: {}", publishInfo.getInternalLocation(), e);
+ logger.warn("Publishing file {} to DR unsuccessful.", publishInfo.getName(), e);
return Mono.error(e);
}
}
@@ -115,9 +112,9 @@ public class DataRouterPublisher {
put.addHeader(X_DMAAP_DR_META, metaData.toString());
URI uri = new DefaultUriBuilderFactory(
datafileAppConfig.getPublisherConfiguration(publishInfo.getChangeIdentifier()).publishUrl()) //
- .builder() //
- .pathSegment(publishInfo.getName()) //
- .build();
+ .builder() //
+ .pathSegment(publishInfo.getName()) //
+ .build();
put.setURI(uri);
MappedDiagnosticContext.appendTraceInfo(put);
@@ -130,14 +127,16 @@ public class DataRouterPublisher {
}
}
- private static Mono<FilePublishInformation> handleHttpResponse(HttpStatus response, FilePublishInformation publishInfo) {
+ private static Mono<FilePublishInformation> handleHttpResponse(HttpStatus response,
+ FilePublishInformation publishInfo) {
MDC.setContextMap(publishInfo.getContext());
if (HttpUtils.isSuccessfulResponseCode(response.value())) {
- logger.trace("Publish to DR successful!");
+ logger.trace("Publishing file {} to DR successful!", publishInfo.getName());
return Mono.just(publishInfo);
} else {
- logger.warn("Publish to DR unsuccessful, response code: {}", response);
- return Mono.error(new Exception("Publish to DR unsuccessful, response code: " + response));
+ logger.warn("Publishing file {} to DR unsuccessful. Response code: {}", publishInfo.getName(), response);
+ return Mono.error(new Exception(
+ "Publishing file " + publishInfo.getName() + " to DR unsuccessful. Response code: " + response));
}
}
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/FileCollector.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/FileCollector.java
index 6ddcb541..aeacaffc 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/FileCollector.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/FileCollector.java
@@ -21,7 +21,6 @@ import java.nio.file.Paths;
import java.time.Duration;
import java.util.Map;
import java.util.Optional;
-
import org.onap.dcaegen2.collectors.datafile.configuration.AppConfig;
import org.onap.dcaegen2.collectors.datafile.configuration.FtpesConfig;
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
@@ -35,7 +34,6 @@ import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
-
import reactor.core.publisher.Mono;
/**
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/ScheduledTasks.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/ScheduledTasks.java
index 0f220fde..99b2d918 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/ScheduledTasks.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/ScheduledTasks.java
@@ -22,7 +22,6 @@ import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
-
import org.onap.dcaegen2.collectors.datafile.configuration.AppConfig;
import org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException;
import org.onap.dcaegen2.collectors.datafile.model.FileData;
@@ -35,7 +34,6 @@ import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Scheduler;
@@ -43,8 +41,8 @@ import reactor.core.scheduler.Schedulers;
/**
- * This implements the main flow of the data file collector. Fetch file ready events from the
- * message router, fetch new files from the PNF publish these in the data router.
+ * This implements the main flow of the data file collector. Fetch file ready events from the message router, fetch new
+ * files from the PNF publish these in the data router.
*/
@Component
public class ScheduledTasks {
@@ -82,7 +80,8 @@ public class ScheduledTasks {
try {
if (getCurrentNumberOfTasks() > MAX_TASKS_FOR_POLLING || this.threadPoolQueueSize.get() > 0) {
logger.info(
- "Skipping consuming new files; current number of tasks: {}, number of subscriptions: {}, published files: {}, number of queued VES events: {}",
+ "Skipping consuming new files; current number of tasks: {}, number of subscriptions: {}, "
+ + "published files: {}, number of queued VES events: {}",
getCurrentNumberOfTasks(), this.currentNumberOfSubscriptions.get(), publishedFilesCache.size(),
threadPoolQueueSize.get());
return;
@@ -106,7 +105,7 @@ public class ScheduledTasks {
currentNumberOfSubscriptions.decrementAndGet();
});
} catch (Exception e) {
- logger.error("Unexpected exception: ", e);
+ logger.error("Unexpected exception: {}", e.toString(), e);
}
}
@@ -264,7 +263,7 @@ public class ScheduledTasks {
/**
* Fetch more messages from the message router. This is done in a polling/blocking fashion.
*/
- private Flux<FileReadyMessage> fetchMoreFileReadyMessages() {
+ Flux<FileReadyMessage> fetchMoreFileReadyMessages() {
logger.info(
"Consuming new file ready messages, current number of tasks: {}, published files: {}, "
+ "number of subscriptions: {}",
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/web/PublishRedirectStrategy.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/web/PublishRedirectStrategy.java
index 3ceec627..9dcf133a 100644
--- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/web/PublishRedirectStrategy.java
+++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/web/PublishRedirectStrategy.java
@@ -1,6 +1,6 @@
-/*
+/*-
* ============LICENSE_START======================================================================
- * Copyright (C) 2018 NOKIA Intellectual Property, 2018 Nordix Foundation. All rights reserved.
+ * Copyright (C) 2018 NOKIA Intellectual Property, 2018-2019 Nordix Foundation. All rights reserved.
* ===============================================================================================
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -37,10 +37,8 @@ import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
/**
- * PublishRedirectStrategy implementation
- * that automatically redirects all HEAD, GET, POST, PUT, and DELETE requests.
- * This strategy relaxes restrictions on automatic redirection of
- * POST methods imposed by the HTTP specification.
+ * PublishRedirectStrategy implementation that automatically redirects all HEAD, GET, POST, PUT, and DELETE requests.
+ * This strategy relaxes restrictions on automatic redirection of POST methods imposed by the HTTP specification.
*
*/
@Contract(threading = ThreadingBehavior.IMMUTABLE)
@@ -50,6 +48,17 @@ public class PublishRedirectStrategy extends DefaultRedirectStrategy {
private final Map<String, String> contextMap;
/**
+ * Redirectable methods.
+ */
+ private static final String[] REDIRECT_METHODS = new String[] { //
+ HttpPut.METHOD_NAME, //
+ HttpGet.METHOD_NAME, //
+ HttpPost.METHOD_NAME, //
+ HttpHead.METHOD_NAME, //
+ HttpDelete.METHOD_NAME //
+ };
+
+ /**
* Constructor PublishRedirectStrategy.
*
* @param contextMap - MDC context map
@@ -58,17 +67,6 @@ public class PublishRedirectStrategy extends DefaultRedirectStrategy {
this.contextMap = contextMap;
}
- /**
- * Redirectable methods.
- */
- private static final String[] REDIRECT_METHODS = new String[] { //
- HttpPut.METHOD_NAME, //
- HttpGet.METHOD_NAME, //
- HttpPost.METHOD_NAME, //
- HttpHead.METHOD_NAME, //
- HttpDelete.METHOD_NAME //
- };
-
@Override
protected boolean isRedirectable(final String method) {
for (final String m : REDIRECT_METHODS) {
@@ -81,7 +79,7 @@ public class PublishRedirectStrategy extends DefaultRedirectStrategy {
@Override
public HttpUriRequest getRedirect(final HttpRequest request, final HttpResponse response, final HttpContext context)
- throws ProtocolException {
+ throws ProtocolException {
MDC.setContextMap(contextMap);
final URI uri = getLocationURI(request, response, context);
logger.trace("getRedirect...: {}", request);