package br.com.arsmachina.eloquentia.tapestry.services; import org.apache.tapestry5.ValueEncoder; import org.apache.tapestry5.services.ValueEncoderFactory; import br.com.arsmachina.eloquentia.controller.PageController; import br.com.arsmachina.eloquentia.entity.Page; public class PageValueEncoder implements ValueEncoder<Page>, ValueEncoderFactory<Page> { final private PageController pageController; /** * Single constructor of this class. * * @param pageController a {@link PageController}. */ public PageValueEncoder(PageController pageController) { this.pageController = pageController; } public ValueEncoder<Page> create(Class<Page> type) { return this; } public String toClient(Page page) { return page != null ? page.getUri() : null; } public Page toValue(String clientValue) { Page page = null; if (clientValue != null) { page = pageController.findByUri(clientValue); } return page; } }