import org.onap.dcaegen2.services.config.AAIHttpClientConfiguration;
import org.onap.dcaegen2.services.config.DmaapConsumerConfiguration;
-import org.onap.dcaegen2.services.config.DmaapProducerConfiguration;
+import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/9/18
AAIHttpClientConfiguration getAAIHttpClientConfiguration();
- DmaapProducerConfiguration getDmaapProducerConfiguration();
+ DmaapPublisherConfiguration getDmaapPublisherConfiguration();
}
import javax.validation.constraints.NotEmpty;
import org.onap.dcaegen2.services.config.AAIHttpClientConfiguration;
import org.onap.dcaegen2.services.config.DmaapConsumerConfiguration;
-import org.onap.dcaegen2.services.config.DmaapProducerConfiguration;
+import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
import org.onap.dcaegen2.services.config.ImmutableAAIHttpClientConfiguration;
import org.onap.dcaegen2.services.config.ImmutableDmaapConsumerConfiguration;
-import org.onap.dcaegen2.services.config.ImmutableDmaapProducerConfiguration;
+import org.onap.dcaegen2.services.config.ImmutableDmaapPublisherConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
private static final Logger logger = LoggerFactory.getLogger(PrhAppConfig.class);
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
- private ImmutableAAIHttpClientConfiguration immutableAAIHttpClientConfiguration;
+ private AAIHttpClientConfiguration aaiHttpClientConfiguration;
- private ImmutableDmaapConsumerConfiguration immutableDmaapConsumerConfiguration;
+ private DmaapConsumerConfiguration dmaapConsumerConfiguration;
- private ImmutableDmaapProducerConfiguration immutableDmaapProducerConfiguration;
+ private DmaapPublisherConfiguration dmaapPublisherConfiguration;
@NotEmpty
private String filepath;
try (InputStream inputStream = getInputStream(filepath)) {
ObjectNode root = (ObjectNode) jsonObjectMapper.readTree(inputStream);
jsonNode = Optional.ofNullable(root.get(CONFIG).get(AAI).get(AAI_CONFIG)).orElse(NullNode.getInstance());
- immutableAAIHttpClientConfiguration = jsonObjectMapper
+ aaiHttpClientConfiguration = jsonObjectMapper
.treeToValue(jsonNode, ImmutableAAIHttpClientConfiguration.class);
jsonNode = Optional.ofNullable(root.get(CONFIG).get(DMAAP).get(DMAAP_CONSUMER))
.orElse(NullNode.getInstance());
- immutableDmaapConsumerConfiguration = jsonObjectMapper
+ dmaapConsumerConfiguration = jsonObjectMapper
.treeToValue(jsonNode, ImmutableDmaapConsumerConfiguration.class);
jsonNode = Optional.ofNullable(root.get(CONFIG).get(DMAAP).get(DMAAP_PRODUCER))
.orElse(NullNode.getInstance());
- immutableDmaapProducerConfiguration = jsonObjectMapper
- .treeToValue(jsonNode, ImmutableDmaapProducerConfiguration.class);
+ dmaapPublisherConfiguration = jsonObjectMapper
+ .treeToValue(jsonNode, ImmutableDmaapPublisherConfiguration.class);
} catch (FileNotFoundException e) {
logger
.error(
@Override
public DmaapConsumerConfiguration getDmaapConsumerConfiguration() {
- return immutableDmaapConsumerConfiguration;
+ return dmaapConsumerConfiguration;
}
@Override
public AAIHttpClientConfiguration getAAIHttpClientConfiguration() {
- return immutableAAIHttpClientConfiguration;
+ return aaiHttpClientConfiguration;
}
@Override
- public DmaapProducerConfiguration getDmaapProducerConfiguration() {
- return immutableDmaapProducerConfiguration;
+ public DmaapPublisherConfiguration getDmaapPublisherConfiguration() {
+ return dmaapPublisherConfiguration;
}
}
\ No newline at end of file
*/
public class PrhTaskException extends Exception {
- public PrhTaskException(String message) {
+ PrhTaskException(String message) {
super(message);
}
}
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
-public abstract class AAIPublisherTask implements Task {
+public abstract class AAIPublisherTask<T> extends Task {
protected abstract void publish() throws AAINotFoundException;
+
+ protected abstract T resolveConfiguration();
}
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import org.onap.dcaegen2.services.config.AAIHttpClientConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
+import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
@Component
-public class AAIPublisherTaskImpl extends AAIPublisherTask {
+public class AAIPublisherTaskImpl extends AAIPublisherTask<AAIHttpClientConfiguration> {
private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+ private final AppConfig prhAppConfig;
+
@Autowired
- public AppConfig prhAppConfig;
+ public AAIPublisherTaskImpl(AppConfig prhAppConfig) {
+ this.prhAppConfig = prhAppConfig;
+
+ }
@Override
- protected void publish() {
+ protected void publish() throws AAINotFoundException {
logger.debug("Start task DmaapConsumerTask::publish() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
-
logger.debug("End task DmaapConsumerTask::publish() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
+
}
@Override
- public void execute() {
+ public ResponseEntity execute(Object object) throws AAINotFoundException {
logger.debug("Start task AAIPublisherTaskImpl::execute() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
-
+ publish();
logger.debug("End task AAIPublisherTaskImpl::execute() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
+ return null;
+ }
+ @Override
+ protected AAIHttpClientConfiguration resolveConfiguration() {
+ return prhAppConfig.getAAIHttpClientConfiguration();
}
+
}
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
-public abstract class DmaapConsumerTask implements Task {
+public abstract class DmaapConsumerTask<T> extends Task {
protected abstract void consume() throws DmaapNotFoundException;
+
+ protected abstract T resolveConfiguration();
}
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import org.onap.dcaegen2.services.config.DmaapConsumerConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
*/
@Component
-public class DmaapConsumerTaskImpl extends DmaapConsumerTask {
+public class DmaapConsumerTaskImpl extends DmaapConsumerTask<DmaapConsumerConfiguration> {
private static final Logger logger = LoggerFactory.getLogger(DmaapConsumerTaskImpl.class);
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+ private final AppConfig prhAppConfig;
+
@Autowired
- public AppConfig prhAppConfig;
+ public DmaapConsumerTaskImpl(AppConfig prhAppConfig) {
+ this.prhAppConfig = prhAppConfig;
+ }
@Override
- public void execute() {
- logger.debug("Start task DmaapConsumerTask::execute() :: Execution Time - {}", dateTimeFormatter.format(
+ protected void consume() {
+ logger.debug("Start task DmaapConsumerTask::consume() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
- logger.debug("End task DmaapConsumerTask::execute() :: Execution Time - {}",
+ logger.debug("End task DmaapConsumerTask::consume() :: Execution Time - {}",
dateTimeFormatter.format(LocalDateTime.now()));
+
}
@Override
- protected void consume() {
- logger.debug("Start task DmaapConsumerTask::consume() :: Execution Time - {}", dateTimeFormatter.format(
+ public ResponseEntity execute(Object object) {
+ logger.debug("Start task DmaapConsumerTask::execute() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
-
- logger.debug("End task DmaapConsumerTask::consume() :: Execution Time - {}",
+ consume();
+ logger.debug("End task DmaapConsumerTask::execute() :: Execution Time - {}",
dateTimeFormatter.format(LocalDateTime.now()));
+ return null;
+ }
+ @Override
+ protected DmaapConsumerConfiguration resolveConfiguration() {
+ return prhAppConfig.getDmaapConsumerConfiguration();
}
}
\ No newline at end of file
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
*/
-public abstract class DmaapPublisherTask implements Task {
+public abstract class DmaapPublisherTask<T> extends Task {
protected abstract void publish() throws DmaapNotFoundException;
+ protected abstract T resolveConfiguration();
+
}
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
@Component
-public class DmaapPublisherTaskImpl extends DmaapPublisherTask {
+public class DmaapPublisherTaskImpl extends DmaapPublisherTask<DmaapPublisherConfiguration> {
private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+ private final AppConfig prhAppConfig;
+
@Autowired
- public AppConfig prhAppConfig;
+ public DmaapPublisherTaskImpl(AppConfig prhAppConfig) {
+ this.prhAppConfig = prhAppConfig;
+ }
@Override
- public void execute() {
- logger.debug("Start task DmaapPublisherTask::consume() :: Execution Time - {}", dateTimeFormatter.format(
+ protected void publish() {
+ logger.debug("Start task DmaapPublisherTask::publish() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
- logger.debug("End task DmaapPublisherTask::consume() :: Execution Time - {}",
+ logger.debug("End task DmaapPublisherTask::publish() :: Execution Time - {}",
dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
- protected void publish() {
- logger.debug("Start task DmaapPublisherTask::publish() :: Execution Time - {}", dateTimeFormatter.format(
+ public ResponseEntity execute(Object object) {
+ logger.debug("Start task DmaapPublisherTask::consume() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
-
- logger.debug("End task DmaapPublisherTask::publish() :: Execution Time - {}",
+ publish();
+ logger.debug("End task DmaapPublisherTask::consume() :: Execution Time - {}",
dateTimeFormatter.format(LocalDateTime.now()));
+ return null;
+ }
+
+ @Override
+ protected DmaapPublisherConfiguration resolveConfiguration() {
+ return prhAppConfig.getDmaapPublisherConfiguration();
}
}
private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
- private final DmaapConsumerTask dmaapConsumerTask;
- private final DmaapPublisherTask dmaapPublisherTask;
- private final AAIPublisherTask aaiPublisherTask;
+ private final Task dmaapConsumerTask;
+ private final Task dmaapProducerTask;
+ private final Task aaiPublisherTask;
@Autowired
public ScheduledTasks(DmaapConsumerTask dmaapConsumerTask, DmaapPublisherTask dmaapPublisherTask,
AAIPublisherTask aaiPublisherTask) {
this.dmaapConsumerTask = dmaapConsumerTask;
- this.dmaapPublisherTask = dmaapPublisherTask;
+ this.dmaapProducerTask = dmaapPublisherTask;
this.aaiPublisherTask = aaiPublisherTask;
}
public void scheduleMainPrhEventTask() {
logger.debug("Task scheduledTaskAskingDMaaPOfConsumeEvent() :: Execution Time - {}", dateTimeFormatter.format(
LocalDateTime.now()));
+ setTaskExecutionFlow();
try {
- dmaapConsumerTask.execute();
- dmaapPublisherTask.execute();
- aaiPublisherTask.execute();
+ dmaapConsumerTask.receiveRequest(null);
} catch (PrhTaskException e) {
logger
.error("Task scheduledTaskAskingDMaaPOfConsumeEvent()::PrhTaskException :: Execution Time - {}:{}",
}
}
+ private void setTaskExecutionFlow() {
+ dmaapConsumerTask.setNext(aaiPublisherTask);
+ aaiPublisherTask.setNext(dmaapProducerTask);
+ }
+
}
package org.onap.dcaegen2.services.prh.tasks;
import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
+import org.springframework.http.ResponseEntity;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
-@FunctionalInterface
-public interface Task {
- void execute() throws PrhTaskException;
+public abstract class Task {
+
+ private Task taskProcess;
+
+ public void setNext(Task task) {
+ this.taskProcess = task;
+ }
+
+ public void receiveRequest(Object body) throws PrhTaskException {
+ Object responseEntity = execute(body);
+ if (taskProcess != null) {
+ taskProcess.receiveRequest(responseEntity);
+ }
+ }
+
+ abstract ResponseEntity execute(Object object) throws PrhTaskException;
+
+
}
}
private void verifyDmaapConsumerTask() {
- verify(scheduledTask, atLeast(2)).scheduleMainPrhEventTask();
+ verify(scheduledTask, atLeast(1)).scheduleMainPrhEventTask();
}
}
verify(prhAppConfig, times(1)).initFileStreamReader();
Assertions.assertNotNull(prhAppConfig.getAAIHttpClientConfiguration());
Assertions.assertNotNull(prhAppConfig.getDmaapConsumerConfiguration());
- Assertions.assertNotNull(prhAppConfig.getDmaapProducerConfiguration());
+ Assertions.assertNotNull(prhAppConfig.getDmaapPublisherConfiguration());
}
@Test
verify(prhAppConfig, times(1)).initFileStreamReader();
Assertions.assertNull(prhAppConfig.getAAIHttpClientConfiguration());
Assertions.assertNull(prhAppConfig.getDmaapConsumerConfiguration());
- Assertions.assertNull(prhAppConfig.getDmaapProducerConfiguration());
+ Assertions.assertNull(prhAppConfig.getDmaapPublisherConfiguration());
}
verify(prhAppConfig, times(1)).initFileStreamReader();
Assertions.assertNotNull(prhAppConfig.getAAIHttpClientConfiguration());
Assertions.assertNotNull(prhAppConfig.getDmaapConsumerConfiguration());
- Assertions.assertNull(prhAppConfig.getDmaapProducerConfiguration());
+ Assertions.assertNull(prhAppConfig.getDmaapPublisherConfiguration());
}
}
\ No newline at end of file
*/
package org.onap.dcaegen2.services.prh.tasks;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import org.onap.dcaegen2.services.config.AAIHttpClientConfiguration;
+import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Bean
@Primary
public AAIPublisherTask registerSimpleAAIPublisherTask() {
- return spy(new AAIPublisherTaskImpl());
+ AppConfig appConfig = mock(AppConfig.class);
+ when(appConfig.getAAIHttpClientConfiguration()).thenReturn(mock(AAIHttpClientConfiguration.class));
+ return spy(new AAIPublisherTaskImpl(appConfig));
}
}
*/
package org.onap.dcaegen2.services.prh.tasks;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import org.onap.dcaegen2.services.config.DmaapConsumerConfiguration;
+import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Bean
@Primary
- public DmaapConsumerTaskImpl registerSimpleDmaapConsumerTask() {
- return spy(new DmaapConsumerTaskImpl());
+ public Task registerSimpleDmaapConsumerTask() {
+ AppConfig appConfig = mock(AppConfig.class);
+ when(appConfig.getDmaapConsumerConfiguration()).thenReturn(mock(DmaapConsumerConfiguration.class));
+ return spy(new DmaapConsumerTaskImpl(appConfig));
}
}
*/
package org.onap.dcaegen2.services.prh.tasks;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
+import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
@Configuration
-public class DmaapPublisherTaskSpy {
+public class DmaapProducerTaskSpy {
@Bean
@Primary
- public DmaapPublisherTaskImpl registerSimpleDmaapPublisherTask() {
- return spy(new DmaapPublisherTaskImpl());
+ public Task registerSimpleDmaapPublisherTask() {
+ AppConfig appConfig = mock(AppConfig.class);
+ when(appConfig.getDmaapPublisherConfiguration()).thenReturn(mock(DmaapPublisherConfiguration.class));
+ return spy(new DmaapPublisherTaskImpl(appConfig));
}
}
import static org.mockito.Mockito.spy;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Component
@Value.Immutable(prehash = true)
@Value.Style(builder = "new")
-@JsonDeserialize(builder = ImmutableDmaapProducerConfiguration.Builder.class)
-public abstract class DmaapProducerConfiguration implements DmaapCustomConfig {
+@JsonDeserialize(builder = ImmutableDmaapPublisherConfiguration.Builder.class)
+public abstract class DmaapPublisherConfiguration implements DmaapCustomConfig {
private static final long serialVersionUID = 1L;
interface Builder extends
- DmaapCustomConfig.Builder<DmaapProducerConfiguration, DmaapProducerConfiguration.Builder> {
+ DmaapCustomConfig.Builder<DmaapPublisherConfiguration, DmaapPublisherConfiguration.Builder> {
}
- public static DmaapProducerConfiguration.Builder builder() {
- return ImmutableDmaapProducerConfiguration.builder();
+ public static DmaapPublisherConfiguration.Builder builder() {
+ return ImmutableDmaapPublisherConfiguration.builder();
}