/* AuDecoder.java Purpose: Description: History: Tue Jul 20 19:48:15 TST 2010, Created by tomyeh Copyright (C) 2010 Potix Corporation. All Rights Reserved. */ package org.zkoss.zk.au; import java.util.List; import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.WebApp; /** * Used to decode the custom format of the AU requests. * By default, the AU request is sent in the JSON format. * If you prefer to use another format, you have to do as follows. * <ul> * <li>Implement this interface to decode the custom format.</li> * <li>Register the implementation by specifying it in <code>WEB-INF/zk.xml</code></li> * <li>Override a JavaScript method called <a href="http://www.zkoss.org/javadoc/latest/jsdoc/_global_/zAu.html#encode%28int,%20zk.Event,%20zk.Desktop%29">zAu.encode()</a> * to encode to the custom format</li> * </ul> * @author tomyeh * @since 5.0.4 */ public interface AuDecoder { /** Returns the desktop ID. * @param request the request. For HTTP, it is HttpServletRequest. */ public String getDesktopId(Object request); /** Returns the first command. * It is called if a desktop is not found. * @param request the request. For HTTP, it is HttpServletRequest. */ public String getFirstCommand(Object request); /** Returns a list of {@link AuRequest} by decoding the request. * @param request the request. For HTTP, it is HttpServletRequest. */ public List<AuRequest> decode(Object request, Desktop desktop); /** Returns if the request is ignorable when an error occurs. * If true is returned, the request is simply ignored. * Otherwise, an error message, depending on the configuration, * is sent to the client. */ public boolean isIgnorable(Object request, WebApp wapp); }