2 * ===============================LICENSE_START======================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============================LICENSE_END===========================================
21 package org.openecomp.dcae.apod.analytics.dmaap;
23 import com.google.inject.AbstractModule;
24 import com.google.inject.Guice;
25 import com.google.inject.Injector;
26 import org.openecomp.dcae.apod.analytics.dmaap.domain.config.DMaaPMRPublisherConfig;
27 import org.openecomp.dcae.apod.analytics.dmaap.domain.config.DMaaPMRSubscriberConfig;
28 import org.openecomp.dcae.apod.analytics.dmaap.module.AnalyticsDMaaPModule;
29 import org.openecomp.dcae.apod.analytics.dmaap.service.publisher.DMaaPMRPublisher;
30 import org.openecomp.dcae.apod.analytics.dmaap.service.publisher.DMaaPMRPublisherFactory;
31 import org.openecomp.dcae.apod.analytics.dmaap.service.subscriber.DMaaPMRSubscriber;
32 import org.openecomp.dcae.apod.analytics.dmaap.service.subscriber.DMaaPMRSubscriberFactory;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
36 import javax.annotation.Nonnull;
39 * Creates pre injected implementations for {@link DMaaPMRPublisher} and {@link DMaaPMRSubscriber}
42 * <p>Create an instance of DMaaP MR Factory</p>
44 * DMaaPFactory dmaapFactory = DMaaPFactory.initalize()
46 * <p>Create a new DMaaP MR Publisher</p>
48 * DMaaPMRPublisher publisher = dmaapFactory.createPublisher(publisherConfig)
50 * <p>Create new DMaaP MR Subscriber</p>
52 * DMaaPMRSubscriber subscriber = dmaapFactory.createSubscriber(subscriberConfig)
55 * <strong>All Clients must use this Factory to initalize DMaaP Message Router Publishers and Subscribers</strong>
58 * @author Rajiv Singla . Creation Date: 10/20/2016.
60 public class DMaaPMRFactory {
62 private static final Logger LOG = LoggerFactory.getLogger(DMaaPMRFactory.class);
64 private final Injector injector;
66 public DMaaPMRFactory(AbstractModule guiceModule) {
67 injector = Guice.createInjector(guiceModule);
71 * Returns configured instance of {@link DMaaPMRPublisher}
73 * @param publisherConfig Publisher Config
74 * @return configured instance of DMaaP MR Publisher
76 public DMaaPMRPublisher createPublisher(@Nonnull DMaaPMRPublisherConfig publisherConfig) {
77 final DMaaPMRPublisherFactory publisherFactory = injector.getInstance(DMaaPMRPublisherFactory.class);
78 LOG.debug("Creating new DMaaP MR Publisher Instance with configuration: {}", publisherConfig);
79 final DMaaPMRPublisher dMaaPMRPublisher = publisherFactory.create(publisherConfig);
80 LOG.info("Created new DMaaP MR Publisher Instance. Publisher creation time: {}",
81 dMaaPMRPublisher.getPublisherCreationTime());
82 return dMaaPMRPublisher;
86 * Returns configured instance of {@link DMaaPMRSubscriber}
88 * @param subscriberConfig Subscriber Config
89 * @return configured instance of DMaaP MR Subscriber
91 public DMaaPMRSubscriber createSubscriber(@Nonnull DMaaPMRSubscriberConfig subscriberConfig) {
92 final DMaaPMRSubscriberFactory subscriberFactory = injector.getInstance(DMaaPMRSubscriberFactory.class);
93 LOG.debug("Creating new DMaaP MR Subscriber Instance with configuration: {}", subscriberConfig);
94 final DMaaPMRSubscriber dMaaPMRSubscriber = subscriberFactory.create(subscriberConfig);
95 LOG.info("Created new DMaaP MR Subscriber Instance. Subscriber creation time: {}",
96 dMaaPMRSubscriber.getSubscriberCreationTime());
97 return dMaaPMRSubscriber;
101 * Creates an instance of {@link DMaaPMRFactory}
103 * @return {@link DMaaPMRFactory} factory instance
105 public static DMaaPMRFactory create() {
106 final DMaaPMRFactory dMaaPMRFactory = new DMaaPMRFactory(new AnalyticsDMaaPModule());
107 LOG.info("Created new instance of DMaaP MR Factory");
108 return dMaaPMRFactory;