/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Nonnull public <T> T as (final @Nonnull Class<T> clazz) { return ElmoAsSupport.as(entity, clazz); // FIXME // return getLookup().lookup(As.class);.as(clazz); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Nonnull public <T> T as (final @Nonnull Class<T> clazz, final @Nonnull NotFoundBehaviour<T> notFoundBehaviour) { return ElmoAsSupport.as(entity, clazz, notFoundBehaviour); // FIXME // return getLookup().lookup(As.class).as(clazz, notFoundBehaviour); }
/*************************************************************************** * * **************************************************************************/ @Override @CheckForNull public <T> T lookup (@Nonnull final Class<T> clazz) { return ElmoAsSupport.as(owner, clazz, new NotFoundBehaviour<T>() { public T run (@Nonnull final Throwable t) { return null; } }); }
/*************************************************************************** * * **************************************************************************/ @Nonnull public static <T> T as (@Nonnull final Object owner, @Nonnull final Class<T> clazz) { return as(owner, clazz, new NotFoundBehaviour<T>() { @Override public T run (@Nonnull final Throwable t) { throw new AsException(clazz, t); } }); }
/*************************************************************************** * * **************************************************************************/ @Nonnull public <T> T as (@Nonnull final Class<T> clazz, @Nonnull final NotFoundBehaviour<T> notFoundBehaviour) { Object as = asMap.get(clazz); if (as != null) { return (T)as; } as = ElmoAsSupport.as(owner, clazz); asMap.put(clazz, as); // FIXME: should you cache the result from notFoundBehaviour? return (T)((as != null) ? as : notFoundBehaviour.run(null)); } }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public <T> T as (@Nonnull final Class<T> clazz, @Nonnull final As.NotFoundBehaviour<T> notFoundBehaviour) { // final T as = getLookup().lookup(clazz); // FIXME: should be injected by the factory if (clazz.equals(SkosConcept.class) || clazz.equals(MutableDisplayable.class) || clazz.equals(Displayable.class)) { return (T)skosConcept; } if (clazz.equals(OwlThing.class)) { return (T)owlThing; } // END FIXME return ElmoAsSupport.as(this, clazz, notFoundBehaviour); // return (as != null) ? as : ElmoAsSupport.as(this, clazz, notFoundBehaviour); }