Add addTopic(List<TopicParams>) 19/92219/3
authorJim Hahn <jrh3@att.com>
Sat, 27 Jul 2019 12:20:17 +0000 (08:20 -0400)
committerJim Hahn <jrh3@att.com>
Mon, 29 Jul 2019 19:30:06 +0000 (15:30 -0400)
New services are typically configured using TopicParameters.  These
are converted into Properties before being passed to
TopicEndpoint.addTopic(), which then converts them into BusTopicParams
before configuring a given topic.  Added
TopicEndpoint.addTopic(List<TopicParams>), which makes it possible
to configure the topics without going into the intermediate Properties.
Furthermore, because TopicParams is a subclass of BusTopicParams, no
conversion is needed for that either, so the TopicParams can be passed
directly into the configuration classes.
Incorporated changes from review.

Change-Id: Id87e2c6812e36ae1a3ac680e6b35208667971782
Issue-ID: POLICY-1953
Signed-off-by: Jim Hahn <jrh3@att.com>
14 files changed:
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpoint.java
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxy.java
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactory.java
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseFactory.java
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseHashedFactory.java
policy-endpoints/src/main/java/org/onap/policy/common/endpoints/parameters/TopicParameterGroup.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/DmaapTopicPropertyBuilder.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicFactoryTest.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicPropertyBuilder.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSinkFactoryTest.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactoryTest.java
policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/UebTopicPropertyBuilder.java
policy-endpoints/src/test/resources/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.json

index 7bc7aba..bb70752 100644 (file)
@@ -30,6 +30,8 @@ import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSink;
 import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSource;
 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSink;
 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSource;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
 
 /**
  * Abstraction to managed the system's Networked Topic Endpoints, sources of all events input into
@@ -46,24 +48,52 @@ public interface TopicEndpoint extends Startable, Lockable {
      */
     List<Topic> addTopics(Properties properties);
 
+    /**
+     * Add topics configuration (sources and sinks) into a single list.
+     *
+     * @param params parameters to configure topic
+     * @return topic list
+     * @throws IllegalArgumentException when invalid arguments are provided
+     */
+    List<Topic> addTopics(TopicParameterGroup params);
+
     /**
      * Add Topic Sources to the communication infrastructure initialized per properties.
      *
      * @param properties properties for Topic Source construction
-     * @return a generic Topic Source
+     * @return a list of generic Topic Sources
      * @throws IllegalArgumentException when invalid arguments are provided
      */
     List<TopicSource> addTopicSources(Properties properties);
 
+
+    /**
+     * Add Topic Sources to the communication infrastructure initialized per properties.
+     *
+     * @param paramList parameters for Topic Source construction
+     * @return a list of generic Topic Sources
+     * @throws IllegalArgumentException when invalid arguments are provided
+     */
+    List<TopicSource> addTopicSources(List<TopicParameters> paramList);
+
     /**
      * Add Topic Sinks to the communication infrastructure initialized per properties.
      *
      * @param properties properties for Topic Sink construction
-     * @return a generic Topic Sink
+     * @return a list of generic Topic Sinks
      * @throws IllegalArgumentException when invalid arguments are provided
      */
     List<TopicSink> addTopicSinks(Properties properties);
 
+    /**
+     * Add Topic Sinks to the communication infrastructure initialized per properties.
+     *
+     * @param paramList parameters for Topic Sink construction
+     * @return a list of generic Topic Sinks
+     * @throws IllegalArgumentException when invalid arguments are provided
+     */
+    List<TopicSink> addTopicSinks(List<TopicParameters> paramList);
+
     /**
      * Gets all Topic Sources.
      *
index 00980fc..c9e7315 100644 (file)
@@ -34,6 +34,8 @@ import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSource;
 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicFactories;
 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSink;
 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSource;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
 import org.onap.policy.common.gson.annotation.GsonJsonIgnore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,6 +67,41 @@ class TopicEndpointProxy implements TopicEndpoint {
         return topics;
     }
 
+    @Override
+    public List<Topic> addTopics(TopicParameterGroup params) {
+        List<Topic> topics = new ArrayList<>(params.getTopicSinks().size() + params.getTopicSources().size());
+        topics.addAll(addTopicSources(params.getTopicSources()));
+        topics.addAll(addTopicSinks(params.getTopicSinks()));
+        return topics;
+    }
+
+    @Override
+    public List<TopicSource> addTopicSources(List<TopicParameters> paramList) {
+        List<TopicSource> sources = new ArrayList<>(paramList.size());
+
+        for (TopicParameters param : paramList) {
+            switch (Topic.CommInfrastructure.valueOf(param.getTopicCommInfrastructure().toUpperCase())) {
+                case UEB:
+                    sources.add(UebTopicFactories.getSourceFactory().build(param));
+                    break;
+                case DMAAP:
+                    sources.add(DmaapTopicFactories.getSourceFactory().build(param));
+                    break;
+                case NOOP:
+                    sources.add(NoopTopicFactories.getSourceFactory().build(param));
+                    break;
+                default:
+                    logger.debug("Unknown source type {} for topic: {}", param.getTopicCommInfrastructure(),
+                                    param.getTopic());
+                    break;
+            }
+        }
+
+        lockSources(sources);
+
+        return sources;
+    }
+
     @Override
     public List<TopicSource> addTopicSources(Properties properties) {
 
@@ -78,13 +115,42 @@ class TopicEndpointProxy implements TopicEndpoint {
         sources.addAll(DmaapTopicFactories.getSourceFactory().build(properties));
         sources.addAll(NoopTopicFactories.getSourceFactory().build(properties));
 
+        lockSources(sources);
+
+        return sources;
+    }
+
+    private void lockSources(List<TopicSource> sources) {
         if (this.isLocked()) {
-            for (final TopicSource source : sources) {
-                source.lock();
+            sources.forEach(TopicSource::lock);
+        }
+    }
+
+    @Override
+    public List<TopicSink> addTopicSinks(List<TopicParameters> paramList) {
+        List<TopicSink> sinks = new ArrayList<>(paramList.size());
+
+        for (TopicParameters param : paramList) {
+            switch (Topic.CommInfrastructure.valueOf(param.getTopicCommInfrastructure().toUpperCase())) {
+                case UEB:
+                    sinks.add(UebTopicFactories.getSinkFactory().build(param));
+                    break;
+                case DMAAP:
+                    sinks.add(DmaapTopicFactories.getSinkFactory().build(param));
+                    break;
+                case NOOP:
+                    sinks.add(NoopTopicFactories.getSinkFactory().build(param));
+                    break;
+                default:
+                    logger.debug("Unknown sink type {} for topic: {}", param.getTopicCommInfrastructure(),
+                                    param.getTopic());
+                    break;
             }
         }
 
-        return sources;
+        lockSinks(sinks);
+
+        return sinks;
     }
 
     @Override
@@ -99,15 +165,17 @@ class TopicEndpointProxy implements TopicEndpoint {
         sinks.addAll(DmaapTopicFactories.getSinkFactory().build(properties));
         sinks.addAll(NoopTopicFactories.getSinkFactory().build(properties));
 
-        if (this.isLocked()) {
-            for (final TopicSink sink : sinks) {
-                sink.lock();
-            }
-        }
+        lockSinks(sinks);
 
         return sinks;
     }
 
+    private void lockSinks(List<TopicSink> sinks) {
+        if (this.isLocked()) {
+            sinks.forEach(TopicSink::lock);
+        }
+    }
+
     @Override
     public List<TopicSource> getTopicSources() {
 
index 9623b4f..7164f91 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.policy.common.endpoints.event.comm.bus;
 
 import java.util.List;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
 
 /**
@@ -36,6 +37,14 @@ public class NoopTopicSourceFactory extends NoopTopicFactory<NoopTopicSource> {
         return PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS;
     }
 
+    /**
+     * {@inheritDoc}.
+     */
+    @Override
+    public NoopTopicSource build(BusTopicParams param) {
+        return build(param.getServers(), param.getTopic());
+    }
+
     /**
      * {@inheritDoc}.
      */
@@ -49,6 +58,6 @@ public class NoopTopicSourceFactory extends NoopTopicFactory<NoopTopicSource> {
      */
     @Override
     public String toString() {
-        return "NoopTopicSourceFactory[" + super.toString() + "]";
+        return "NoopTopicSourceFactory [" + super.toString() + "]";
     }
 }
index 897a8e1..a6b5b1d 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.policy.common.endpoints.event.comm.bus;
 import java.util.List;
 import java.util.Properties;
 import org.onap.policy.common.endpoints.event.comm.Topic;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 
 /**
  * Topic Base Factory.
@@ -49,6 +50,14 @@ public interface TopicBaseFactory<T extends Topic> {
      */
     T build(List<String> servers, String topic, boolean managed);
 
+    /**
+     * Construct an instance of an endpoint.
+     *
+     * @param param parameters
+     * @return an instance of T.
+     */
+    T build(BusTopicParams param);
+
     /**
      * destroy TopicBase instance.
      * @param topic topic.
index f958bd0..38ee25a 100644 (file)
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Properties;
 import org.onap.policy.common.endpoints.event.comm.Topic;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 
 /**
  * Topic Factory implementation that indexes T instances in a hash table.
@@ -99,6 +100,14 @@ public abstract class TopicBaseHashedFactory<T extends Topic> implements TopicBa
         return newEndpoints;
     }
 
+    /**
+     * {@inheritDoc}.
+     */
+    @Override
+    public T build(BusTopicParams param) {
+        return this.build(param.getServers(), param.getTopic(), param.isManaged());
+    }
+
     /**
      * {@inheritDoc}.
      */
index 70a0603..f633b0e 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Nordix Foundation.
+ *  Modifications Copyright (C) 2019 AT&T Intellectual Property. 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.
@@ -20,6 +21,7 @@
 
 package org.onap.policy.common.endpoints.parameters;
 
+import java.util.LinkedList;
 import java.util.List;
 import lombok.Getter;
 import lombok.Setter;
@@ -41,8 +43,8 @@ import org.onap.policy.common.parameters.annotations.NotNull;
 @Setter
 public class TopicParameterGroup extends ParameterGroupImpl {
 
-    private List<TopicParameters> topicSources;
-    private List<TopicParameters> topicSinks;
+    private final List<TopicParameters> topicSources = new LinkedList<>();
+    private final List<TopicParameters> topicSinks = new LinkedList<>();
 
     public TopicParameterGroup() {
         super(TopicParameterGroup.class.getSimpleName());
index ba5fe18..22ddecd 100644 (file)
@@ -28,10 +28,17 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 import java.util.Properties;
+import org.junit.After;
 import org.junit.Test;
 import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.endpoints.event.comm.bus.DmaapTopicFactories;
 import org.onap.policy.common.endpoints.event.comm.bus.DmaapTopicPropertyBuilder;
+import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicFactories;
 import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicPropertyBuilder;
+import org.onap.policy.common.endpoints.event.comm.bus.UebTopicFactories;
+import org.onap.policy.common.endpoints.event.comm.bus.UebTopicPropertyBuilder;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
 import org.onap.policy.common.utils.gson.GsonTestUtils;
 
@@ -47,41 +54,54 @@ public class TopicEndpointProxyTest {
     private static final String DMAAP_SINK_TOPIC = "dmaap-sink";
 
     private Properties configuration = new Properties();
+    private TopicParameterGroup group = new TopicParameterGroup();
 
     /**
      * Constructor.
      */
     public TopicEndpointProxyTest() {
-        Properties noopSourceProperties =
+        NoopTopicPropertyBuilder noopSourceBuilder =
             new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS)
-                .makeTopic(NOOP_SOURCE_TOPIC).build();
+                .makeTopic(NOOP_SOURCE_TOPIC);
+        configuration.putAll(noopSourceBuilder.build());
+        group.getTopicSources().add(noopSourceBuilder.getParams());
 
-        Properties noopSinkProperties =
+        NoopTopicPropertyBuilder noopSinkBuilder =
             new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS)
-                .makeTopic(NOOP_SINK_TOPIC).build();
-
-        Properties uebSourceProperties =
-            new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SOURCE_TOPICS)
-                .makeTopic(UEB_SOURCE_TOPIC).build();
-
-        Properties uebSinkProperties =
-            new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SINK_TOPICS)
-                .makeTopic(UEB_SINK_TOPIC).build();
-
-        Properties dmaapSourceProperties =
+                .makeTopic(NOOP_SINK_TOPIC);
+        configuration.putAll(noopSinkBuilder.build());
+        group.getTopicSinks().add(noopSinkBuilder.getParams());
+
+        UebTopicPropertyBuilder uebSourceBuilder =
+            new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SOURCE_TOPICS)
+                .makeTopic(UEB_SOURCE_TOPIC);
+        configuration.putAll(uebSourceBuilder.build());
+        group.getTopicSources().add(uebSourceBuilder.getParams());
+
+        UebTopicPropertyBuilder uebSinkBuilder =
+            new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SINK_TOPICS)
+                .makeTopic(UEB_SINK_TOPIC);
+        configuration.putAll(uebSinkBuilder.build());
+        group.getTopicSinks().add(uebSinkBuilder.getParams());
+
+        DmaapTopicPropertyBuilder dmaapSourceBuilder =
             new DmaapTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_DMAAP_SOURCE_TOPICS)
-                .makeTopic(DMAAP_SOURCE_TOPIC).build();
+                .makeTopic(DMAAP_SOURCE_TOPIC);
+        configuration.putAll(dmaapSourceBuilder.build());
+        group.getTopicSources().add(dmaapSourceBuilder.getParams());
 
-        Properties dmaapSinkProperties =
+        DmaapTopicPropertyBuilder dmaapSinkBuilder =
             new DmaapTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_DMAAP_SINK_TOPICS)
-                .makeTopic(DMAAP_SINK_TOPIC).build();
-
-        configuration.putAll(noopSourceProperties);
-        configuration.putAll(noopSinkProperties);
-        configuration.putAll(uebSourceProperties);
-        configuration.putAll(uebSinkProperties);
-        configuration.putAll(dmaapSourceProperties);
-        configuration.putAll(dmaapSinkProperties);
+                .makeTopic(DMAAP_SINK_TOPIC);
+        configuration.putAll(dmaapSinkBuilder.build());
+        group.getTopicSinks().add(dmaapSinkBuilder.getParams());
+
+        TopicParameters invalidCommInfraParams =
+                        new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS)
+                                        .makeTopic(NOOP_SOURCE_TOPIC).getParams();
+        invalidCommInfraParams.setTopicCommInfrastructure(Topic.CommInfrastructure.REST.name());
+        group.getTopicSources().add(invalidCommInfraParams);
+        group.getTopicSinks().add(invalidCommInfraParams);
     }
 
     private <T extends Topic> boolean exists(List<T> topics, String topicName) {
@@ -112,6 +132,21 @@ public class TopicEndpointProxyTest {
             || exists(topics, DMAAP_SINK_TOPIC);
     }
 
+    /**
+     * Destroys all managed topics.
+     */
+    @After
+    public void tearDown() {
+        NoopTopicFactories.getSinkFactory().destroy();
+        NoopTopicFactories.getSourceFactory().destroy();
+
+        UebTopicFactories.getSinkFactory().destroy();
+        UebTopicFactories.getSourceFactory().destroy();
+
+        DmaapTopicFactories.getSinkFactory().destroy();
+        DmaapTopicFactories.getSourceFactory().destroy();
+    }
+
     @Test
     public void testSerialize() {
         TopicEndpoint manager = new TopicEndpointProxy();
@@ -123,7 +158,18 @@ public class TopicEndpointProxyTest {
     }
 
     @Test
-    public void addTopicSources() {
+    public void addTopicSourcesListOfTopicParameters() {
+        TopicEndpoint manager = new TopicEndpointProxy();
+
+        List<TopicSource>  sources = manager.addTopicSources(group.getTopicSources());
+        assertSame(3, sources.size());
+
+        assertTrue(allSources(sources));
+        assertFalse(anySink(sources));
+    }
+
+    @Test
+    public void addTopicSourcesProperties() {
         TopicEndpoint manager = new TopicEndpointProxy();
 
         List<TopicSource>  sources = manager.addTopicSources(configuration);
@@ -134,7 +180,18 @@ public class TopicEndpointProxyTest {
     }
 
     @Test
-    public void addTopicSinks() {
+    public void addTopicSinksListOfTopicParameters() {
+        TopicEndpoint manager = new TopicEndpointProxy();
+
+        List<TopicSink>  sinks = manager.addTopicSinks(group.getTopicSinks());
+        assertSame(3, sinks.size());
+
+        assertFalse(anySource(sinks));
+        assertTrue(allSinks(sinks));
+    }
+
+    @Test
+    public void addTopicSinksProperties() {
         TopicEndpoint manager = new TopicEndpointProxy();
 
         List<TopicSink>  sinks = manager.addTopicSinks(configuration);
@@ -145,7 +202,7 @@ public class TopicEndpointProxyTest {
     }
 
     @Test
-    public void addTopics() {
+    public void addTopicsProperties() {
         TopicEndpoint manager = new TopicEndpointProxy();
 
         List<Topic>  topics = manager.addTopics(configuration);
@@ -155,6 +212,34 @@ public class TopicEndpointProxyTest {
         assertTrue(allSinks(topics));
     }
 
+    @Test
+    public void addTopicsTopicParameterGroup() {
+        TopicEndpoint manager = new TopicEndpointProxy();
+
+        List<Topic>  topics = manager.addTopics(group);
+        assertSame(6, topics.size());
+
+        assertTrue(allSources(topics));
+        assertTrue(allSinks(topics));
+    }
+
+    @Test
+    public void lockSinks_lockSources_locked() {
+        TopicEndpoint manager = new TopicEndpointProxy();
+        manager.lock();
+        for (Topic topic : manager.addTopics(group)) {
+            assertTrue(topic.isLocked());
+        }
+    }
+
+    @Test
+    public void lockSinks_lockSources_unlocked() {
+        TopicEndpoint manager = new TopicEndpointProxy();
+        for (Topic topic : manager.addTopics(group)) {
+            assertFalse(topic.isLocked());
+        }
+    }
+
     @Test
     public void getTopicSources() {
         TopicEndpoint manager = new TopicEndpointProxy();
index dff3f78..2e9a6cd 100644 (file)
@@ -61,6 +61,10 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_LIMIT_SUFFIX;
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_TIMEOUT_SUFFIX;
 
+import java.util.Arrays;
+import lombok.Getter;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
+
 public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder {
 
     public static final String SERVER = "my-server";
@@ -75,6 +79,9 @@ public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder {
     public static final String MY_AAF_MECHID = "my-aaf-mechid";
     public static final String MY_AAF_PASS = "my-aaf-passwd";
 
+    @Getter
+    private TopicParameters params = new TopicParameters();
+
     /**
      * Constructs the object.
      *
@@ -120,6 +127,28 @@ public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder {
         setTopicProperty(PROPERTY_DMAAP_DME2_SUB_CONTEXT_PATH_SUFFIX, MY_SUBCONTEXT);
         setTopicProperty(PROPERTY_DMAAP_DME2_VERSION_SUFFIX, MY_DME_VERSION);
 
+        params.setTopicCommInfrastructure("dmaap");
+        params.setTopic(topic);
+        params.setEffectiveTopic(MY_EFFECTIVE_TOPIC);
+        params.setConsumerGroup(MY_CONS_GROUP);
+        params.setConsumerInstance(MY_CONS_INST);
+        params.setManaged(true);
+        params.setUseHttps(true);
+        params.setUserName(MY_AAF_MECHID);
+        params.setPassword(MY_AAF_PASS);
+        params.setAftEnvironment(MY_AFT_ENV);
+        params.setAllowSelfSignedCerts(true);
+        params.setApiKey(MY_API_KEY);
+        params.setApiSecret(MY_API_SECRET);
+        params.setFetchLimit(MY_FETCH_LIMIT);
+        params.setFetchTimeout(MY_FETCH_TIMEOUT);
+        params.setEnvironment(MY_ENV);
+        params.setLatitude(MY_LAT);
+        params.setLongitude(MY_LONG);
+        params.setPartitionId(MY_PARTITION);
+        params.setPartner(MY_PARTNER);
+        params.setServers(Arrays.asList(SERVER));
+
         return this;
     }
 }
index 1f7506f..5cb9bcb 100644 (file)
@@ -39,6 +39,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 
 public abstract class NoopTopicFactoryTest<F extends NoopTopicFactory<T>, T extends NoopTopicEndpoint>
     extends TopicFactoryTestBase<T> {
@@ -63,6 +64,17 @@ public abstract class NoopTopicFactoryTest<F extends NoopTopicFactory<T>, T exte
         factory.destroy();
     }
 
+    @Test
+    public void testBuildBusTopicParams() {
+        initFactory();
+
+        T item1 = buildTopic(makeParams(servers, MY_TOPIC, true));
+        assertNotNull(item1);
+
+        assertEquals(servers, item1.getServers());
+        assertEquals(MY_TOPIC, item1.getTopic());
+    }
+
     @Test
     public void testBuildListOfStringStringBoolean() {
         initFactory();
@@ -196,6 +208,10 @@ public abstract class NoopTopicFactoryTest<F extends NoopTopicFactory<T>, T exte
         return factory.build(properties);
     }
 
+    protected T buildTopic(BusTopicParams param) {
+        return factory.build(param);
+    }
+
     protected T buildTopic(List<String> servers, String topic, boolean managed) {
         return factory.build(servers, topic, managed);
     }
@@ -224,4 +240,14 @@ public abstract class NoopTopicFactoryTest<F extends NoopTopicFactory<T>, T exte
     protected TopicPropertyBuilder makePropBuilder() {
         return new NoopTopicPropertyBuilder(factory.getTopicsPropertyName());
     }
+
+    private BusTopicParams makeParams(List<String> servers, String topic, boolean managed) {
+        BusTopicParams params = new BusTopicParams();
+
+        params.setServers(servers);
+        params.setTopic(topic);
+        params.setManaged(managed);
+
+        return params;
+    }
 }
index 529f8b2..3f0553f 100644 (file)
@@ -27,11 +27,18 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_EFFECTIVE_TOPIC_SUFFIX;
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SERVERS_SUFFIX;
 
+import java.util.Arrays;
+import lombok.Getter;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
+
 public class NoopTopicPropertyBuilder extends TopicPropertyBuilder {
 
     public static final String SERVER = "my-server";
     public static final String TOPIC2 = "my-topic-2";
 
+    @Getter
+    private TopicParameters params = new TopicParameters();
+
     /**
      * Constructs the object.
      *
@@ -56,6 +63,14 @@ public class NoopTopicPropertyBuilder extends TopicPropertyBuilder {
         setTopicProperty(PROPERTY_ALLOW_SELF_SIGNED_CERTIFICATES_SUFFIX, "true");
         setTopicProperty(PROPERTY_TOPIC_SERVERS_SUFFIX, SERVER);
 
+        params.setTopicCommInfrastructure("noop");
+        params.setTopic(topic);
+        params.setEffectiveTopic(MY_EFFECTIVE_TOPIC);
+        params.setManaged(true);
+        params.setUseHttps(true);
+        params.setAllowSelfSignedCerts(true);
+        params.setServers(Arrays.asList(SERVER));
+
         return this;
     }
 }
index cc44716..b4ab54f 100644 (file)
 
 package org.onap.policy.common.endpoints.event.comm.bus;
 
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
 public class NoopTopicSinkFactoryTest extends NoopTopicFactoryTest<NoopTopicSinkFactory, NoopTopicSink> {
 
     @Override
     protected NoopTopicSinkFactory buildFactory() {
         return new NoopTopicSinkFactory();
     }
+
+    @Test
+    public void testToString() {
+        assertTrue(new NoopTopicSinkFactory().toString().startsWith("NoopTopicSinkFactory ["));
+    }
 }
index c8a4429..e16174f 100644 (file)
 
 package org.onap.policy.common.endpoints.event.comm.bus;
 
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
 public class NoopTopicSourceFactoryTest extends NoopTopicFactoryTest<NoopTopicSourceFactory, NoopTopicSource>   {
 
     @Override
     protected NoopTopicSourceFactory buildFactory() {
         return new NoopTopicSourceFactory();
     }
+
+    @Test
+    public void testToString() {
+        assertTrue(new NoopTopicSourceFactory().toString().startsWith("NoopTopicSourceFactory ["));
+    }
 }
index 6119284..cb5507e 100644 (file)
@@ -45,6 +45,10 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_LIMIT_SUFFIX;
 import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_TIMEOUT_SUFFIX;
 
+import java.util.Arrays;
+import lombok.Getter;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
+
 public class UebTopicPropertyBuilder extends TopicPropertyBuilder {
 
     public static final String SERVER = "my-server";
@@ -53,6 +57,9 @@ public class UebTopicPropertyBuilder extends TopicPropertyBuilder {
     public static final String MY_AAF_MECHID = "my-aaf-mechid";
     public static final String MY_AAF_PASS = "my-aaf-passwd";
 
+    @Getter
+    private TopicParameters params = new TopicParameters();
+
     /**
      * Constructs the object.
      *
@@ -87,6 +94,24 @@ public class UebTopicPropertyBuilder extends TopicPropertyBuilder {
         setTopicProperty(PROPERTY_TOPIC_SINK_PARTITION_KEY_SUFFIX, MY_PARTITION);
         setTopicProperty(PROPERTY_TOPIC_SERVERS_SUFFIX, SERVER);
 
+        params.setTopicCommInfrastructure("ueb");
+        params.setTopic(topic);
+        params.setEffectiveTopic(MY_EFFECTIVE_TOPIC);
+        params.setConsumerGroup(MY_CONS_GROUP);
+        params.setConsumerInstance(MY_CONS_INST);
+        params.setManaged(true);
+        params.setUseHttps(true);
+        params.setUserName(MY_AAF_MECHID);
+        params.setPassword(MY_AAF_PASS);
+        params.setAftEnvironment(MY_AFT_ENV);
+        params.setAllowSelfSignedCerts(true);
+        params.setApiKey(MY_API_KEY);
+        params.setApiSecret(MY_API_SECRET);
+        params.setFetchLimit(MY_FETCH_LIMIT);
+        params.setFetchTimeout(MY_FETCH_TIMEOUT);
+        params.setPartitionId(MY_PARTITION);
+        params.setServers(Arrays.asList(SERVER));
+
         return this;
     }
 }
index 3402a52..9c8d78e 100644 (file)
@@ -8,13 +8,13 @@
     "recentEvents" : [ ],
     "alive" : false,
     "locked" : false,
-    "apiKey" : null,
-    "apiSecret" : null,
+    "apiKey" : "my-api-key",
+    "apiSecret" : "my-api-secret",
     "useHttps" : true,
     "allowSelfSignedCerts" : true,
     "consumerGroup" : "${obj.topicSources[0].consumerGroup}",
     "consumerInstance" : "${obj.topicSources[0].consumerInstance}",
-    "fetchTimeout" : 15000,
+    "fetchTimeout" : 101,
     "fetchLimit" : 100,
     "topicCommInfrastructure" : "UEB"
   }, {
@@ -49,8 +49,8 @@
     "recentEvents" : [ ],
     "alive" : false,
     "locked" : false,
-    "apiKey" : null,
-    "apiSecret" : null,
+    "apiKey" : "my-api-key",
+    "apiSecret" : "my-api-secret",
     "useHttps" : true,
     "allowSelfSignedCerts" : true,
     "topicCommInfrastructure" : "UEB",