import java.io.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
// Referenced classes of package com.jarp.core:
// Env, Repository
public class AjaxListener extends HttpServlet
{
public static Logger logger;
String className;
String methodName;
ArrayList paramList;
int intParamCount;
static Class class$0; /* synthetic field */
// public void init() throws ServletException
// {
// String repository_DBName = "";
// String repository_DBPoolType = "";
// String repository_DBJNDIName = "";
// String repository_JdbcDriver = "";
// String repository_JdbcURL = "";
// String repository_UserName = "";
// String repository_Password = "";
// int repository_maxConnection = 3;
// BasicConfigurator.configure();
// try
// {
// logger.info("======== AjaxListener initial started (TESTING...) ========");
// repository_DBName = getInitParameter("repository_DBName");
// repository_DBPoolType = getInitParameter("repository_DBPoolType");
// repository_DBJNDIName = getInitParameter("repository_DBJNDIName");
// if(repository_DBName == null)
// repository_DBName = "AjaxListener";
// if(repository_DBName.equals(""))
// repository_DBName = "AjaxListener";
// logger.info("======== repository_DBName == " + repository_DBName + " ========");
// logger.info("======== repository_DBPoolType == " + repository_DBPoolType + " ========");
// if(repository_DBPoolType.equals("Pool"))
// {
// repository_JdbcDriver = getInitParameter("repository_JdbcDriver");
// repository_JdbcURL = getInitParameter("repository_JdbcURL");
// repository_UserName = getInitParameter("repository_UserName");
// repository_Password = getInitParameter("repository_Password");
// repository_maxConnection = (new Integer(getInitParameter("repository_maxConnection"))).intValue();
// ConnectionPools pools = ConnectionPools.getInstance();
// int idx = pools.setPoolParams(repository_DBName, repository_JdbcDriver, repository_JdbcURL, repository_UserName, repository_Password, repository_maxConnection, -1);
// if(pools.createPool(idx))
// {
// logger.info("-------- Repository connection pool created --------");
// }
// logger.info("======== AjaxListener initial finished ========");
// }
// if(repository_DBPoolType.equals("systemPool") && repository_DBJNDIName != null)
// {
// ConnectionPools pools = ConnectionPools.getInstance();
// repository_maxConnection = (new Integer(getInitParameter("repository_maxConnection"))).intValue();
// int idx = pools.setPoolParams(repository_DBName, repository_DBJNDIName, repository_maxConnection, -1);
// if(pools.createPool(idx))
// {
// logger.info("-------- Repository connection pool created --------");
// }
// logger.info("======== AjaxListener initial finished ========");
// }
// }
// catch(Exception ex)
// {
// ex.printStackTrace();
// logger.error("======== AjaxListener initial failed ========");
// }
// }
public AjaxListener()
{
className = "";
methodName = "";
paramList = null;
intParamCount = 0;
}
public void destroy()
{
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/xml;charset=GBK");
request.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
String className = "";
String methodName = "";
ArrayList paramList = new ArrayList();
int intParamCount = 0;
className = request.getParameter("className");
methodName = request.getParameter("methodName");
String paramCount = request.getParameter("paramCount");
if(paramCount == null)
paramCount = "0";
intParamCount = Integer.parseInt(paramCount);
paramList = new ArrayList();
for(int i = 0; i < intParamCount; i++)
{
String p = request.getParameter("param_" + i);
paramList.add(p);
}
BufferedReader bufReader = request.getReader();
String strLine = "";
StringBuffer xml = new StringBuffer();
while((strLine = bufReader.readLine()) != null)
xml.append(strLine);
String xmlReturn = doAction(className, methodName, intParamCount, paramList, xml);
out.print(xmlReturn);
out.flush();
out.close();
paramList = null;
xml = null;
}
private String doAction(String className, String methodName, int intParamCount, ArrayList paramList, StringBuffer bufXML)
{
String xmlRet = "";
try
{
Class actionClass = Class.forName(className);
Object actionInstance = actionClass.newInstance();
Object ret = new Object();
int paramCount = intParamCount;
if(bufXML.length() > 0)
paramCount++;
Class params[] = new Class[paramCount];
Object paramValues[] = new Object[paramCount];
for(int i = 0; i < paramCount; i++)
{
params[i] = Class.forName("java.lang.String");
if(bufXML.length() > 0 && i == paramCount - 1)
paramValues[i] = bufXML.toString();
else
paramValues[i] = (String)paramList.get(i);
}
Method m = actionClass.getMethod(methodName, params);
ret = m.invoke(actionInstance, paramValues);
xmlRet = ret.toString();
}
catch(Exception ex)
{
logger.error("className = " + className + "||" + "methodName = " + methodName);
for(int i = 0; i < intParamCount; i++)
logger.error("param_" + i + " = " + (String)paramList.get(i) + "||");
logger.error("doAction's error: " + ex.toString());
ex.printStackTrace();
}
return xmlRet;
}
static
{
logger = Logger.getLogger(com.dvision.digitalplatform.ajaxUtil.AjaxListener.class.getName());
}
}