00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 package org.openmobileis.services;
00031
00032 import java.io.IOException;
00033 import java.util.Hashtable;
00034
00035 import javax.servlet.ServletException;
00036 import javax.servlet.http.HttpServletRequest;
00037 import javax.servlet.http.HttpServletResponse;
00038 import javax.servlet.http.HttpSession;
00039
00040 import org.openmobileis.services.navigation.NavigationBarManager;
00041 import org.openmobileis.services.servlet.OpenmisHttpServletRequest;
00042 import org.openmobileis.common.util.log.*;
00043
00048 public class RedirectToFromCallingService extends Service {
00049
00053 public RedirectToFromCallingService() {
00054 super();
00055 }
00056
00060 public void run(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
00061
00062 OpenmisHttpServletRequest openmisReq = (OpenmisHttpServletRequest)req;
00063
00064
00065 String to = req.getParameter("to");
00066 if (to != null) {
00067
00068 openmisReq.removeParameter("to");
00069
00070 HttpSession session = req.getSession();
00071 CallingServiceManager callServManager = (CallingServiceManager)session.getAttribute("openMIS.CallingServiceManager");
00072 callServManager.pushCallingService(this.getServiceUri(), req);
00073
00074 String uri = (String)req.getParameter("from");
00075 if (uri != null) {
00076 NavigationBarManager.getManager().updateRequestParametersForRedirectService(uri, req);
00077 }
00078 res.sendRedirect(to);
00079 } else {
00080 String from = (String)req.getParameter("from");
00081 if (from == null) {
00082 HttpSession session = req.getSession();
00083 CallingServiceManager callServManager = (CallingServiceManager)session.getAttribute("openMIS.CallingServiceManager");
00084 callServManager.peekToTheSpecifiedCallingService(this.getServiceUri());
00085
00086
00087 Hashtable oldParameterList = callServManager.getCallingServiceParameters();
00088
00089 callServManager.popCallingService();
00090 if (oldParameterList != null) {
00091
00092 openmisReq.addParameters(oldParameterList);
00093 from = (String)req.getParameter("from");
00094 }
00095 }
00096 if (from!=null) {
00097 res.sendRedirect(from);
00098 } else {
00099 LogManager.traceError(LogServices.WEBSERVICE, "RedirectToFromCallingService can't find to service");
00100 ServletTools.sendErrorPage("Internal Error" , "No service specified to return", "/index", res);
00101 }
00102 }
00103 }
00104
00105
00106 public String getName() {
00107 return "calendar.RedirectToFromCallingService";
00108 }
00109
00113 public String getServiceUri() {
00114 return ServiceManager.getManager().getServiceBaseURI()+"/admin/redirectService";
00115 }
00116
00117 }