Introduce useExisting query param for feeds/topics 29/72129/1
authordglFromAtt <dgl@research.att.com>
Thu, 25 Oct 2018 12:06:45 +0000 (08:06 -0400)
committerdglFromAtt <dgl@research.att.com>
Thu, 25 Oct 2018 12:29:01 +0000 (08:29 -0400)
Change-Id: I0eb7000cff801a7fb622c70d4621458fe3574fed
Signed-off-by: dglFromAtt <dgl@research.att.com>
Issue-ID: DMAAP-878

pom.xml
src/main/java/org/onap/dmaap/dbcapi/resources/FeedResource.java
src/main/java/org/onap/dmaap/dbcapi/resources/TopicResource.java
src/main/java/org/onap/dmaap/dbcapi/service/DmaapService.java
src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
src/test/java/org/onap/dmaap/dbcapi/service/MR_ClientServiceTest.java
src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java
version.properties

diff --git a/pom.xml b/pom.xml
index b339edb..5a444f0 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <jettyVersion>9.3.8.RC0</jettyVersion> 
                <eelf.version>1.0.0</eelf.version>
-               <artifact.version>1.0.17-SNAPSHOT</artifact.version>
+               <artifact.version>1.0.18-SNAPSHOT</artifact.version>
                <!-- SONAR -->
                <jacoco.version>0.7.7.201606060606</jacoco.version>
                <sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
index c0fdd0d..97336c1 100644 (file)
@@ -100,7 +100,8 @@ public class FeedResource extends BaseLoggingClass {
            @ApiResponse( code = 400, message = "Error", response = ApiError.class )
        })
        public Response addFeed( 
-                       @WebParam(name = "feed") Feed feed 
+                       @WebParam(name = "feed") Feed feed,
+                       @QueryParam("useExisting") String useExisting
                        ) {
 
                ApiService resp = new ApiService();
@@ -115,6 +116,7 @@ public class FeedResource extends BaseLoggingClass {
                        return resp.error();    
                }
                
+               
                FeedService feedService = new FeedService();
                Feed nfeed =  feedService.getFeedByName( feed.getFeedName(), feed.getFeedVersion(), resp.getErr() );
                if ( nfeed == null ) {
@@ -136,6 +138,8 @@ public class FeedResource extends BaseLoggingClass {
 
                                return resp.error();    
                        }
+               } else if ( (useExisting != null) && ("true".compareToIgnoreCase( useExisting ) == 0)) {
+                       return resp.success(nfeed);
                }
 
                resp.setCode(Status.CONFLICT.getStatusCode());
index cab48ca..8ed2558 100644 (file)
@@ -35,6 +35,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.GenericEntity;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -94,9 +95,10 @@ public class TopicResource extends BaseLoggingClass {
            @ApiResponse( code = 400, message = "Error", response = ApiError.class )
        })
        public Response  addTopic( 
-                       Topic topic
+                       Topic topic,
+                       @QueryParam("useExisting") String useExisting
                        ) {
-               logger.info( "addTopic request: " + topic );
+               logger.info( "addTopic request: " + topic  + " useExisting=" + useExisting );
                ApiService check = new ApiService();
 
                try {
@@ -118,8 +120,12 @@ public class TopicResource extends BaseLoggingClass {
                        topic.setFqtnStyle( defaultTopicStyle );
                }
                topic.setLastMod();
+               Boolean flag = false;
+               if (useExisting != null) {
+                       flag = "true".compareToIgnoreCase( useExisting ) == 0;
+               }
                
-               Topic mrc =  mr_topicService.addTopic(topic, check.getErr());
+               Topic mrc =  mr_topicService.addTopic(topic, check.getErr(), flag);
                if ( mrc != null && check.getErr().is2xx() ) {
                        return check.success(Status.CREATED.getStatusCode(), mrc);
                }
index e2bc379..5aae1d4 100644 (file)
@@ -290,7 +290,7 @@ public class DmaapService  extends BaseLoggingClass  {
                TopicService svc = new TopicService();
                try {
                        @SuppressWarnings("unused")
-                       Topic nTopic = svc.addTopic(mmaTopic, err);
+                       Topic nTopic = svc.addTopic(mmaTopic, err, true);
                        if ( err.is2xx() || err.getCode() == 409 ) {
                                return false;
                        }
index 6e7b744..6a93a21 100644 (file)
@@ -102,14 +102,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 +256,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);
index 4d79b74..dcdfcdf 100644 (file)
@@ -93,7 +93,7 @@ public class MR_ClientServiceTest {
        public void test3() {
                Topic topic = factory.genSimpleTopic( "test3" );
                ApiError err = new ApiError();
-               Topic nTopic = ts.addTopic( topic, err );
+               Topic nTopic = ts.addTopic( topic, err, false );
                if ( nTopic != null ) {
                        assertTrue( nTopic.getTopicName().equals( topic.getTopicName() ));
                }
@@ -117,7 +117,7 @@ public class MR_ClientServiceTest {
        public void test5() {
                Topic topic = factory.genSimpleTopic( "test5" );
                ApiError err = new ApiError();
-               Topic nTopic = ts.addTopic( topic, err );
+               Topic nTopic = ts.addTopic( topic, err, false );
                if ( nTopic != null ) {
                        assertTrue( nTopic.getTopicName().equals( topic.getTopicName() ));
                }
index 5997ab1..8fd7b47 100644 (file)
@@ -73,7 +73,7 @@ public class TopicServiceTest {
                topic.setTopicName( "test3" );
                topic.setFqtnStyle( FqtnType.Validator("none") );
                topic.getFqtn();
-               Topic nTopic = ts.addTopic( topic, err );
+               Topic nTopic = ts.addTopic( topic, err, false );
                if ( nTopic != null ) {
                        assertTrue( nTopic.getTopicName().equals( topic.getTopicName() ));
                }
@@ -104,7 +104,7 @@ public class TopicServiceTest {
                ts.reviewTopic( topic );
                ts.checkForBridge( topic, err );
                
-               Topic nTopic = ts.addTopic( topic, err );
+               Topic nTopic = ts.addTopic( topic, err, false );
                if ( nTopic != null ) {
                        assertTrue( nTopic.getTopicName().equals( topic.getTopicName() ));
                }
index 5605463..d9e3cf7 100644 (file)
@@ -27,7 +27,7 @@
 
 major=1
 minor=0
-patch=17
+patch=18
 base_version=${major}.${minor}.${patch}
 
 # Release must be completed with git revision # in Jenkins