package klik.server.handler; import javax.servlet.http.HttpServletRequest; import klik.server.data.DataManager; import klik.server.x10.X10Util; import klik.shared.rpc.RetrieveGreetingAction; import klik.shared.rpc.RetrieveGreetingResult; import org.apache.commons.logging.Log; import com.google.inject.Inject; import com.google.inject.Provider; import com.gwtplatform.dispatch.server.ExecutionContext; import com.gwtplatform.dispatch.server.actionhandler.ActionHandler; import com.gwtplatform.dispatch.shared.ActionException; public class RetrieveGreetingHandler implements ActionHandler<RetrieveGreetingAction, RetrieveGreetingResult> { private final Log logger; private final Provider<HttpServletRequest> servletRequest; @Inject public RetrieveGreetingHandler(final Log logger, final Provider<HttpServletRequest> servletRequest) { this.logger = logger; this.servletRequest = servletRequest; } @Override public RetrieveGreetingResult execute(final RetrieveGreetingAction action, final ExecutionContext context) throws ActionException { try { // check session if (servletRequest.get().getSession(false) == null) { servletRequest.get().getSession(true); // start a session return new RetrieveGreetingResult("Looks like you are here for the first time. " + " Please check the settings before starting.", false, X10Util.createDto(DataManager.getUnits())); } else { return new RetrieveGreetingResult(null, true, X10Util.createDto(DataManager.getUnits())); } } catch (Exception cause) { logger.error("Unable to send message", cause); throw new ActionException(cause); } } @Override public void undo(RetrieveGreetingAction action, RetrieveGreetingResult result, ExecutionContext context) throws ActionException { // Nothing to do here } @Override public Class<RetrieveGreetingAction> getActionType() { return RetrieveGreetingAction.class; } }