The analyzer factory creates the default analyzers like:
Every analyzer handles the request from the mobile app and adds one or more responses like:
The project uses the DefaultAnalyzerFactory but it's possible to use your own factory. To change the default factory, simply set the init parameter in your deployment descriptor: analyzerfactory
Set a full qualified java class and be sure that your class extends DefaultAnalyzerFactory.
<servlet> <servlet-name>MobileServlet</servlet-name> <servlet-class>com.sibvisions.rad.server.http.rest.ServerServlet</servlet-class> <init-param> <!-- Application class name --> <param-name>org.restlet.application</param-name> <param-value>com.sibvisions.rad.server.http.rest.ApplicationAdapter</param-value> </init-param> <init-param> <param-name>session-timeout</param-name> <param-value>10</param-value> </init-param> <init-param> <param-name>analyzerfactory</param-name> <param-value>com.sibvisions.demo.MyAnalyzerFactory</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MobileServlet</servlet-name> <url-pattern>/services/mobile/*</url-pattern> </servlet-mapping>
In your own analyzer, simply override the specific method, e.g.
public LoginAnalyzer createLoginAnalyzer(CommandRouter pRouter, ApplicationRequest pRequest) { return MyLoginAnalyzer(pRouter, pRequest); }
The analyzer itself could look like this example:
public class MyLoginAnalyzer extends LoginAnalyzer { protected MyLoginAnalyzer(ApplicationResource pResource, ApplicationRequest pRequest) { super(pResource, pRequest); } @Override public void analyze(List<ApplicationResponse> pResponse) throws Throwable { super.analyze(pResponse); //your code here } }