package de.neitzel.roleplay.fascade; import de.neitzel.roleplay.business.SessionService; import de.neitzel.roleplay.fascade.model.TurnRequest; import de.neitzel.roleplay.fascade.model.TurnResponse; import de.neitzel.roleplay.generated.api.TurnsApi; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.NotFoundException; /** * JAX-RS resource that implements the {@link TurnsApi} interface generated * from the OpenAPI specification. Delegates all business logic to * {@link SessionService}. */ @ApplicationScoped public class TurnResource implements TurnsApi { /** * Business service providing turn submission and processing. */ private final SessionService sessionService; /** * Creates a new {@code TurnResource}. * * @param sessionService the session management service */ @Inject public TurnResource(final SessionService sessionService) { this.sessionService = sessionService; } /** * {@inheritDoc} * *

Returns 404 if the session is not found. */ @Override public TurnResponse submitTurn(final String sessionId, final TurnRequest turnRequest) { return sessionService.submitTurn(sessionId, turnRequest) .orElseThrow(() -> new NotFoundException( "No session found with id: " + sessionId)); } }