X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdbcapi%2Fservice%2FTopicService.java;h=a633982d16ae122f426b0de0051ea8dfb05b7bd2;hb=1360b9df89a422d51ef40644ea5f9cf52cb84c6f;hp=26def911eb7d660b83fec2b10c15d3bd2328f7c5;hpb=dabb73bcd7bffba2153d543f847ffed7aea6f1fe;p=dmaap%2Fdbcapi.git diff --git a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java index 26def91..a633982 100644 --- a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java +++ b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java @@ -66,11 +66,15 @@ public class TopicService extends BaseLoggingClass { private static String centralCname; + public TopicService(){ DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig(); defaultGlobalMrHost = p.getProperty("MR.globalHost", "global.host.not.set"); centralCname = p.getProperty("MR.CentralCname"); - logger.info( "TopicService properties: CentralCname=" + centralCname + " defaultGlobarlMrHost=" + defaultGlobalMrHost ); + + + logger.info( "TopicService properties: CentralCname=" + centralCname + + " defaultGlobarlMrHost=" + defaultGlobalMrHost ); } public Map getTopics() { @@ -78,9 +82,18 @@ public class TopicService extends BaseLoggingClass { } public List getAllTopics() { + return getAllTopics( true ); + } + public List getAllTopicsWithoutClients() { + return getAllTopics(false); + } + + private List getAllTopics( Boolean withClients ) { ArrayList topics = new ArrayList(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; } @@ -100,14 +113,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()); @@ -116,9 +134,11 @@ public class TopicService extends BaseLoggingClass { err.reset(); // err filled with NOT_FOUND is expected case, but don't want to litter... topic.setFqtn( nFqtn ); - + AafService aaf = new AafService(ServiceType.AAF_TopicMgr); - String t = dmaap.getTopicNsRoot() + "." + dmaap.getDmaapName() + ".mr.topic"; + + String t = dmaapSvc.getTopicPerm(); + String instance = ":topic." + topic.getFqtn(); String[] actions = { "pub", "sub", "view" }; @@ -247,7 +267,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); @@ -413,10 +433,7 @@ public class TopicService extends BaseLoggingClass { if ( source != null && target != null ) { try { logger.info( "Create a MM from " + source + " to " + target ); - MirrorMaker mm = bridge.getMirrorMaker( source, target); - if ( mm == null ) { - mm = new MirrorMaker(source, target); - } + MirrorMaker mm = bridge.getNextMM( source, target); mm.addTopic(topic.getFqtn()); bridge.updateMirrorMaker(mm); } catch ( Exception ex ) { @@ -434,6 +451,7 @@ public class TopicService extends BaseLoggingClass { } + /* * Prior to 1707, we only supported EDGE_TO_CENTRAL replication. * This was determined automatically based on presence of edge publishers and central subscribers.