public Observer getObserver()

in modules/core/src/main/java/org/apache/fluo/core/observer/v1/ObserversV1.java [77:114]


  public Observer getObserver(Column col) {

    List<Observer> observerList;
    observerList = getObserverList(col);

    synchronized (observerList) {
      if (!observerList.isEmpty()) {
        return observerList.remove(observerList.size() - 1);
      }
    }

    Observer observer = null;

    org.apache.fluo.api.config.ObserverSpecification observerConfig = strongObservers.get(col);
    if (observerConfig == null) {
      observerConfig = weakObservers.get(col);
    }

    if (observerConfig != null) {
      try {
        observer =
            Class.forName(observerConfig.getClassName()).asSubclass(Observer.class).newInstance();
        observer.init(new ObserverContext(env, observerConfig.getConfiguration()));
      } catch (RuntimeException e) {
        throw e;
      } catch (Exception e) {
        throw new RuntimeException(e);
      }

      if (!observer.getObservedColumn().getColumn().equals(col)) {
        throw new IllegalStateException(
            "Mismatch between configured column and class column " + observerConfig.getClassName()
                + " " + col + " " + observer.getObservedColumn().getColumn());
      }
    }

    return observer;
  }