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