01: /*
02: * Copyright 2000,2005 wingS development team.
03: *
04: * This file is part of wingS (http://wingsframework.org).
05: *
06: * wingS is free software; you can redistribute it and/or modify
07: * it under the terms of the GNU Lesser General Public License
08: * as published by the Free Software Foundation; either version 2.1
09: * of the License, or (at your option) any later version.
10: *
11: * Please see COPYING for the complete licence.
12: */
13: package org.wings.jsp;
14:
15: import org.wings.externalizer.ExternalizedResource;
16: import org.wings.io.Device;
17: import org.wings.io.DeviceFactory;
18: import org.apache.commons.logging.Log;
19: import org.apache.commons.logging.LogFactory;
20:
21: import javax.servlet.ServletConfig;
22: import javax.servlet.ServletException;
23: import javax.servlet.http.HttpServlet;
24: import javax.servlet.http.HttpServletRequest;
25: import javax.servlet.http.HttpServletResponse;
26: import java.io.IOException;
27:
28: /**
29: * @author hengels
30: */
31: public class ExternalizerServlet extends HttpServlet {
32: /**
33: * Apache jakarta commons logger
34: */
35: private final static Log log = LogFactory
36: .getLog(ExternalizerServlet.class);
37:
38: private ServletConfig servletConfig;
39:
40: /* (non-Javadoc)
41: * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
42: */
43: public void init(ServletConfig servletConfig)
44: throws ServletException {
45: this .servletConfig = servletConfig;
46: }
47:
48: /*
49: * (non-Javadoc)
50: * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
51: */
52: protected void doGet(HttpServletRequest request,
53: HttpServletResponse response) throws ServletException,
54: IOException {
55: WingsSession wingsSession = WingsSession.getSession(request,
56: response);
57:
58: synchronized (request.getSession()) {
59: String path = request.getServletPath();
60: if (path == null)
61: return;
62:
63: int pos = path.lastIndexOf('/');
64: path = path.substring(pos + 1);
65: ExternalizedResource extInfo = wingsSession
66: .getExternalizeManager().getExternalizedResource(
67: path);
68: if (extInfo != null) {
69: final Device outputDevice = DeviceFactory
70: .createDevice(extInfo);
71: try {
72: wingsSession.getExternalizeManager().deliver(
73: extInfo, response, outputDevice);
74: } finally {
75: outputDevice.close();
76: }
77: } else
78: log.info("no resource with id " + path);
79: }
80: }
81: }
|