awips2/edexOsgi/com.raytheon.uf.edex.datadelivery.retrieval/res/spring/retrieval-datadelivery.xml

145 lines
6.3 KiB
XML
Raw Normal View History

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="ddRetrievalDatabaseProperties"
class="com.raytheon.uf.edex.database.DatabasePluginProperties">
<property name="pluginFQN"
value="com.raytheon.uf.edex.datadelivery.retrieval" />
<property name="database" value="metadata" />
</bean>
<bean factory-bean="dbPluginRegistry" factory-method="register">
<constructor-arg value="com.raytheon.uf.edex.datadelivery.retrieval" />
<constructor-arg ref="ddRetrievalDatabaseProperties" />
</bean>
<bean id="subNotifyTask"
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.SubscriptionNotifyTask">
<constructor-arg ref="retrievalDao" />
</bean>
<!-- A RetrievalTask takes three constructor arguments:
1) How to find retrievals, in this case perform the actual retrieval and return it
2) What to do with found retrievals, in this case process it and send a notification event
3) How to complete retrievals, in this case update the database and send a notification event
-->
<bean id="opsnetRetrievalTask"
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalTask">
<constructor-arg value="OPSNET" />
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.PerformRetrievalsThenReturnFinder">
<constructor-arg value="OPSNET" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.StoreRetrievedData">
<constructor-arg value="directvm:dataDeliveryNotify" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalResponseCompleter">
<constructor-arg ref="subNotifyTask" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg ref="retrievalDao" />
</bean>
<!--
Comment out version above and uncomment this version to test out basic SBN directory drop-off and
pickup from a directory
-->
<!--
<bean id="opsnetRetrievalTask"
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalTask">
<constructor-arg value="OPSNET" />
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.PerformRetrievalsThenReturnFinder">
<constructor-arg value="OPSNET" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.SerializeRetrievedDataToDirectory">
<constructor-arg value="/awips2/crawl" />
</bean>
</constructor-arg>
<constructor-arg>
<util:constant
static-field="com.raytheon.uf.edex.datadelivery.retrieval.handlers.IRetrievalResponseCompleter.NULL" />
</constructor-arg>
<constructor-arg ref="retrievalDao" />
</bean>
-->
<bean id="sbnRetrievalTask"
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalTask">
<constructor-arg value="SBN" />
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.DeserializeRetrievedDataFromDirectory">
<constructor-arg value="/awips2/crawl" />
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.StoreRetrievedData">
<constructor-arg value="directvm:dataDeliveryNotify" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalResponseCompleter">
<constructor-arg ref="subNotifyTask" />
<constructor-arg ref="retrievalDao" />
</bean>
</constructor-arg>
<constructor-arg ref="retrievalDao" />
</bean>
<bean id="scheduledExecutorService" class="java.util.concurrent.Executors"
factory-method="newScheduledThreadPool">
<constructor-arg value="3" />
</bean>
<bean id="retrievalHandler"
class="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalHandler">
<constructor-arg ref="scheduledExecutorService" />
<constructor-arg ref="retrievalDao" />
<constructor-arg>
<util:list
value-type="com.raytheon.uf.edex.datadelivery.retrieval.handlers.RetrievalTask.RetrievalTask">
<ref bean="opsnetRetrievalTask" />
<ref bean="sbnRetrievalTask" />
</util:list>
</constructor-arg>
<constructor-arg ref="subNotifyTask" />
</bean>
<camelContext id="dataDeliveryNotify-camel"
xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="errorHandler">
<!-- Wake retrieval threads if were not running -->
<route id="notifyRetrieval">
<!-- If data delivery clustered, move this to topic -->
<from uri="directvm:notifyRetrieval" />
<bean ref="retrievalHandler" method="notify" />
</route>
<route id="dataDeliveryNotify">
<from uri="directvm:dataDeliveryNotify" />
<bean ref="toDataURI" method="toDataURI" />
<to uri="vm:stageNotification" />
</route>
</camelContext>
</beans>