de.taimos.camel_cosm.CosmProducer.java Source code

Java tutorial

Introduction

Here is the source code for de.taimos.camel_cosm.CosmProducer.java

Source

/**
 * 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.
 */
package de.taimos.camel_cosm;

import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultProducer;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * The Pachube producer.
 */
public class CosmProducer extends DefaultProducer {

    private static final transient Logger LOG = LoggerFactory.getLogger(CosmProducer.class);

    private final CosmEndpoint endpoint;

    private final String url;

    /**
     * @param endpoint
     */
    public CosmProducer(CosmEndpoint endpoint) {
        super(endpoint);
        this.endpoint = endpoint;

        this.url = "http://api.cosm.com/v2/feeds/" + endpoint.getFeed() + "/datastreams/"
                + endpoint.getDatastream();
        CosmProducer.LOG.info(this.url);

    }

    @Override
    public void process(Exchange exchange) throws Exception {
        String key = this.endpoint.getApiKey();

        final String keyHeader = exchange.getIn().getHeader("CosmKey", String.class);
        if (keyHeader != null) {
            key = keyHeader;
        }

        if (key == null) {
            throw new RuntimeCamelException("No ApiKey present!");
        }

        final HttpClient httpclient = new DefaultHttpClient();
        final HttpPut put = new HttpPut(this.url);
        put.setHeader("X-PachubeApiKey", key);
        put.setEntity(new StringEntity(exchange.getIn().getBody(String.class)));

        final HttpResponse response = httpclient.execute(put);
        final int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode >= 400) {
            throw new RuntimeCamelException("Error: " + response.getStatusLine().getReasonPhrase());
        }
        CosmProducer.LOG.info(response.toString());
    }
}