openamf/src/java/org/openamf DefaultGateway.java,1.45,1.46
[email protected] Fri, 19 Sep 2003 17:48:22 -0700
| Newsgroups | gmane.comp.java.openamf.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/openamf/openamf/src/java/org/openamf
In directory sc8-pr-cvs1:/tmp/cvs-serv22746/src/java/org/openamf
Modified Files:
DefaultGateway.java
Log Message:
created seperate logges for request and response
Index: DefaultGateway.java
===================================================================
RCS file: /cvsroot/openamf/openamf/src/java/org/openamf/DefaultGateway.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -C2 -d -r1.45 -r1.46
*** DefaultGateway.java 16 Aug 2003 03:30:02 -0000 1.45
--- DefaultGateway.java 20 Sep 2003 00:48:19 -0000 1.46
***************
*** 33,37 ****
import org.openamf.io.AMFSerializer;
import org.openamf.recordset.ASRecordSet;
- import org.openamf.util.OpenAMFUtils;
/**
--- 33,36 ----
***************
*** 41,304 ****
public class DefaultGateway extends HttpServlet {
! protected static Log log = LogFactory.getLog(DefaultGateway.class);
! private static final String OPENAMF_CONFIG = "OPENAMF_CONFIG";
! public void init() throws ServletException {
! reloadConfig();
! }
! /**
! * Process request
! *
! * @param req
! * @param resp
! * @throws ServletException
! * @throws IOException
! */
! public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
! AMFMessage requestMessage, responseMessage = null;
! try {
! requestMessage = deserializeAMFMessage(req);
! OpenAMFUtils.logMessage("REQUEST", requestMessage);
! responseMessage = processMessage(req, requestMessage);
! OpenAMFUtils.logMessage("RESPONSE", responseMessage);
! serializeAMFMessage(resp, responseMessage);
! } catch (Exception e) {
! log.error("Error in service: " + e,e);
! }
! }
! protected AMFMessage deserializeAMFMessage(HttpServletRequest req) throws IOException {
! DataInputStream inputStream = new DataInputStream(req.getInputStream());
! AMFDeserializer deserializer = new AMFDeserializer(inputStream);
! AMFMessage message = deserializer.getAMFMessage();
! log.debug("input message deserialized");
! return message;
! }
! /**
! * Serialize response message
! *
! * @param resp
! * @param message
! * @throws IOException
! */
! protected void serializeAMFMessage(HttpServletResponse resp, AMFMessage message) throws IOException {
! ByteArrayOutputStream baos = new ByteArrayOutputStream();
! DataOutputStream dos = new DataOutputStream(baos);
! AMFSerializer serializer = new AMFSerializer(dos);
! serializer.serializeMessage(message);
! resp.setContentType("application/x-amf");
! resp.setContentLength(baos.size());
! ServletOutputStream sos = resp.getOutputStream();
! baos.writeTo(sos);
! sos.flush();
! }
! /**
! * Process message
! *
! * @param req
! * @param message
! * @return
! */
! protected AMFMessage processMessage(HttpServletRequest req, AMFMessage message) {
! AMFMessage responseMessage = new AMFMessage();
! for (Iterator bodies = message.getBodies(); bodies.hasNext();) {
! AMFBody requestBody = (AMFBody) bodies.next();
! // invoke
! Object serviceResult = invokeBody(req, requestBody);
! String target = getTarget(requestBody, serviceResult);
! AMFBody responseBody = new AMFBody(target, "null", serviceResult);
! responseMessage.addBody(responseBody);
! }
! return responseMessage;
! }
! /**
! * Invoke service
! *
! * @param req
! * @param requestBody
! * @return
! */
! private Object invokeBody(HttpServletRequest req, AMFBody requestBody) {
! Object serviceResult = null;
! try {
! ServiceInvoker serviceInvoker = getServiceInvoker(requestBody, req);
! if (serviceInvoker== null) {
! throw new ServiceInvocationException(requestBody, new Exception("No service"));
! }
! preInvokeService(req, serviceInvoker);
! serviceResult = serviceInvoker.invokeService();
! serviceResult = postInvokeService(
! req,
! serviceInvoker,
! serviceResult);
! } catch (ServiceInvocationException e) {
! serviceResult = e.getAMFError();
! log.warn(e);
! }
! return serviceResult;
! }
! /**
! * Returns target
! *
! * @param requestBody request message body
! * @param serviceResult response message
! * @return
! */
! private String getTarget(AMFBody requestBody, Object serviceResult) {
! String target = "/onResult";
! if (serviceResult instanceof AMFError) {
! target = "/onStatus";
! }
! return requestBody.getResponse() + target;
! }
! /**
! * Pre invoke service
! *
! * @param httpServletRequest
! * @param serviceInvoker
! * @throws ServiceInvocationException
! */
! protected void preInvokeService(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker)
! throws ServiceInvocationException {
! if (serviceInvoker.getPersistService()) {
! Object persistantServiceObject =
! httpServletRequest.getSession().getAttribute(
! serviceInvoker.getPersistantServiceName());
! serviceInvoker.setPersistantServiceObject(persistantServiceObject);
! }
! }
! /**
! * Post invoke service
! *
! * @param httpServletRequest
! * @param serviceInvoker
! * @param serviceResult
! * @return
! * @throws ServiceInvocationException
! */
! protected Object postInvokeService(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker,
! Object serviceResult)
! throws ServiceInvocationException {
! if (serviceInvoker.getPersistService()) {
! httpServletRequest.getSession().setAttribute(
! serviceInvoker.getPersistantServiceName(),
! serviceInvoker.getPersistantServiceObject());
! }
! serviceResult = processRecordSet(httpServletRequest, serviceInvoker, serviceResult);
! return serviceResult;
! }
! private Object processRecordSet(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker,
! Object serviceResult)
! throws ServiceInvocationException {
! if (serviceResult instanceof ResultSet) {
! ASRecordSet asRecordSet = new ASRecordSet();
! try {
! asRecordSet.populate((ResultSet) serviceResult);
! serviceResult = asRecordSet;
! } catch (IOException e) {
! throw new ServiceInvocationException(serviceInvoker.getRequest(), e);
! }
! }
! if (serviceResult instanceof ASRecordSet) {
! ASRecordSet asRecordSet = (ASRecordSet) serviceResult;
! if (asRecordSet.getTotalCount() > asRecordSet.getInitialData().size()) {
! httpServletRequest.getSession().setAttribute(asRecordSet.getId(), asRecordSet);
! }
! }
! return serviceResult;
! }
! protected ServiceInvoker getServiceInvoker(AMFBody requestBody, HttpServletRequest httpServletRequest)
! throws ServiceInvocationException {
! ServiceInvoker serviceInvoker = null;
! ServiceRequest request = new ServiceRequest(requestBody);
! try {
! for (Iterator i = OpenAMFConfig.getInstance().getServiceInvokerConfigs();
! i.hasNext();
! ) {
! ServiceInvokerConfig invokerConfig = (ServiceInvokerConfig) i.next();
! log.debug("Checking if the " + invokerConfig.getName() + " Service Invoker can support the request");
! ServiceInvoker tempInvoker =
! ServiceInvoker.load(
! invokerConfig.getClassName(),
! request,
! httpServletRequest,
! getServletContext());
! if (tempInvoker.supports(request)) {
! serviceInvoker = tempInvoker;
! serviceInvoker.prepare(request);
! log.debug(invokerConfig.getName()+": YES");
! break;
! } else {
! log.debug(invokerConfig.getName()+": NO");
! }
! }
! } catch (Exception e) {
! throw new ServiceInvocationException(request, e);
! }
! return serviceInvoker;
! }
! /**
! * Reloads OpenAMF COnfiguration
! *
! * @return
! */
! protected OpenAMFConfig reloadConfig() {
! OpenAMFConfig config = OpenAMFConfig.getInstance();
! ConfigDigester configDigester = new ConfigDigester();
! configDigester.setUseContextClassLoader(true);
! String configParam = getServletConfig().getInitParameter(OPENAMF_CONFIG);
! String[] configLocations = StringUtils.split(configParam, ",");
! try {
! for (int i = 0; i < configLocations.length; i++) {
! String configLocation = configLocations[i];
! InputStream inputStream = getServletContext().getResourceAsStream(configLocation);
! configDigester.clear();
! configDigester.push(config);
! configDigester.parse(inputStream);
! }
! } catch (Exception e) {
! log.error("Reload config error: " + e);
! }
! if (log.isInfoEnabled()) {
! log.info(config);
! }
! return config;
! }
!
! public String getServletInfo() {
! return "OpenAMF DefaultGateway servlet, http://www.openamf.org/";
! }
}
--- 40,336 ----
public class DefaultGateway extends HttpServlet {
! protected static Log log = LogFactory.getLog(DefaultGateway.class);
! protected static Log requestLog =
! LogFactory.getLog("org.openamf.OpenAMFRequest");
! protected static Log responseLog =
! LogFactory.getLog("org.openamf.OpenAMFResponse");
! private static final String OPENAMF_CONFIG = "OPENAMF_CONFIG";
! public void init() throws ServletException {
! reloadConfig();
! }
! /**
! * Process request
! *
! * @param req
! * @param resp
! * @throws ServletException
! * @throws IOException
! */
! public void service(HttpServletRequest req, HttpServletResponse resp)
! throws ServletException, IOException {
! AMFMessage requestMessage, responseMessage = null;
! try {
! requestMessage = deserializeAMFMessage(req);
!
! if (requestLog.isDebugEnabled()) {
! requestLog.debug("DUMP REQUEST\n" + requestMessage + "\n");
! }
!
! responseMessage = processMessage(req, requestMessage);
!
! if (responseLog.isDebugEnabled()) {
! responseLog.debug("DUMP RESPONSE\n" + responseMessage + "\n");
! }
!
! serializeAMFMessage(resp, responseMessage);
! } catch (Exception e) {
! log.error("Error in service: " + e, e);
! }
! }
! protected AMFMessage deserializeAMFMessage(HttpServletRequest req)
! throws IOException {
! DataInputStream inputStream = new DataInputStream(req.getInputStream());
! AMFDeserializer deserializer = new AMFDeserializer(inputStream);
! AMFMessage message = deserializer.getAMFMessage();
! return message;
! }
! /**
! * Serialize response message
! *
! * @param resp
! * @param message
! * @throws IOException
! */
! protected void serializeAMFMessage(
! HttpServletResponse resp,
! AMFMessage message)
! throws IOException {
! ByteArrayOutputStream baos = new ByteArrayOutputStream();
! DataOutputStream dos = new DataOutputStream(baos);
! AMFSerializer serializer = new AMFSerializer(dos);
! serializer.serializeMessage(message);
! resp.setContentType("application/x-amf");
! resp.setContentLength(baos.size());
! ServletOutputStream sos = resp.getOutputStream();
! baos.writeTo(sos);
! sos.flush();
! }
! /**
! * Process message
! *
! * @param req
! * @param message
! * @return
! */
! protected AMFMessage processMessage(
! HttpServletRequest req,
! AMFMessage message) {
! AMFMessage responseMessage = new AMFMessage();
! for (Iterator bodies = message.getBodies(); bodies.hasNext();) {
! AMFBody requestBody = (AMFBody) bodies.next();
! // invoke
! Object serviceResult = invokeBody(req, requestBody);
! String target = getTarget(requestBody, serviceResult);
! AMFBody responseBody = new AMFBody(target, "null", serviceResult);
! responseMessage.addBody(responseBody);
! }
! return responseMessage;
! }
! /**
! * Invoke service
! *
! * @param req
! * @param requestBody
! * @return
! */
! private Object invokeBody(HttpServletRequest req, AMFBody requestBody) {
! Object serviceResult = null;
! try {
! ServiceInvoker serviceInvoker = getServiceInvoker(requestBody, req);
! if (serviceInvoker == null) {
! throw new ServiceInvocationException(
! requestBody,
! new Exception("No service"));
! }
! preInvokeService(req, serviceInvoker);
! serviceResult = serviceInvoker.invokeService();
! serviceResult =
! postInvokeService(req, serviceInvoker, serviceResult);
! } catch (ServiceInvocationException e) {
! serviceResult = e.getAMFError();
! log.warn(e);
! }
! return serviceResult;
! }
! /**
! * Returns target
! *
! * @param requestBody request message body
! * @param serviceResult response message
! * @return
! */
! private String getTarget(AMFBody requestBody, Object serviceResult) {
! String target = "/onResult";
! if (serviceResult instanceof AMFError) {
! target = "/onStatus";
! }
! return requestBody.getResponse() + target;
! }
! /**
! * Pre invoke service
! *
! * @param httpServletRequest
! * @param serviceInvoker
! * @throws ServiceInvocationException
! */
! protected void preInvokeService(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker)
! throws ServiceInvocationException {
! if (serviceInvoker.getPersistService()) {
! Object persistantServiceObject =
! httpServletRequest.getSession().getAttribute(
! serviceInvoker.getPersistantServiceName());
! serviceInvoker.setPersistantServiceObject(persistantServiceObject);
! }
! }
! /**
! * Post invoke service
! *
! * @param httpServletRequest
! * @param serviceInvoker
! * @param serviceResult
! * @return
! * @throws ServiceInvocationException
! */
! protected Object postInvokeService(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker,
! Object serviceResult)
! throws ServiceInvocationException {
! if (serviceInvoker.getPersistService()) {
! httpServletRequest.getSession().setAttribute(
! serviceInvoker.getPersistantServiceName(),
! serviceInvoker.getPersistantServiceObject());
! }
! serviceResult =
! processRecordSet(httpServletRequest, serviceInvoker, serviceResult);
! return serviceResult;
! }
! private Object processRecordSet(
! HttpServletRequest httpServletRequest,
! ServiceInvoker serviceInvoker,
! Object serviceResult)
! throws ServiceInvocationException {
! if (serviceResult instanceof ResultSet) {
! ASRecordSet asRecordSet = new ASRecordSet();
! try {
! asRecordSet.populate((ResultSet) serviceResult);
! serviceResult = asRecordSet;
! } catch (IOException e) {
! throw new ServiceInvocationException(
! serviceInvoker.getRequest(),
! e);
! }
! }
! if (serviceResult instanceof ASRecordSet) {
! ASRecordSet asRecordSet = (ASRecordSet) serviceResult;
! if (asRecordSet.getTotalCount()
! > asRecordSet.getInitialData().size()) {
! httpServletRequest.getSession().setAttribute(
! asRecordSet.getId(),
! asRecordSet);
! }
! }
! return serviceResult;
! }
! protected ServiceInvoker getServiceInvoker(
! AMFBody requestBody,
! HttpServletRequest httpServletRequest)
! throws ServiceInvocationException {
! ServiceInvoker serviceInvoker = null;
! ServiceRequest request = new ServiceRequest(requestBody);
! try {
! for (Iterator i =
! OpenAMFConfig.getInstance().getServiceInvokerConfigs();
! i.hasNext();
! ) {
! ServiceInvokerConfig invokerConfig =
! (ServiceInvokerConfig) i.next();
! log.debug(
! "Checking if the "
! + invokerConfig.getName()
! + " Service Invoker can support the request");
! ServiceInvoker tempInvoker =
! ServiceInvoker.load(
! invokerConfig.getClassName(),
! request,
! httpServletRequest,
! getServletContext());
! if (tempInvoker.supports(request)) {
! serviceInvoker = tempInvoker;
! serviceInvoker.prepare(request);
! log.debug(invokerConfig.getName() + ": YES");
! break;
! } else {
! log.debug(invokerConfig.getName() + ": NO");
! }
! }
! } catch (Exception e) {
! throw new ServiceInvocationException(request, e);
! }
! return serviceInvoker;
! }
! /**
! * Reloads OpenAMF COnfiguration
! *
! * @return
! */
! protected OpenAMFConfig reloadConfig() {
! OpenAMFConfig config = OpenAMFConfig.getInstance();
! ConfigDigester configDigester = new ConfigDigester();
! configDigester.setUseContextClassLoader(true);
! String configParam =
! getServletConfig().getInitParameter(OPENAMF_CONFIG);
! String[] configLocations = StringUtils.split(configParam, ",");
! try {
! for (int i = 0; i < configLocations.length; i++) {
! String configLocation = configLocations[i];
! InputStream inputStream =
! getServletContext().getResourceAsStream(configLocation);
! configDigester.clear();
! configDigester.push(config);
! configDigester.parse(inputStream);
! }
! } catch (Exception e) {
! log.error("Reload config error: " + e);
! }
! if (log.isInfoEnabled()) {
! log.info(config);
! }
! return config;
! }
!
! public String getServletInfo() {
! return "OpenAMF DefaultGateway servlet, http://www.openamf.org/";
! }
}
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf