diff --git a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/Ref.java b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/Ref.java index 7b2f9623..7a58b0df 100644 --- a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/Ref.java +++ b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/Ref.java @@ -1,6 +1,6 @@ package me.devnatan.inventoryframework; -import me.devnatan.inventoryframework.context.IFContext; +import me.devnatan.inventoryframework.context.IFRenderContext; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -20,14 +20,27 @@ public interface Ref { * * @throws UnassignedReferenceException If reference wasn't assigned to any element. * @return The value that this reference holds. + * @deprecated Use {@link #of(IFRenderContext)} instead. */ @NotNull - E value(@NotNull IFContext context); + @Deprecated + default E value(@NotNull IFRenderContext context) { + return of(context); + } + + /** + * Returns the value hold by this reference. + * + * @throws UnassignedReferenceException If reference wasn't assigned to any element. + * @return The value that this reference holds. + */ + @NotNull + E of(@NotNull IFRenderContext context); /** * This is an internal inventory-framework API that should not be used from outside of * this library. No compatibility guarantees are provided. */ @ApiStatus.Internal - void assign(Object value); + void assign(@NotNull IFRenderContext context, Object value); } diff --git a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/MultiRefsImpl.java b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/MultiRefsImpl.java index 648c97fd..d9f13766 100644 --- a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/MultiRefsImpl.java +++ b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/MultiRefsImpl.java @@ -2,7 +2,7 @@ import java.util.ArrayList; import java.util.List; -import me.devnatan.inventoryframework.context.IFContext; +import me.devnatan.inventoryframework.context.IFRenderContext; import org.jetbrains.annotations.NotNull; final class MultiRefsImpl implements Ref> { @@ -10,13 +10,13 @@ final class MultiRefsImpl implements Ref> { private final List assignments = new ArrayList<>(); @Override - public @NotNull List value(@NotNull IFContext context) { + public @NotNull List of(@NotNull IFRenderContext context) { return assignments; } @SuppressWarnings("unchecked") @Override - public void assign(Object value) { + public void assign(@NotNull IFRenderContext context, Object value) { synchronized (assignments) { try { assignments.add((E) value); diff --git a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/RefImpl.java b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/RefImpl.java index cb8ea4d8..71ff25a0 100644 --- a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/RefImpl.java +++ b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/RefImpl.java @@ -1,6 +1,6 @@ package me.devnatan.inventoryframework; -import me.devnatan.inventoryframework.context.IFContext; +import me.devnatan.inventoryframework.context.IFRenderContext; import org.jetbrains.annotations.NotNull; final class RefImpl implements Ref { @@ -11,14 +11,14 @@ final class RefImpl implements Ref { @SuppressWarnings("unchecked") @Override - public @NotNull E value(@NotNull IFContext context) { + public @NotNull E of(@NotNull IFRenderContext context) { if (assignment == UNASSIGNED_VALUE) throw new UnassignedReferenceException(); return (E) assignment; } @Override - public void assign(Object value) { + public void assign(@NotNull IFRenderContext context, Object value) { if (assignment != UNASSIGNED_VALUE) throw new IllegalStateException("Reference cannot be reassigned"); this.assignment = value; diff --git a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/FirstRenderInterceptor.java b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/FirstRenderInterceptor.java index 8b06be9b..50d97e81 100644 --- a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/FirstRenderInterceptor.java +++ b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/FirstRenderInterceptor.java @@ -53,7 +53,7 @@ public void intercept(PipelineContext pipeline, VirtualView subject private void registerComponents(IFRenderContext context) { context.getComponentFactories().stream() .map(ComponentFactory::create) - .peek(this::assignReference) + .peek(component -> assignReference(context, component)) .forEach(context::addComponent); } @@ -62,11 +62,11 @@ private void registerComponents(IFRenderContext context) { * * @param component The component to assign the reference. */ - private void assignReference(Component component) { + private void assignReference(IFRenderContext context, Component component) { final Ref ref = component.getReference(); if (ref == null) return; - ref.assign(component); + ref.assign(context, component); debug("Reference assigned to %s", component.getClass().getSimpleName()); }