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.common;
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
00039 import org.openmobileis.services.Service;
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 CallingServiceManager callServManager = CallingServiceManager.getManager();
00070 callServManager.pushCallingService(this.getServiceUri(), req);
00071
00072 String uri = (String)req.getParameter("from");
00073 if (uri != null) {
00074 NavigationBarManager.getManager().updateRequestParametersForRedirectService(uri, req);
00075 }
00076 res.sendRedirect(to);
00077 } else {
00078 String from = (String)req.getParameter("from");
00079 if (from == null) {
00080 CallingServiceManager callServManager = CallingServiceManager.getManager();
00081 callServManager.peekToTheSpecifiedCallingService(this.getServiceUri());
00082
00083
00084 Hashtable oldParameterList = callServManager.getCallingServiceParameters();
00085
00086 callServManager.popCallingService();
00087 if (oldParameterList != null) {
00088
00089 openmisReq.addParameters(oldParameterList);
00090 from = (String)req.getParameter("from");
00091 }
00092 }
00093 if (from!=null) {
00094 res.sendRedirect(from);
00095 } else {
00096 LogManager.traceError(LogServices.WEBSERVICE, "RedirectToFromCallingService can't find to service");
00097 ServletTools.sendErrorPage("Internal Error" , "No service specified to return", "/index", res);
00098 }
00099 }
00100 }
00101
00102
00103 public String getName() {
00104 return "calendar.RedirectToFromCallingService";
00105 }
00106
00110 public String getServiceUri() {
00111 return ServiceManager.getManager().getServiceBaseURI()+"/admin/redirectService";
00112 }
00113
00114 }