ReferenceNotFoundException.java
package com.github.jenkaby.bikerental.shared.exception;
import lombok.Getter;
import org.jspecify.annotations.NonNull;
import static com.github.jenkaby.bikerental.shared.web.advice.ErrorCodes.REFERENCE_NOT_FOUND;
@Getter
public class ReferenceNotFoundException extends BikeRentalException {
public static final String ERROR_CODE = REFERENCE_NOT_FOUND;
private static final String MESSAGE_TEMPLATE = "Referenced %s with identifier '%s' not found";
public ReferenceNotFoundException(String resourceName, String identifier) {
super(MESSAGE_TEMPLATE.formatted(resourceName, identifier), ERROR_CODE, new ResourceDetails(resourceName, identifier));
}
public ReferenceNotFoundException(@NonNull Class<?> cls, @NonNull Object identifier) {
this(cls.getSimpleName(), identifier.toString());
}
public ResourceDetails getDetails() {
return getParams().map(params -> (ResourceDetails) params)
.orElseThrow(() -> new IllegalArgumentException("Expected ResourceDetails in exception parameters"));
}
public record ResourceDetails(String resourceName, String identifier) {
}
}