private Optional<Class<? extends Condition>> getConditionClass(SingleConditionBean conditionBean, boolean requireContextFree, boolean inline) { Optional<Class<? extends Condition>> optionalClass = Optional.empty(); if (isApplicableToContext(requireContextFree) && this.conditionName.equals(conditionBean.getCondition()) && isApplicableToParameters(conditionBean.getParams()) && (!inline || inlineSupport)) { optionalClass = Optional.of(conditionClass); } return optionalClass; }
private Optional<Class<? extends Condition>> getConditionClass(SingleConditionBean conditionBean, boolean requireContextFree, boolean inline) { return conditionAppliesTo(conditionBean, requireContextFree, inline) ? Optional.of(conditionClass) : Optional.empty(); }
private Optional<Class<? extends Condition>> getConditionClass(String conditionName, Function<ConnectConditionClassResolver.Entry, Optional<Class<? extends Condition>>> mapper) { List<ConnectConditionClassResolver> resolvers = pluginAccessor.getEnabledModulesByClass(ConnectConditionClassResolver.class); return resolvers.stream() .flatMap(resolver -> resolver.getEntriesForConditionName(conditionName).stream()) .filter(entry -> entry.getConditionName().equals(conditionName)) .map(mapper) .filter(Optional::isPresent) .findFirst() .flatMap(Function.identity()); } }
/** * Builds the resolver entry. * * @return the resolver entry */ public Entry build() { return new Entry(this); } }
/** * Returns a condition class for use <b>where no context is available</b>, if this entry applies to the given * condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForNoContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, true, false); }
/** * Builds the resolver entry. * * @return the resolver entry */ public Entry build() { return new Entry(this); } }
/** * Returns a condition class for use <b>where the full host application context is available</b>, if this entry * applies to the given condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForHostContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, false); }
/** * Builds the resolver entry. * * @return the resolver entry */ public Entry build() { return new Entry(this); } }
/** * Returns a condition class for use <b>where the full host application context is available</b>, if this entry * applies to the given condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForHostContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, false, false); }
@Override public Optional<Class<? extends Condition>> getConditionClassForNoContext(SingleConditionBean conditionBean) { return getConditionClass(resolverEntry -> resolverEntry.getConditionClassForNoContext(conditionBean)); }
@Override public Optional<Class<? extends Condition>> getConditionClassForNoContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean.getCondition(), resolverEntry -> resolverEntry.getConditionClassForNoContext(conditionBean)); }
@Override public Optional<Class<? extends Condition>> getConditionClassForInline(SingleConditionBean conditionBean) { return getConditionClass(conditionBean.getCondition(), resolverEntry -> resolverEntry.getConditionClassForInline(conditionBean)); }
private boolean conditionAppliesTo(SingleConditionBean conditionBean, boolean requireContextFree, boolean inline) { return isApplicableToContext(conditionBean, requireContextFree) && this.conditionName.equals(conditionBean.getCondition()) && isApplicableToParameters(conditionBean.getParams()) && (!inline || inlineSupport); }
@Override public Optional<Class<? extends Condition>> getConditionClassForInline(SingleConditionBean conditionBean) { return getConditionClass(resolverEntry -> resolverEntry.getConditionClassForInline(conditionBean)); }
@Override public Optional<Class<? extends Condition>> getConditionClassForHostContext(SingleConditionBean conditionBean) { return getConditionClass(resolverEntry -> resolverEntry.getConditionClassForHostContext(conditionBean)); }
@Override public Optional<Class<? extends Condition>> getConditionClassForHostContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean.getCondition(), resolverEntry -> resolverEntry.getConditionClassForHostContext(conditionBean)); }
/** * Returns a condition class for use <b>where the full host application context is available</b>, if this entry * applies to the given condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForHostContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, false, false); }
/** * Returns a condition class for use <b>as an inline condition</b>, if this entry * applies to the given condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForInline(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, false, true); }
/** * Returns a condition class for use <b>where no context is available</b>, if this entry applies to the given * condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForNoContext(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, true); }
/** * Returns a condition class for use <b>as an inline condition</b>, if this entry * applies to the given condition element. * * @param conditionBean a condition element from an add-on descriptor * @return the condition class or {@link Optional#empty()} */ public Optional<Class<? extends Condition>> getConditionClassForInline(SingleConditionBean conditionBean) { return getConditionClass(conditionBean, false, true); }