<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
	xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0"
	xsi:schemaLocation="
		http://www.osgi.org/xmlns/blueprint/v1.0.0 
		http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd

		http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
		http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd

		http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0
		http://aries.apache.org/schemas/blueprint-ext/blueprint-ext-1.1.xsd
">

	<cm:property-placeholder id="syslogHandlerKafkaProperties" persistent-id="org.opennms.netmgt.syslog.handler.kafka" placeholder-prefix="$[" placeholder-suffix="]" update-strategy="none">
		<cm:default-properties>
			<cm:property name="kafkahost" value="127.0.0.1" />
			<cm:property name="kafkaport" value="9092" />
			<cm:property name="kafkatopic" value="syslog" />
		</cm:default-properties>
	</cm:property-placeholder>

	<bean id="syslogConnectionHandlerCamel" class="org.opennms.netmgt.syslogd.SyslogConnectionHandlerCamelImpl">
		<argument value="seda:handleMessage"/>
	</bean>

	<!-- Camel Event marshalling processor -->
	<bean id="marshaller" class="org.opennms.core.camel.JaxbUtilsMarshalProcessor">
		<argument value="org.opennms.netmgt.syslogd.SyslogConnection" />
	</bean>

	<service interface="org.opennms.netmgt.syslogd.SyslogConnectionHandler" ref="syslogConnectionHandlerCamel"/>

	<camelContext id="syslogConnectionHandler" xmlns="http://camel.apache.org/schema/blueprint">
		<propertyPlaceholder id="properties" location="blueprint:syslogHandlerKafkaProperties" />
		<route id="handleSyslogKafka">
			<from uri="seda:handleMessage" />
			<convertBodyTo type="org.opennms.netmgt.syslogd.SyslogConnection"/>
			<setHeader headerName="kafka.PARTITION_KEY">
				<!-- TODO: Partition by remote address -->
				<!-- <simple>${body.remoteAddress}</simple> -->
				<simple>${body.sourceAddress}</simple>
			</setHeader>
			
			<bean ref="marshaller"/>
			
			<!-- Have to use StringEncoder because of camel bug CAMEL-8790 -->
			<to uri="kafka:{{kafkahost}}:{{kafkaport}}?topic={{kafkatopic}}&amp;serializerClass=kafka.serializer.StringEncoder"/>
		</route>
	</camelContext>

</blueprint>
