Provision topics on mr_clusters
[dmaap/dbcapi.git] / src / main / java / org / onap / dmaap / dbcapi / service / TopicService.java
index 6e7b744..e4bc96c 100644 (file)
@@ -80,9 +80,18 @@ public class TopicService extends BaseLoggingClass {
        }
                
        public List<Topic> getAllTopics() {
+               return getAllTopics( true );
+       }
+       public List<Topic> getAllTopicsWithoutClients() {
+               return getAllTopics(false);
+       }
+       
+       private List<Topic> getAllTopics( Boolean withClients ) {
                ArrayList<Topic> topics = new ArrayList<Topic>(mr_topics.values());
-               for( Topic topic: topics ) {
-                       topic.setClients( clientService.getAllMrClients(topic.getFqtn()));
+               if ( withClients ) {
+                       for( Topic topic: topics ) {
+                               topic.setClients( clientService.getAllMrClients(topic.getFqtn()));
+                       }
                }
                return topics;
        }
@@ -102,14 +111,19 @@ public class TopicService extends BaseLoggingClass {
                return t;
        }
 
-       public Topic addTopic( Topic topic, ApiError err ) {
+       public Topic addTopic( Topic topic, ApiError err, Boolean useExisting ) {
                logger.info( "Entry: addTopic");
                logger.info( "Topic name=" + topic.getTopicName() + " fqtnStyle=" + topic.getFqtnStyle() );
                String nFqtn =  topic.genFqtn();
                logger.info( "FQTN=" + nFqtn );
-               if ( getTopic( nFqtn, err ) != null ) {
+               Topic pTopic = getTopic( nFqtn, err );
+               if ( pTopic != null ) {
                        String t = "topic already exists: " + nFqtn;
                        logger.info( t );
+                       if (  useExisting ) {
+                               err.setCode(Status.OK.getStatusCode());
+                               return pTopic;
+                       }
                        err.setMessage( t );
                        err.setFields( "fqtn");
                        err.setCode(Status.CONFLICT.getStatusCode());
@@ -251,7 +265,7 @@ public class TopicService extends BaseLoggingClass {
                
                TopicService ts = new TopicService();
                ApiError err = new ApiError();
-               ts.addTopic(bridgeAdminTopic, err);
+               ts.addTopic(bridgeAdminTopic, err, true);
                
                if ( err.is2xx() || err.getCode() == 409 ){
                        err.setCode(200);