Source code: com/vinculum/engine/VCMDispatch.java
1 /* * ** ** BEGIN LICENSE BLOCK * ** **
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is Vinculum Open Source.
15 *
16 * The Initial Developer of the Original Code is
17 * Gerard Toonstra.
18 * Portions created by the Initial Developer are Copyright (C) 2003
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
34 *
35 * ** ** * END LICENSE BLOCK * ** **
36 */
37
38 /***************************************************************************
39 $RCSfile: VCMDispatch.java,v $ - description
40 -------------------
41 begin : $Date: 2003/09/12 17:50:42 $
42 copyright : Vinculum (C) 2002
43 author : $Author: chiraz $
44 ***************************************************************************/
45
46 /**
47 * $Log: VCMDispatch.java,v $
48 * Revision 1.9 2003/09/12 17:50:42 chiraz
49 * Changes to support cleaning up objects belonging to specific sessions.
50 *
51 * Revision 1.8 2003/09/10 07:34:52 chiraz
52 * Fix back button issue
53 *
54 * Revision 1.7 2003/09/09 21:57:29 chiraz
55 * fix back button issues...
56 *
57 * Revision 1.6 2003/09/08 07:15:28 chiraz
58 * changes to support classloader passed to the Vinculum engine
59 *
60 * Revision 1.4 2003/09/04 21:26:20 chiraz
61 * changes to support classloader passed to the Vinculum engine
62 *
63 * Revision 1.3 2003/08/27 19:11:48 chiraz
64 * Changed classpath, making it loadable directly by eclipse
65 *
66 * Revision 1.2 2003/07/30 22:20:22 chiraz
67 * updated core JAVA classes for Vinculum.
68 *
69 * Revision 1.1.1.1 2003/07/08 07:41:46 chiraz
70 * egg
71 **/
72
73 package com.vinculum.engine;
74
75 import javax.servlet.http.HttpServlet;
76 import javax.servlet.http.HttpServletRequest;
77 import javax.servlet.http.HttpServletResponse;
78 import javax.servlet.http.HttpSession;
79 import javax.servlet.RequestDispatcher;
80 import javax.servlet.ServletException;
81
82 import java.io.*;
83 import java.util.Enumeration;
84 import java.lang.StringBuffer;
85
86 /**
87 * @author chilan
88 *
89 */
90 public class VCMDispatch extends HttpServlet
91 {
92 private final static String PROCESS_NAME = "processName";
93
94 /**
95 *
96 */
97 public VCMDispatch()
98 {
99 super();
100 }
101
102 public void doGet( HttpServletRequest req, HttpServletResponse res )
103 throws IOException, ServletException
104 {
105 doPost( req, res );
106 }
107
108 public void doPost( HttpServletRequest req, HttpServletResponse res )
109 throws IOException, ServletException
110 {
111 HttpSession session = req.getSession();
112 String forwardURL = null;
113 String processName = req.getParameter(PROCESS_NAME);
114
115 System.out.println("Request for process " + processName );
116
117 if ( session.isNew() == true )
118 {
119 VCMSessionMonitor monitor = new VCMSessionMonitor();
120
121 session.setAttribute("VCMmonitor", monitor );
122 }
123
124 Enumeration enum = req.getParameterNames();
125 StringBuffer buffer = new StringBuffer();
126
127 while ( enum.hasMoreElements() )
128 {
129 buffer.append((String)enum.nextElement());
130 }
131
132 HashUtil hash = new HashUtil( buffer );
133
134 System.out.println("Hash getHash: " + hash.getStringHash() );
135
136 try
137 {
138 forwardURL = VCMworkflow.execute( processName, session.getId(), req, this.getClass().getClassLoader(), hash.getStringHash() );
139 }
140 catch (WebException e)
141 {
142 RequestDispatcher disp = req.getRequestDispatcher("/error.jsp");
143 VCMworkflow.deRegisterRequest( session.getId() );
144 disp.forward(req, res);
145 return;
146 }
147
148 if ( forwardURL != null )
149 {
150 VCMworkflow.deRegisterRequest( session.getId() );
151
152 RequestDispatcher disp = req.getRequestDispatcher( forwardURL );
153
154 disp.forward(req,res);
155 }
156 else
157 {
158 RequestDispatcher disp = req.getRequestDispatcher("/error.jsp");
159 VCMworkflow.deRegisterRequest( session.getId() );
160 disp.forward(req, res);
161 return;
162 }
163 }
164 }