private static String normalizeSubject(final String msgSubject) { if (msgSubject.isEmpty() || "/".equals(msgSubject)) { throw SubjectInvalidException.newBuilder(msgSubject).build(); } return msgSubject.charAt(0) == '/' ? msgSubject.substring(1) : msgSubject; }
@Override protected SubjectInvalidException doBuild(final DittoHeaders dittoHeaders, @Nullable final String message, @Nullable final String description, @Nullable final Throwable cause, @Nullable final URI href) { return new SubjectInvalidException(dittoHeaders, message, description, cause, href); }
/** * Deserialize from a JSON object. * * @param jsonObject the JSON object to deserialize. * @param dittoHeaders the headers. * @return an instance of this class. * @throws NullPointerException if any argument is {@code null}. */ public static SubjectInvalidException fromJson(final JsonObject jsonObject, final DittoHeaders dittoHeaders) { return new Builder() .loadJson(jsonObject) .dittoHeaders(dittoHeaders) .message(readMessage(jsonObject)) .description(readDescription(jsonObject).orElse(DEFAULT_DESCRIPTION)) .href(readHRef(jsonObject).orElse(null)) .build(); }
@Override public void validateValue(@Nullable final CharSequence value) { super.validateValue(value); final Validator subjectValidator = IdValidator.newInstance(value, SUBJECT_REGEX); if (!subjectValidator.isValid()) { final String msgTemplate = "The subject <{0}> is invalid because it did not match the pattern <{1}>!"; throw SubjectInvalidException.newBuilder(String.valueOf(value)) .message(() -> MessageFormat.format(msgTemplate, value, SUBJECT_REGEX)) .build(); } } },