
blocks.service.BlockContext Maven / Gradle / Ivy
package blocks.service;
import akka.actor.typed.javadsl.ActorContext;
import akka.http.javadsl.Http;
import akka.http.javadsl.server.Route;
import java.time.Clock;
import java.time.Instant;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
public class BlockContext {
public final ActorContext> context;
public final Http http;
public final Route route;
public final String env;
public final ServiceConfig config;
public final Instant startInstant;
public final Clock clock;
public final Set> blockRefs;
private final Function, Block>> blockFetchFunction;
public BlockContext(final ActorContext> context, final Http http, final Route route, final String env, final ServiceConfig config, final Instant startInstant, final Clock clock, final Set> blockRefs, Function, Block>> blockFetchFunction) {
this.context = context;
this.http = http;
this.route = route;
this.env = env;
this.config = config;
this.startInstant = startInstant;
this.clock = clock;
this.blockRefs = blockRefs;
this.blockFetchFunction = blockFetchFunction;
}
@SuppressWarnings("unchecked")
public Block getBlock(BlockRef key) {
return (Block) blockFetchFunction.apply(key);
}
@SuppressWarnings("unchecked")
public B getBlockOutput(BlockRef key) {
Block> block = blockFetchFunction.apply(key);
if (block == null) {
throw new IllegalStateException("Missing block " + key.key + " (" + key.type.getType() + "). Have you forgotten to add the block instance to list of blocks?");
}
Optional blockOutput = (Optional) block.getBlockOutput();
if (blockOutput.isEmpty()) {
throw new IllegalStateException("Missing output of " + key.key + " " + key.type.getType());
}
return blockOutput.get();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy