Package org.springframework.xd.analytics.metrics.integration

Source Code of org.springframework.xd.analytics.metrics.integration.RichGaugeHandler

/*
* Copyright 2002-2013 the original author or authors.
*
* Licensed 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 org.springframework.xd.analytics.metrics.integration;

import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessagingException;
import org.springframework.util.Assert;
import org.springframework.xd.analytics.metrics.core.RichGauge;
import org.springframework.xd.analytics.metrics.core.RichGaugeRepository;

/**
* @author David Turanski
*
*/
public class RichGaugeHandler {

  private final RichGaugeRepository richGaugeRepository;

  private final String name;

  public RichGaugeHandler(RichGaugeRepository richGaugeRepository, String name, double alpha) {
    Assert.notNull(richGaugeRepository, "Rich Gauge Service can not be null");
    Assert.notNull(name, "Rich Gauge Name can not be null");
    this.richGaugeRepository = richGaugeRepository;
    this.name = name;
    this.richGaugeRepository.save(new RichGauge(name).setAlpha(alpha));
  }

  @ServiceActivator
  public void process(Message<?> message) {
    if (message != null) {
      double value = convertToDouble(message.getPayload());
      this.richGaugeRepository.setValue(name, value);
    }
  }

  /**
   * @param payload
   * @return double value
   */
  double convertToDouble(Object payload) {
    if (payload != null) {
      if (payload instanceof Number) {
        return ((Number) payload).doubleValue();
      }
      else if (payload instanceof String) {
        try {
          return Double.parseDouble((String) payload);
        }
        catch (Exception e) {
          throw new MessagingException("cannot convert payload to double", e);
        }
      }
    }
    throw new MessagingException("cannot convert "
        + (payload == null ? "null" : payload.getClass().getName() + " to double"));
  }

}
TOP

Related Classes of org.springframework.xd.analytics.metrics.integration.RichGaugeHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.