<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
           http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

  <!-- CamelContext with the twitter websocket example -->
  <camelContext id="twitter-camel" xmlns="http://camel.apache.org/schema/blueprint">

    <!-- use properties files for twitter codes -->
    <propertyPlaceholder id="placeholder" location="classpath:twitter.properties"/>

    <route id="twitter-route">
      <!-- consume from twitter search to get new tweets about gaga every 5th second -->
      <from uri="twitter://search?type=polling&amp;delay=5&amp;keywords=gaga
        &amp;accessToken={{access.token}}&amp;accessTokenSecret={{access.token-secret}}&amp;consumerKey={{consumer.key}}&amp;consumerSecret={{consumer.secret}}"/>

      <!-- log tweet to the log -->
      <to uri="log:tweet"/>

      <!-- and send tweet to the websocket component so its viewable in the web page -->
      <to uri="websocket://localhost:9090/camel-tweet?sendToAll=true&amp;staticResources=classpath:webapp"/>
    </route>

  </camelContext>

</blueprint>