package org.wicketstuff.jsr303;
import com.google.common.base.Preconditions;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.validation.ValidationError;
import javax.validation.ConstraintViolation;
abstract class AbstractValidationErrorBuilder<T> {
protected final ConstraintViolation<T> violation;
@SpringBean
private ViolationMessageRenderer violationMessageRenderer;
public AbstractValidationErrorBuilder(final ConstraintViolation<T> violation) {
Preconditions.checkNotNull(violation, "violation");
this.violation = violation;
Injector.get().inject(this);
}
public ValidationError createError() {
final ValidationError ve = new ValidationError();
ve.setMessage(render());
final String messageTemplate = violation.getMessageTemplate();
final String key = extractKey(messageTemplate);
if (key != null) {
ve.addMessageKey(key);
}
return ve;
}
protected abstract String render();
private static String extractKey(final String messageTemplate) {
Preconditions.checkNotNull(messageTemplate, "messageTemplate");
final String key = messageTemplate.trim();
if (key.startsWith("{") && key.endsWith("}")) {
return key.substring(1, key.length() - 1);
} else {
return null;
}
}
public ViolationMessageRenderer getViolationMessageRenderer() {
return violationMessageRenderer;
}
}