// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// This program and the accompanying materials are made available
// under the terms of the Eclipse Public License v2.0 which accompanies
// this distribution, and is available at
// https://www.eclipse.org/legal/epl-2.0/

package org.eclipse.wst.jsdt.chromium.internal.protocolparser.test;

/**
 * Initializes and holds a value. If there has been a problem with initialization, throws an
 * exception from getter.
 */
class InitializedValue<T> {
  private final T value;
  private final RuntimeException exception;

  InitializedValue(Initializer<T> initializer) {
    T value = null;
    RuntimeException exception = null;
    try {
      value = initializer.calculate();
    } catch (RuntimeException e) {
      exception = e;
    }
    this.value = value;
    this.exception = exception;
  }

  T get() {
    if (exception != null) {
      throw new RuntimeException("Value has not been properly initialized, see saved cause",
          exception);
    }
    return value;
  }

  interface Initializer<T> {
    T calculate();
  }
}
