Example #1
0
  private <E extends Event> T getValue(final E e) {
    if (getters.containsKey(e.getClass())) {
      final Getter<? extends T, ? super E> g =
          (Getter<? extends T, ? super E>) getters.get(e.getClass());
      return g == null ? null : g.get(e);
    }

    for (final Entry<Class<? extends Event>, SerializableGetter<? extends T, ?>> p :
        getters.entrySet()) {
      if (p.getKey().isAssignableFrom(e.getClass())) {
        getters.put(e.getClass(), p.getValue());
        return p.getValue() == null ? null : ((Getter<? extends T, ? super E>) p.getValue()).get(e);
      }
    }

    getters.put(e.getClass(), null);

    return null;
  }