diff --git a/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java b/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java index 99df8c1..f142470 100644 --- a/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java +++ b/src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java @@ -76,6 +76,20 @@ protected ErrorClassification buildErrorClassification(String messageTemplate, M return new ValidationErrorType(fieldOrArgumentPath, directive); } + /** + * Override this method to build your own error extensions + * + * @param messageTemplate the message template + * @param messageParams the parameters + * @param validationEnvironment the rule environment + * + * @return an Map of extensions + */ + @SuppressWarnings("unused") + protected Map buildErrorExtensions(String messageTemplate, Map messageParams, ValidationEnvironment validationEnvironment) { + return Map.of(); + } + /** * You can override this to provide your own resource bundles for a given locale * @@ -92,11 +106,14 @@ protected ResourceBundle getResourceBundle(Locale locale) { public GraphQLError interpolate(String messageTemplate, Map messageParams, ValidationEnvironment validationEnvironment) { ErrorClassification errorClassification = buildErrorClassification(messageTemplate, messageParams, validationEnvironment); + Map errorExtensions = buildErrorExtensions(messageTemplate, messageParams, validationEnvironment); + String message = interpolateMessageImpl(messageTemplate, messageParams, validationEnvironment); GraphqlErrorBuilder errorBuilder = GraphqlErrorBuilder.newError() .message(message) .errorType(errorClassification) + .extensions(errorExtensions) .path(validationEnvironment.getExecutionPath()); if (validationEnvironment.getLocation() != null) { errorBuilder.location(validationEnvironment.getLocation());