/** * Create a new {@link RepositoryComposition} retaining current configuration and set {@code argumentConverter}. * * @param argumentConverter must not be {@literal null}. * @return the new {@link RepositoryComposition}. */ public RepositoryComposition withArgumentConverter(BiFunction<Method, Object[], Object[]> argumentConverter) { return new RepositoryComposition(fragments, methodLookup, argumentConverter); }
/** * Create a new {@link RepositoryComposition} retaining current configuration and set {@code methodLookup}. * * @param methodLookup must not be {@literal null}. * @return the new {@link RepositoryComposition}. */ public RepositoryComposition withMethodLookup(MethodLookup methodLookup) { return new RepositoryComposition(fragments, methodLookup, argumentConverter); }
/** * Create a new {@link RepositoryComposition} retaining current configuration and append {@link RepositoryFragments} * to the new composition. The resulting composition contains the appended {@link RepositoryFragments} as last * element. * * @param fragments must not be {@literal null}. * @return the new {@link RepositoryComposition}. */ public RepositoryComposition append(RepositoryFragments fragments) { return new RepositoryComposition(this.fragments.append(fragments), methodLookup, argumentConverter); }
/** * Create a {@link RepositoryComposition} from {@link RepositoryFragments} and {@link RepositoryMetadata} with * {@link MethodLookups#direct()) method lookup. * * @param fragments must not be {@literal null}. * @return the {@link RepositoryComposition} from {@link RepositoryFragments fragments}. */ public static RepositoryComposition of(RepositoryFragments fragments) { return new RepositoryComposition(fragments, MethodLookups.direct(), PASSTHRU_ARG_CONVERTER); }
/** * Create a new {@link RepositoryComposition} retaining current configuration and append {@link RepositoryFragment} to * the new composition. The resulting composition contains the appended {@link RepositoryFragment} as last element. * * @param fragment must not be {@literal null}. * @return the new {@link RepositoryComposition}. */ public RepositoryComposition append(RepositoryFragment<?> fragment) { return new RepositoryComposition(fragments.append(fragment), methodLookup, argumentConverter); }
/** * Create a {@link RepositoryComposition} from {@link RepositoryFragment fragments} with * {@link MethodLookups#direct()) method lookup. * * @param fragments must not be {@literal null}. * @return the {@link RepositoryComposition} from {@link RepositoryFragment fragments}. */ public static RepositoryComposition of(List<RepositoryFragment<?>> fragments) { return new RepositoryComposition(RepositoryFragments.from(fragments), MethodLookups.direct(), PASSTHRU_ARG_CONVERTER); }
/** * Create a {@link RepositoryComposition} for just a single {@code implementation} with {@link MethodLookups#direct()) * method lookup. * * @param implementation must not be {@literal null}. * @return the {@link RepositoryComposition} for a single {@code implementation}. */ public static RepositoryComposition just(Object implementation) { return new RepositoryComposition(RepositoryFragments.just(implementation), MethodLookups.direct(), PASSTHRU_ARG_CONVERTER); }