exchanging new version yang models on firmware upgrade
[oam/tr069-adapter.git] / netconf-server / src / main / java / org / commscope / tr069adapter / netconf / boot / NetConfServiceBooter.java
index b4ea478..9614865 100644 (file)
 \r
 package org.commscope.tr069adapter.netconf.boot;\r
 \r
+import java.util.Arrays;\r
+import javax.jms.ConnectionFactory;\r
+import org.apache.activemq.ActiveMQConnectionFactory;\r
+import org.apache.activemq.RedeliveryPolicy;\r
+import org.apache.activemq.broker.BrokerService;\r
+import org.apache.activemq.broker.region.policy.RedeliveryPolicyMap;\r
+import org.apache.activemq.command.ActiveMQQueue;\r
 import org.commscope.tr069adapter.netconf.server.NetConfServerManagerImpl;\r
+import org.commscope.tr069adapter.netconf.server.utils.NetConfServerConstants;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.springframework.boot.SpringApplication;\r
 import org.springframework.boot.autoconfigure.SpringBootApplication;\r
 import org.springframework.boot.autoconfigure.domain.EntityScan;\r
+import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer;\r
 import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.annotation.Bean;\r
 import org.springframework.context.annotation.ComponentScan;\r
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;\r
+import org.springframework.jms.annotation.EnableJms;\r
+import org.springframework.jms.config.DefaultJmsListenerContainerFactory;\r
+import org.springframework.jms.config.JmsListenerContainerFactory;\r
+import org.springframework.jms.listener.MessageListenerContainer;\r
+import org.springframework.jms.support.converter.MappingJackson2MessageConverter;\r
+import org.springframework.jms.support.converter.MessageConverter;\r
+import org.springframework.jms.support.converter.MessageType;\r
 import org.springframework.retry.annotation.EnableRetry;\r
 \r
+@EnableJms\r
 @SpringBootApplication\r
 @ComponentScan({"org.commscope.tr069adapter.netconf", "org.opendaylight.netconf.test",\r
     "org.commscope.tr069adapter.common"})\r
@@ -57,4 +75,61 @@ public class NetConfServiceBooter {
   public static ApplicationContext getApplicationContext() {\r
     return appContext;\r
   }\r
+\r
+  /*\r
+   * JMS Configuration Defining the connection factories used in the application Setting the\r
+   * Re-delivery configuration goes here\r
+   */\r
+  @Bean\r
+  public BrokerService broker() throws Exception {\r
+    final BrokerService broker = new BrokerService();\r
+    broker.addConnector("tcp://localhost:61616");\r
+    broker.addConnector("vm://localhost");\r
+    broker.setPersistent(false);\r
+    return broker;\r
+  }\r
+\r
+  @Bean\r
+  public ConnectionFactory jmsConnectionFactory() {\r
+    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();\r
+    connectionFactory\r
+        .setTrustedPackages(Arrays.asList("org.commscope", "org.commscope.tr069adapter"));\r
+    connectionFactory.setMaxThreadPoolSize(7);\r
+\r
+    ActiveMQQueue notificationQueue = new ActiveMQQueue(NetConfServerConstants.NETCONF_NOTIFICATION_Q);\r
+    RedeliveryPolicy notificationQueuePolicy = new RedeliveryPolicy();\r
+    notificationQueuePolicy.setInitialRedeliveryDelay(2* 60 * 1000L);\r
+    notificationQueuePolicy.setUseCollisionAvoidance(true);\r
+    notificationQueuePolicy.setRedeliveryDelay(2* 60 * 1000L);\r
+    notificationQueuePolicy.setUseExponentialBackOff(false);\r
+    notificationQueuePolicy.setMaximumRedeliveries(3);\r
+    notificationQueuePolicy.setDestination(notificationQueue);\r
+\r
+    RedeliveryPolicyMap rdMap = connectionFactory.getRedeliveryPolicyMap();\r
+    rdMap.put(notificationQueue, notificationQueuePolicy);\r
+    return connectionFactory;\r
+  }\r
+\r
+  @Bean\r
+  public JmsListenerContainerFactory<MessageListenerContainer> netConfNotificationCF(\r
+      ConnectionFactory connectionFactory,\r
+      DefaultJmsListenerContainerFactoryConfigurer configurer) {\r
+    return handleJMSCommonConfiguration(connectionFactory, configurer);\r
+  }\r
+\r
+  public JmsListenerContainerFactory handleJMSCommonConfiguration(\r
+      ConnectionFactory connectionFactory,\r
+      DefaultJmsListenerContainerFactoryConfigurer configurer) {\r
+    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();\r
+    configurer.configure(factory, connectionFactory);\r
+    return factory;\r
+  }\r
+\r
+  @Bean\r
+  public MessageConverter jacksonJmsMessageConverter() {\r
+    MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();\r
+    converter.setTargetType(MessageType.TEXT);\r
+    converter.setTypeIdPropertyName("_type");\r
+    return converter;\r
+  }\r
 }\r