List of usage examples for org.apache.wicket.request.resource DynamicImageResource DynamicImageResource
public DynamicImageResource(String format)
From source file:com.github.cage.cage_e03_wicket.HomePage.java
License:Apache License
public HomePage() { super(new CompoundPropertyModel<Token>(new Token())); add(new WebMarkupContainer("goodResult") { private static final long serialVersionUID = -5279236538017405828L; @Override// w w w . j ava2s. c o m protected void onConfigure() { super.onConfigure(); final Token token = HomePage.this.getToken(); setVisible(token.showGoodResult); token.showGoodResult = false; } }); add(new WebMarkupContainer("badResult") { private static final long serialVersionUID = -6479933043124566245L; @Override protected void onConfigure() { super.onConfigure(); final Token token = HomePage.this.getToken(); setVisible(token.showBadResult); token.showBadResult = false; } }); add(new Form<Token>("form") { private static final long serialVersionUID = -2783383042739263677L; @Override protected void onInitialize() { super.onInitialize(); add(new RequiredTextField<String>("captcha") { private static final long serialVersionUID = 8416111619173955610L; @Override protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); tag.put("value", ""); }; }.add(new StringValidator() { private static final long serialVersionUID = 3888825725858419028L; @Override public void validate(IValidatable<String> validatable) { super.validate(validatable); if (!validatable.isValid()) return; final Token token = HomePage.this.getToken(); if (token.token == null || !token.token.equals(validatable.getValue())) { LOGGER.error("There was no generated token, or it didn't match the user given one."); validatable.error(decorate(new ValidationError(this), validatable)); } } })); } @Override protected void onSubmit() { super.onSubmit(); onPost(true); } @Override protected void onError() { super.onError(); onPost(false); } protected void onPost(boolean good) { final Token token = HomePage.this.getToken(); token.showGoodResult = good; token.showBadResult = !good; } }); add(new Image("captchaImage", new DynamicImageResource(cage.getFormat()) { private static final long serialVersionUID = -1475355045487272906L; @Override protected void configureResponse(ResourceResponse response, Attributes attributes) { super.configureResponse(response, attributes); final Token token = HomePage.this.getToken(); LOGGER.info("Token: {}.", token); if (token.token == null || token.tokenUsed) { LOGGER.error("Requested captcha without token."); response.setError(HttpServletResponse.SC_NOT_FOUND, "Captcha not found."); } token.tokenUsed = true; response.disableCaching(); } @Override protected byte[] getImageData(Attributes attributes) { final Token token = HomePage.this.getToken(); return cage.draw(token.token); } })); }