Skip to content

Commit 6e39e3c

Browse files
committed
Clean up guice modules
1 parent 61180bf commit 6e39e3c

File tree

16 files changed

+152
-410
lines changed

16 files changed

+152
-410
lines changed

anvil-api/src/main/java/org/anvilpowered/anvil/api/Anvil.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@
1919
package org.anvilpowered.anvil.api;
2020

2121
import com.google.common.base.Preconditions;
22-
import com.google.inject.Binder;
2322
import com.google.inject.Binding;
2423
import com.google.inject.Injector;
2524
import com.google.inject.Module;
2625
import org.anvilpowered.anvil.api.coremember.CoreMemberManager;
2726
import org.anvilpowered.anvil.api.coremember.CoreMemberRepository;
28-
import org.anvilpowered.anvil.api.misc.BindingExtensions;
2927
import org.anvilpowered.anvil.api.registry.Registry;
3028
import org.anvilpowered.anvil.base.plugin.BasePlugin;
3129

@@ -44,10 +42,6 @@ public class Anvil extends BasePlugin {
4442
super(name, rootInjector, module);
4543
}
4644

47-
public static BindingExtensions getBindingExtensions(Binder binder) {
48-
return getServiceManager().provide(BindingExtensions.class, binder);
49-
}
50-
5145
public static Environment.Builder getEnvironmentBuilder() {
5246
return getServiceManager().provide(Environment.Builder.class);
5347
}

anvil-api/src/main/java/org/anvilpowered/anvil/api/datastore/DBComponent.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
package org.anvilpowered.anvil.api.datastore;
2020

21-
import org.anvilpowered.anvil.api.misc.BindingExtensions;
22-
2321
import java.util.Optional;
2422

2523
/**
@@ -28,7 +26,6 @@
2826
* @see Manager
2927
* @see Repository
3028
* @see CacheService
31-
* @see BindingExtensions
3229
*/
3330
public interface DBComponent<
3431
TKey,

anvil-api/src/main/java/org/anvilpowered/anvil/api/datastore/Manager.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import com.google.inject.name.Named;
2222
import net.kyori.adventure.text.Component;
23-
import org.anvilpowered.anvil.api.misc.BindingExtensions;
2423
import org.anvilpowered.anvil.api.registry.Keys;
2524
import org.anvilpowered.anvil.api.registry.Registry;
2625
import org.anvilpowered.anvil.api.util.TextService;
@@ -109,14 +108,10 @@ public interface Manager<C extends DBComponent<?, ?>> {
109108
* For example, 'mongodb' (or any capitalization thereof) will match
110109
* a {@link DBComponent} annotated with {@link Named}{@code (value = "mongodb")}
111110
* </p>
112-
* <p>
113-
* Use {@link BindingExtensions} to bind your component implementations
114-
* </p>
115111
*
116112
* @return The current {@link DBComponent} implementation
117113
* @throws IllegalStateException If the config has not been loaded yet, or if no implementation was found
118114
* @see DBComponent
119-
* @see BindingExtensions
120115
*/
121116
C getPrimaryComponent();
122117
}

anvil-api/src/main/java/org/anvilpowered/anvil/api/misc/BindingExtensions.java

Lines changed: 0 additions & 156 deletions
This file was deleted.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Anvil - AnvilPowered
3+
* Copyright (C) 2020-2021
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package org.anvilpowered.anvil.api.misc
20+
21+
import com.google.common.reflect.TypeToken
22+
import com.google.inject.Binder
23+
import com.google.inject.Key
24+
import com.google.inject.TypeLiteral
25+
import com.google.inject.binder.AnnotatedBindingBuilder
26+
import com.google.inject.binder.LinkedBindingBuilder
27+
import com.google.inject.binder.ScopedBindingBuilder
28+
import dev.morphia.Datastore
29+
import jetbrains.exodus.entitystore.EntityId
30+
import jetbrains.exodus.entitystore.PersistentEntityStore
31+
import org.anvilpowered.anvil.api.Anvil
32+
import org.anvilpowered.anvil.api.datastore.DataStoreContext
33+
import org.anvilpowered.anvil.api.datastore.MongoContext
34+
import org.anvilpowered.anvil.api.datastore.XodusContext
35+
import org.bson.types.ObjectId
36+
37+
inline fun <reified T> Binder.bind(declaring: Any? = null): AnnotatedBindingBuilder<T> =
38+
bind(object : TypeToken<T>(declaring?.javaClass ?: javaClass) {}.toTypeLiteral())
39+
40+
inline fun <reified T> LinkedBindingBuilder<in T>.to(declaring: Any? = null): ScopedBindingBuilder {
41+
return to(object : TypeToken<T>(declaring?.javaClass ?: javaClass) {}.toTypeLiteral())
42+
}
43+
44+
inline fun <reified T> LinkedBindingBuilder<in T>.toInternalProvider(declaring: Any? = null): ScopedBindingBuilder {
45+
return toProvider(
46+
Anvil.getEnvironment().injector.getProvider(
47+
Key.get(object : TypeToken<T>(declaring?.javaClass ?: javaClass) {}.toTypeLiteral())
48+
)
49+
)
50+
}
51+
52+
// TODO(0.4): Remove
53+
fun <T> TypeToken<T>.toTypeLiteralNoInline(): TypeLiteral<T> = TypeLiteral.get(getType()) as TypeLiteral<T>
54+
inline fun <reified T> TypeToken<T>.toTypeLiteral(): TypeLiteral<T> = TypeLiteral.get(getType()) as TypeLiteral<T>
55+
fun Binder.withMongoDB() = bind<DataStoreContext<ObjectId, Datastore>>().to<MongoContext>()
56+
fun Binder.withXodus() = bind<DataStoreContext<EntityId, PersistentEntityStore>>().to<XodusContext>()

anvil-api/src/main/kotlin/org/anvilpowered/anvil/api/plugin/PluginInfo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ package org.anvilpowered.anvil.api.plugin
2121
import net.kyori.adventure.text.Component
2222
import org.anvilpowered.anvil.api.misc.Named
2323

24-
interface PluginInfo: Named {
24+
interface PluginInfo : Named {
2525

2626
val prefix: Component
2727

anvil-common/src/main/java/org/anvilpowered/anvil/api/EnvironmentBuilderImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import com.google.inject.TypeLiteral;
2929
import com.google.inject.name.Names;
3030
import com.google.inject.util.Modules;
31-
import org.anvilpowered.anvil.api.misc.BindingExtensions;
31+
import org.anvilpowered.anvil.api.misc._AbstractModuleKt;
3232
import org.anvilpowered.anvil.api.registry.Registry;
3333
import org.anvilpowered.anvil.api.registry.RegistryScope;
3434
import org.anvilpowered.anvil.common.PlatformImpl;
@@ -206,7 +206,7 @@ public Environment.Builder addEarlyServices(TypeLiteral<?>... typeLiterals) {
206206

207207
@Override
208208
public Environment.Builder addEarlyServices(TypeToken<?>... typeTokens) {
209-
return addEarlyServices(Stream.of(typeTokens), BindingExtensions::getKey);
209+
return addEarlyServices(Stream.of(typeTokens), typeToken -> Key.get(_AbstractModuleKt.toTypeLiteralNoInline(typeToken)));
210210
}
211211

212212
@Override
@@ -229,7 +229,7 @@ public <T> Environment.Builder addEarlyServices(TypeLiteral<T> typeLiteral, Cons
229229

230230
@Override
231231
public <T> Environment.Builder addEarlyServices(TypeToken<T> typeToken, Consumer<T> initializer) {
232-
earlyServices.put(BindingExtensions.getKey(typeToken), initializer);
232+
earlyServices.put(Key.get(_AbstractModuleKt.toTypeLiteralNoInline(typeToken)), initializer);
233233
return this;
234234
}
235235

anvil-common/src/main/java/org/anvilpowered/anvil/api/ServiceManagerImpl.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
import com.google.common.reflect.TypeToken;
2222
import com.google.inject.Injector;
23-
import org.anvilpowered.anvil.api.misc.BindingExtensions;
24-
import org.anvilpowered.anvil.common.misc.CommonBindingExtensions;
23+
import com.google.inject.Key;
24+
import org.anvilpowered.anvil.api.misc._AbstractModuleKt;
2525

2626
import java.util.HashMap;
2727
import java.util.Map;
@@ -42,7 +42,6 @@ public ServiceManagerImpl() {
4242
functionBindings = new HashMap<>();
4343
registerBinding(EnvironmentManager.class, () -> environmentManager);
4444
registerBinding(Environment.Builder.class, EnvironmentBuilderImpl::new);
45-
registerBinding(BindingExtensions.class, CommonBindingExtensions::new);
4645
}
4746

4847
void setInjector(Injector injector) {
@@ -55,7 +54,7 @@ public <T> Supplier<T> provideSupplier(TypeToken<T> typeToken) {
5554
if (supplier != null) {
5655
return supplier;
5756
}
58-
return () -> injector.getInstance(BindingExtensions.getKey(typeToken));
57+
return () -> injector.getInstance(Key.get(_AbstractModuleKt.toTypeLiteralNoInline(typeToken)));
5958
}
6059

6160
@Override
@@ -85,7 +84,7 @@ public <T, R> Function<T, R> provideFunction(TypeToken<R> typeToken) {
8584
return function;
8685
}
8786
return injector -> ((Injector) injector)
88-
.getInstance(BindingExtensions.getKey(typeToken));
87+
.getInstance(Key.get(_AbstractModuleKt.toTypeLiteralNoInline(typeToken)));
8988
}
9089

9190
@Override

0 commit comments

Comments
 (0)