Skip to content

Commit

Permalink
Triaged the factory names in the builder interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
lyubomyr-shaydariv committed Sep 25, 2024
1 parent e070981 commit e8a8fb8
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 47 deletions.
30 changes: 15 additions & 15 deletions src/main/java/lsh/ext/gson/IBuilder1.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,7 @@ public R build() {
};
}

static <E, C extends Collection<E>> IBuilder1<E, C> of(final C collection) {
return of(collection::add, () -> collection);
}

static <E, C extends Collection<E>> Supplier<IBuilder1<E, C>> from(final Supplier<? extends C> collectionFactory) {
return () -> of(collectionFactory.get());
}

static <A1, R, CA> IBuilder1<A1, R> from(final Collector<? super A1, CA, ? extends R> collector) {
static <A1, R, CA> IBuilder1<A1, R> of(final Collector<? super A1, CA, ? extends R> collector) {
return new IBuilder1<>() {
private final Supplier<? extends CA> supplier = collector.supplier();
private final BiConsumer<? super CA, ? super A1> accumulator = collector.accumulator();
Expand All @@ -53,24 +45,32 @@ static <A1, R, CA> IBuilder1<A1, R> from(final Collector<? super A1, CA, ? exten

@Override
public void accept(final A1 a1) {
if ( !isInitialized ) {
ca = supplier.get();
isInitialized = true;
}
accumulator.accept(ca, a1);
accumulator.accept(createOrGet(), a1);
}

@Override
public R build() {
return finisher.apply(createOrGet());
}

private CA createOrGet() {
if ( !isInitialized ) {
ca = supplier.get();
isInitialized = true;
}
return finisher.apply(ca);
return ca;
}
};
}

static <E, C extends Collection<E>> IBuilder1<E, C> fromCollection(final C collection) {
return of(collection::add, () -> collection);
}

static <E, C extends Collection<E>> Supplier<IBuilder1<E, C>> fromCollection(final Supplier<? extends C> collectionFactory) {
return () -> fromCollection(collectionFactory.get());
}

interface ILookup<A1, R> {

Supplier<IBuilder1<A1, R>> lookup(TypeToken<? super R> typeToken);
Expand Down
30 changes: 15 additions & 15 deletions src/main/java/lsh/ext/gson/IBuilder2.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,7 @@ public R build() {
};
}

static <K, V, M extends Map<K, V>> IBuilder2<K, V, M> of(final M map) {
return of(map::put, () -> map);
}

static <K, V, M extends Map<K, V>> Supplier<IBuilder2<K, V, M>> from(final Supplier<? extends M> factory) {
return () -> of(factory.get());
}

static <A1, A2, R, CT, CA> IBuilder2<A1, A2, R> from(
static <A1, A2, R, CT, CA> IBuilder2<A1, A2, R> of(
final Collector<? super CT, CA, ? extends R> collector,
final BiFunction<? super A1, ? super A2, ? extends CT> toElementType
) {
Expand All @@ -56,25 +48,33 @@ static <A1, A2, R, CT, CA> IBuilder2<A1, A2, R> from(

@Override
public void accept(final A1 a1, final A2 a2) {
if ( !isInitialized ) {
ca = supplier.get();
isInitialized = true;
}
final CT ct = toElementType.apply(a1, a2);
accumulator.accept(ca, ct);
accumulator.accept(createOrGet(), ct);
}

@Override
public R build() {
return finisher.apply(createOrGet());
}

private CA createOrGet() {
if ( !isInitialized ) {
ca = supplier.get();
isInitialized = true;
}
return finisher.apply(ca);
return ca;
}
};
}

static <K, V, M extends Map<K, V>> IBuilder2<K, V, M> fromMap(final M map) {
return of(map::put, () -> map);
}

static <K, V, M extends Map<K, V>> Supplier<IBuilder2<K, V, M>> fromMap(final Supplier<? extends M> factory) {
return () -> fromMap(factory.get());
}

interface ILookup<A1, A2, R> {

Supplier<IBuilder2<A1, A2, R>> lookup(TypeToken<? super R> typeToken);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ public static <K, V> Supplier<IBuilder2<K, V, BiMap<K, V>>> defaultBuilderFactor
@SuppressWarnings({ "unchecked", "rawtypes" })
final Class<? extends BiMap> rawType = (Class<? extends BiMap>) typeToken.getRawType();
if ( rawType == HashBiMap.class ) {
return () -> IBuilder2.of(HashBiMap.create());
return () -> IBuilder2.fromMap(HashBiMap.create());
}
if ( ImmutableBiMap.class.isAssignableFrom(rawType) ) {
return ImmutableBuilder::forBiMap;
}
return () -> IBuilder2.of(HashBiMap.create());
return () -> IBuilder2.fromMap(HashBiMap.create());
}

public static final ITypeAdapterFactory<Multimap<String, Object>> defaultForMultimap = forMultimap(GuavaCollectTypeAdapterFactory::defaultBuilderFactoryForMultimap);
Expand Down Expand Up @@ -114,15 +114,15 @@ public static <E> Supplier<IBuilder1<E, Multiset<E>>> defaultBuilderFactoryForMu
@SuppressWarnings({ "unchecked", "rawtypes" })
final Class<? extends Multiset> rawType = (Class<? extends Multiset>) typeToken.getRawType();
if ( rawType == HashMultiset.class ) {
return () -> IBuilder1.of(HashMultiset.create());
return () -> IBuilder1.fromCollection(HashMultiset.create());
}
if ( rawType == LinkedHashMultiset.class ) {
return () -> IBuilder1.of(LinkedHashMultiset.create());
return () -> IBuilder1.fromCollection(LinkedHashMultiset.create());
}
if ( ImmutableMultiset.class.isAssignableFrom(rawType) ) {
return ImmutableBuilder::forMultiset;
}
return () -> IBuilder1.of(HashMultiset.create());
return () -> IBuilder1.fromCollection(HashMultiset.create());
}

public static final ITypeAdapterFactory<Table<String, String, Object>> defaultForTable = forTable(GuavaCollectTypeAdapterFactory::defaultBuilderFactoryForTable, Function.identity(), Function.identity(), Function.identity(), Function.identity());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ public static <E> ITypeAdapterFactory<Collection<E>> forCoercedCollection(final
public static <E> Supplier<IBuilder1<E, Collection<E>>> defaultBuilderFactoryForCoercedCollection(final TypeToken<? super Collection<E>> typeToken) {
final Class<? super Collection<E>> rawType = typeToken.getRawType();
if ( rawType.isAssignableFrom(List.class) ) {
return () -> IBuilder1.of(new ArrayList<>());
return () -> IBuilder1.fromCollection(new ArrayList<>());
}
if ( rawType.isAssignableFrom(Set.class) ) {
return () -> IBuilder1.of(new HashSet<>());
return () -> IBuilder1.fromCollection(new HashSet<>());
}
return () -> IBuilder1.of(new ArrayList<>());
return () -> IBuilder1.fromCollection(new ArrayList<>());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,12 @@ public static <V> Supplier<IBuilder2<String, V, BidiMap<String, V>>> defaultBuil
@SuppressWarnings("unchecked")
final Class<? extends BidiMap<?, ?>> rawType = (Class<? extends BidiMap<?, ?>>) typeToken.getRawType();
if ( DualHashBidiMap.class.isAssignableFrom(rawType) ) {
return () -> IBuilder2.of(new DualHashBidiMap<>());
return () -> IBuilder2.fromMap(new DualHashBidiMap<>());
}
if ( DualLinkedHashBidiMap.class.isAssignableFrom(rawType) ) {
return () -> IBuilder2.of(new DualLinkedHashBidiMap<>());
return () -> IBuilder2.fromMap(new DualLinkedHashBidiMap<>());
}
return () -> IBuilder2.of(new DualHashBidiMap<>());
return () -> IBuilder2.fromMap(new DualHashBidiMap<>());
}

public static ITypeAdapterFactory<MultiSet<Object>> defaultForMultiSet = forMultiSet(ApacheCommonsCollections4TypeAdapterFactory::defaultBuilderForMultiSet);
Expand All @@ -91,9 +91,9 @@ public static <E> Supplier<IBuilder1<E, MultiSet<E>>> defaultBuilderForMultiSet(
@SuppressWarnings("unchecked")
final Class<? extends MultiSet<?>> rawType = (Class<? extends MultiSet<?>>) typeToken.getRawType();
if ( HashMultiSet.class.isAssignableFrom(rawType) ) {
return () -> IBuilder1.of(new HashMultiSet<>());
return () -> IBuilder1.fromCollection(new HashMultiSet<>());
}
return () -> IBuilder1.of(new HashMultiSet<>());
return () -> IBuilder1.fromCollection(new HashMultiSet<>());
}

public static final ITypeAdapterFactory<MultiValuedMap<String, Object>> defaultForMultiValueMap = forMultiValueMap(ApacheCommonsCollections4TypeAdapterFactory::defaultBuilderForMultiValuedMap);
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/lsh/ext/gson/Container1TypeAdapterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void testWriteReadRoundTrip()
throws IOException {
final TypeAdapter<Queue<String>> unit = Container1TypeAdapter.getInstance(
TestTypeAdapters.stringTypeAdapter,
IBuilder1.<String, Queue<String>>from(ArrayDeque::new)
IBuilder1.<String, Queue<String>>fromCollection(ArrayDeque::new)
);
final List<String> data = List.of("foo", "bar", "baz");
final Queue<String> before = new ArrayDeque<>(data);
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/lsh/ext/gson/Container2TypeAdapterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void testWriteReadRoundTrip()
Map.Entry::getValue,
String::valueOf,
Integer::valueOf,
IBuilder2.<Integer, String, Map<Integer, String>>from(HashMap::new)
IBuilder2.<Integer, String, Map<Integer, String>>fromMap(HashMap::new)
);
final Map<Integer, String> before = ImmutableMap.of(1, "foo", 2, "bar", 3, "baz"); // Google Guava immutable map preserves order
final String json = unit.toJson(before);
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/lsh/ext/gson/IBuilder1Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public final class IBuilder1Test {
@Test
public void testFromCollector() {
final Collector<String, ?, ? extends Map<String, Integer>> collector = ImmutableMap.toImmutableMap(Function.identity(), String::length);
final IBuilder1<String, Map<String, Integer>> unit = IBuilder1.from(collector);
final IBuilder1<String, Map<String, Integer>> unit = IBuilder1.of(collector);
unit.accept("Lorem");
unit.accept("ipsum");
unit.accept("dolor");
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/lsh/ext/gson/IBuilder2Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public void testFromCollector() {
s -> Long.valueOf(s.length() * 1000),
String::length
);
final IBuilder2<Integer, Long, ? extends Table<String, Long, Integer>> unit = IBuilder2.from(collector, (i1, i2) -> i1 + ":" + i2);
final IBuilder2<Integer, Long, ? extends Table<String, Long, Integer>> unit = IBuilder2.of(collector, (i1, i2) -> i1 + ":" + i2);
unit.accept(1, 2L);
unit.accept(3, 4L);
final Table<String, Long, Integer> actual = unit.build();
Expand Down

0 comments on commit e8a8fb8

Please sign in to comment.