Source Code Cross Referenced for CGIServletWrapper.java in  » Scripting » Kawa » gnu » kawa » servlet » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Scripting » Kawa » gnu.kawa.servlet 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        // Copyright (c) 2002  Per M.A. Bothner.
002:        // This is free software;  for terms and warranty disclaimer see ./COPYING.
003:
004:        package gnu.kawa.servlet;
005:
006:        import javax.servlet.*;
007:        import javax.servlet.http.*;
008:        import java.util.*;
009:        import java.io.*;
010:        import java.net.*;
011:
012:        /** Wrapper class to allow a Servlet to be run as a CGI script.
013:         * Invoked as:
014:         *   java CGI_ARGS... gnu.kawa.servlet.CGIServletWrapper SERVLET
015:         * where CGI_ARGS... are properties set from CGI environment variables (for
016:         * example -DPATH_INFO="foo") and SERVLET is the name of the servlet class.
017:         * The cgi-wrapper program in ../../../bin can used do this.
018:         */
019:
020:        public class CGIServletWrapper extends ServletOutputStream implements 
021:                HttpServletRequest, HttpServletResponse, ServletConfig,
022:                ServletContext {
023:            byte buffer[] = null;
024:            int bufpos = 0;
025:            PrintStream out = System.out;
026:            Vector headers = new Vector();
027:            String sawContentType;
028:            int statusCode = 0;
029:            String statusString;
030:            String servletName;
031:
032:            public static void main(String[] args) {
033:                try {
034:                    CGIServletWrapper wrapper = new CGIServletWrapper();
035:                    Class servClass = Class.forName(args[0]);
036:                    wrapper.servletName = args[0];
037:                    HttpServlet servlet = (HttpServlet) servClass.newInstance();
038:                    servlet.init(wrapper);
039:                    servlet.service(wrapper, wrapper);
040:                    wrapper.flushBuffer();
041:                } catch (Throwable ex) {
042:                    ex.printStackTrace();
043:                    System.exit(-1);
044:                }
045:            }
046:
047:            private static final int defaultBufferSize = 2048;
048:
049:            private void allocateBuffer() {
050:                if (buffer == null)
051:                    buffer = new byte[defaultBufferSize];
052:            }
053:
054:            public void write(int c) throws java.io.IOException {
055:                allocateBuffer();
056:                int bufsize = buffer.length;
057:                if (buffer.length == 0) {
058:                    committ();
059:                    out.write(c);
060:                } else {
061:                    if (bufpos >= buffer.length)
062:                        flushBuffer();
063:                    buffer[bufpos++] = (byte) c;
064:                }
065:            }
066:
067:            public String getCgiEnvVar(String name) {
068:                return System.getProperty(name);
069:            }
070:
071:            public ServletOutputStream getOutputStream() {
072:                return this ;
073:            }
074:
075:            PrintWriter writer;
076:
077:            public java.io.PrintWriter getWriter() {
078:                if (writer == null)
079:                    writer = new PrintWriter(out);
080:                return writer;
081:            }
082:
083:            public java.util.Map getParameterMap() {
084:                return null; // FIXME
085:            }
086:
087:            public void setBufferSize(int size) {
088:                if (bufpos > 0 || committed)
089:                    throw new IllegalStateException();
090:                buffer = new byte[size];
091:            }
092:
093:            public int getBufferSize() {
094:
095:                return buffer == null ? defaultBufferSize : buffer.length;
096:            }
097:
098:            public void setLocale(java.util.Locale locale) {
099:                // FIXME
100:            }
101:
102:            private void committ() throws IOException {
103:                if (!committed) {
104:                    printHeaders();
105:                    committed = true;
106:                }
107:            }
108:
109:            public void flushBuffer() throws IOException {
110:                committ();
111:                if (bufpos > 0)
112:                    out.write(buffer, 0, bufpos);
113:                bufpos = 0;
114:            }
115:
116:            public void resetBuffer() {
117:                bufpos = 0;
118:            }
119:
120:            public void reset() {
121:                // FIXME
122:                resetBuffer();
123:            }
124:
125:            java.util.Hashtable attributes;
126:
127:            public Object getAttribute(String name) {
128:                return attributes == null ? null : attributes.get(name);
129:            }
130:
131:            public void setAttribute(String name, Object value) {
132:                if (value == null)
133:                    removeAttribute(name);
134:                else {
135:                    if (attributes == null)
136:                        attributes = new java.util.Hashtable();
137:                    attributes.put(name, value);
138:                }
139:            }
140:
141:            public void removeAttribute(String name) {
142:                if (attributes != null)
143:                    attributes.remove(name);
144:            }
145:
146:            public Enumeration getAttributeNames() {
147:                return attributes.keys();
148:            }
149:
150:            public String getContentType() {
151:                return getCgiEnvVar("CONTENT_TYPE");
152:            }
153:
154:            public String getPathInfo() {
155:                return getCgiEnvVar("PATH_INFO");
156:            }
157:
158:            public String getPathTranslated() {
159:                return getCgiEnvVar("PATH_TRANSLATED");
160:            }
161:
162:            public String getRequestURI() {
163:                String script = getServletPath();
164:                String path = getPathInfo();
165:                if (script == null)
166:                    return path;
167:                if (path == null)
168:                    return script;
169:                return script + '/' + path;
170:            }
171:
172:            public StringBuffer getRequestURL() {
173:                // Copied from Tomcat 4.0:
174:
175:                StringBuffer url = new StringBuffer(100);
176:                String scheme = getScheme();
177:                int port = getServerPort();
178:                if (port < 0)
179:                    port = 80; // Work around java.net.URL bug
180:                url.append(scheme);
181:                url.append("://");
182:                url.append(getServerName());
183:                if ((scheme.equals("http") && (port != 80))
184:                        || (scheme.equals("https") && (port != 443))) {
185:                    url.append(':');
186:                    url.append(port);
187:                }
188:                url.append('/');
189:                url.append(getRequestURI());
190:                return url;
191:            }
192:
193:            public String getProtocol() {
194:                return getCgiEnvVar("SERVER_PROTOCOL");
195:            }
196:
197:            public int getServerPort() {
198:                String port = getCgiEnvVar("SERVER_PORT");
199:                if (port != null) {
200:                    try {
201:                        return Integer.parseInt(port);
202:                    } catch (Throwable ex) {
203:                    }
204:                }
205:                return -1;
206:            }
207:
208:            public int getLocalPort() {
209:                return getServerPort(); // is this resonable?
210:            }
211:
212:            public String getLocalAddr() {
213:                try {
214:                    return InetAddress.getByName(getLocalName())
215:                            .getHostAddress();
216:                } catch (UnknownHostException ex) {
217:                    return "127.0.0.1";
218:                }
219:            }
220:
221:            public String getLocalName() {
222:                return getServerName(); // is this resonable?
223:            }
224:
225:            public int getRemotePort() {
226:                return -1; // FIXME
227:            }
228:
229:            public boolean isSecure() {
230:                return getServerPort() == 443; // FIXME
231:            }
232:
233:            public String getServerName() {
234:                return getCgiEnvVar("SERVER_NAME");
235:            }
236:
237:            public String getMethod() {
238:                String method = getCgiEnvVar("REQUEST_METHOD");
239:                return method == null ? "GET" : method;
240:            }
241:
242:            boolean committed;
243:            String characterEncoding;
244:
245:            public boolean isCommitted() {
246:                return committed;
247:            }
248:
249:            public String getCharacterEncoding() {
250:                return characterEncoding;
251:            }
252:
253:            public void setCharacterEncoding(String enc) {
254:                characterEncoding = enc;
255:            }
256:
257:            public void setContentType(String type) {
258:                setHeader("Content-Type", type);
259:            }
260:
261:            public void setContentLength(int len) {
262:                setIntHeader("Content-Length", len);
263:            }
264:
265:            public void addCookie(Cookie cookie) {
266:                // FIXME
267:            }
268:
269:            public boolean containsHeader(String str) {
270:                int num = headers.size();
271:                for (int i = 0; i < num; i += 2)
272:                    if (headers.elementAt(i).equals(str))
273:                        return true;
274:                return false;
275:            }
276:
277:            public String encodeURL(String str) {
278:                return null; // FIXME
279:            }
280:
281:            public String encodeUrl(String str) {
282:                return null; // FIXME
283:            }
284:
285:            public String encodeRedirectURL(String str) {
286:                return null; // FIXME
287:            }
288:
289:            public String encodeRedirectUrl(String str) {
290:                return null; // FIXME
291:            }
292:
293:            public void sendError(int i, String str) {
294:                statusCode = i;
295:                statusString = str;
296:            }
297:
298:            public void sendError(int i) {
299:                statusCode = i;
300:                statusString = null;
301:            }
302:
303:            public void sendRedirect(String str) {
304:                // ignore FIXME
305:            }
306:
307:            private void printHeader(String label, String value) {
308:                out.print(label);
309:                out.print(": ");
310:                out.println(value); // FIXME - need to quote?
311:            }
312:
313:            private void printHeaders() {
314:                if (statusCode != 0) {
315:                    out.print("Status: ");
316:                    out.print(statusCode);
317:                    if (statusString != null) {
318:                        out.print(' ');
319:                        out.print(statusString);
320:                    }
321:                    out.println();
322:                }
323:                if (sawContentType == null)
324:                    setContentType("text/html"); // FIXME
325:                int num = headers.size();
326:                for (int i = 0; i < num; i += 2)
327:                    printHeader(headers.elementAt(i).toString(), headers
328:                            .elementAt(i + 1).toString());
329:                //  if (sawContentType == null) writeRaw("Content-Type: text/html"); FIXME
330:                out.println();
331:            }
332:
333:            public void setDateHeader(String str, long l) {
334:                // ignore FIXME
335:            }
336:
337:            public void addDateHeader(String str, long l) {
338:                // ignore FIXME
339:            }
340:
341:            public void setHeader(String label, String value) {
342:                int num = headers.size();
343:                for (int i = 0; i < num; i += 2)
344:                    if (headers.elementAt(i).equals(label)) {
345:                        if (label.equalsIgnoreCase("Content-type"))
346:                            sawContentType = value;
347:                        headers.setElementAt(value, i + 1);
348:                        break;
349:                    }
350:                addHeader(label, value);
351:            }
352:
353:            public void setIntHeader(String str, int i) {
354:                setHeader(str, Integer.toString(i));
355:            }
356:
357:            public void addHeader(String label, String value) {
358:                if (label.equalsIgnoreCase("Content-type"))
359:                    sawContentType = value;
360:                headers.addElement(label);
361:                headers.addElement(value);
362:            }
363:
364:            public void addIntHeader(String str, int i) {
365:                addHeader(str, Integer.toString(i));
366:            }
367:
368:            public void setStatus(int i) {
369:                statusCode = i;
370:                statusString = null;
371:            }
372:
373:            public void setStatus(int i, String str) {
374:                statusCode = i;
375:                statusString = str;
376:            }
377:
378:            public String getScheme() {
379:                return getServerPort() == 443 ? "https" : "http"; // FIXME
380:            }
381:
382:            public java.util.Enumeration getLocales() {
383:                return null; // FIXME
384:            }
385:
386:            public String getRealPath(String path) {
387:                return null; // FIXME
388:            }
389:
390:            public Locale getLocale() {
391:                return null; // FIXME
392:            }
393:
394:            public RequestDispatcher getRequestDispatcher(String path) {
395:                return null; // FIXME
396:            }
397:
398:            public String getRemoteAddr() {
399:                return getCgiEnvVar("REMOTE_ADDR");
400:            }
401:
402:            public String getRemoteHost() {
403:                String host = getCgiEnvVar("REMOTE_HOST");
404:                return host != null ? host : getRemoteAddr();
405:            }
406:
407:            public java.io.BufferedReader getReader() {
408:                return null; // FIXME
409:            }
410:
411:            public ServletInputStream getInputStream() {
412:                return null; // FIXME
413:            }
414:
415:            public String getParameter(String name) {
416:                return null; // FIXME
417:            }
418:
419:            public Enumeration getParameterNames() {
420:                return null; // FIXME
421:            }
422:
423:            public String[] getParameterValues(String name) {
424:                return null; // FIXME
425:            }
426:
427:            public int getContentLength() {
428:                String length = getCgiEnvVar("CONTENT_LENGTH");
429:                if (length != null) {
430:                    try {
431:                        return Integer.parseInt(length);
432:                    } catch (Throwable ex) {
433:                    }
434:                }
435:                return 0;
436:            }
437:
438:            public String getAuthType() {
439:                return getCgiEnvVar("AUTH_TYPE");
440:            }
441:
442:            public long getDateHeader(String str) {
443:                return -1; // FIXME
444:            }
445:
446:            public String getHeader(String str) {
447:                return null; // FIXME
448:            }
449:
450:            public Enumeration getHeaders(String str) {
451:                return null; // FIXME
452:            }
453:
454:            public boolean isRequestedSessionIdValid() {
455:                return false; // FIXME
456:            }
457:
458:            public boolean isRequestedSessionIdFromCookie() {
459:                return false; // FIXME
460:            }
461:
462:            public boolean isRequestedSessionIdFromURL() {
463:                return false; // FIXME
464:            }
465:
466:            public boolean isRequestedSessionIdFromUrl() {
467:                return false; // FIXME
468:            }
469:
470:            public String getRequestedSessionId() {
471:                return null; // FIXME
472:            }
473:
474:            public String getServletPath() {
475:                return getCgiEnvVar("SCRIPT_NAME");
476:            }
477:
478:            public HttpSession getSession(boolean b) {
479:                return null; // FIXME
480:            }
481:
482:            public HttpSession getSession() {
483:                return null; // FIXME
484:            }
485:
486:            public String getRemoteUser() {
487:                return getCgiEnvVar("REMOTE_USER");
488:            }
489:
490:            public boolean isUserInRole(String role) {
491:                return false; // FIXME
492:            }
493:
494:            public java.security.Principal getUserPrincipal() {
495:                return null; // FIXME
496:            }
497:
498:            public String getContextPath() {
499:                return ""; // FIXME
500:            }
501:
502:            public String getQueryString() {
503:                return getCgiEnvVar("QUERY_STRING");
504:            }
505:
506:            public Enumeration getHeaderNames() {
507:                return null; // FIXME
508:            }
509:
510:            public int getIntHeader(String str) {
511:                return -1; // FIXME
512:            }
513:
514:            public javax.servlet.http.Cookie[] getCookies() {
515:                return null; // FIXME
516:            }
517:
518:            // ServletConfig methods
519:
520:            public String getInitParameter(String name) {
521:                return null; // FIXME
522:            }
523:
524:            public Enumeration getInitParameterNames() {
525:                return nullEnumeration;
526:            }
527:
528:            public ServletContext getServletContext() {
529:                return this ;
530:            }
531:
532:            public String getServletName() {
533:                return servletName;
534:            }
535:
536:            // ServletContext methods:
537:
538:            public ServletContext getContext(String path) {
539:                return null;
540:            }
541:
542:            public int getMajorVersion() {
543:                return 2;
544:            }
545:
546:            public int getMinorVersion() {
547:                return 3;
548:            }
549:
550:            public String getMimeType(String file) {
551:                return null;
552:            }
553:
554:            public java.util.Set getResourcePaths(String path) {
555:                return null;
556:            }
557:
558:            public java.net.URL getResource(String path) {
559:                return null;
560:            }
561:
562:            public java.io.InputStream getResourceAsStream(String path) {
563:                return null;
564:            }
565:
566:            public RequestDispatcher getNamedDispatcher(String path) {
567:                return null;
568:            }
569:
570:            public Servlet getServlet(String name) {
571:                return null;
572:            }
573:
574:            static final Enumeration nullEnumeration = new gnu.lists.SeqPosition(
575:                    gnu.lists.LList.Empty, 0, false);
576:
577:            public Enumeration getServlets() {
578:                return nullEnumeration;
579:            }
580:
581:            public Enumeration getServletNames() {
582:                return nullEnumeration;
583:            }
584:
585:            public void log(String message) {
586:            }
587:
588:            public void log(Exception ex, String mgs) {
589:            }
590:
591:            public void log(String msg, Throwable ex) {
592:            }
593:
594:            public String getServerInfo() {
595:                return "Kawa CGI/servlet wrapper";
596:            }
597:
598:            public java.lang.String getServletContextName() {
599:                return null;
600:            }
601:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.