Package com.opengamma.web.analytics

Source Code of com.opengamma.web.analytics.ErrorManager

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.analytics;

import java.util.List;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicLong;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.opengamma.DataNotFoundException;
import com.opengamma.util.ArgumentChecker;

/**
* Contains details of the errors that have occurred in the server for a view.
*/
/* package */ class ErrorManager {

  private static final Logger s_logger = LoggerFactory.getLogger(ErrorManager.class);

  private final ConcurrentMap<Long, ErrorInfo> _errors = Maps.newConcurrentMap();
  private final AtomicLong _nextId = new AtomicLong(0);
  private final String _errorId;

  /* package */ ErrorManager(String errorId) {
    _errorId = errorId;
  }

  /**
   * Adds information about a new error.
   * @param throwable The throwable that triggered the error
   * @return The ID of the error
   */
  /* package */ String add(Throwable throwable) {
    ArgumentChecker.notNull(throwable, "throwable");
    long id = _nextId.getAndIncrement();
    _errors.put(id, new ErrorInfo(id, throwable));
    s_logger.info("Added error with ID {}, throwable {}", id, throwable.getMessage());
    return _errorId;
  }

  /**
   * Returns information about an error.
   * @return The error details
   * @throws DataNotFoundException If the ID is unknown
   */
  /* package */ List<ErrorInfo> get() {
    List<ErrorInfo> errors = Lists.newArrayList(_errors.values());
    s_logger.info("Returning errors {}", errors);
    return errors;
  }

  /**
   * Deletes an error's details when the client is no longer interested in it.
   * @param id The ID of the error
   * @throws DataNotFoundException If the ID is unknown
   */
  /* package */ void delete(long id) {
    ErrorInfo error = _errors.remove(id);
    if (error == null) {
      throw new DataNotFoundException("No error found with ID " + id);
    }
  }
}
TOP

Related Classes of com.opengamma.web.analytics.ErrorManager

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.