01: /*
02: * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
03: *
04: * This file is part of Resin(R) Open Source
05: *
06: * Each copy or derived work must preserve the copyright notice and this
07: * notice unmodified.
08: *
09: * Resin Open Source is free software; you can redistribute it and/or modify
10: * it under the terms of the GNU General Public License as published by
11: * the Free Software Foundation; either version 2 of the License, or
12: * (at your option) any later version.
13: *
14: * Resin Open Source is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17: * of NON-INFRINGEMENT. See the GNU General Public License for more
18: * details.
19: *
20: * You should have received a copy of the GNU General Public License
21: * along with Resin Open Source; if not, write to the
22: * Free SoftwareFoundation, Inc.
23: * 59 Temple Place, Suite 330
24: * Boston, MA 02111-1307 USA
25: *
26: * @author Scott Ferguson
27: */
28:
29: package com.caucho.eswrap.javax.xml.parsers;
30:
31: import com.caucho.es.Call;
32: import com.caucho.vfs.Path;
33: import com.caucho.vfs.ReadStream;
34:
35: import org.xml.sax.HandlerBase;
36: import org.xml.sax.InputSource;
37: import org.xml.sax.helpers.DefaultHandler;
38:
39: import javax.xml.parsers.SAXParser;
40: import java.io.IOException;
41: import java.io.InputStream;
42:
43: public class SAXParserEcmaWrap {
44: public static void parse(SAXParser parser, Call call, int length)
45: throws Throwable {
46: Object obj = call.getArgObject(0, length);
47: Object objBase = call.getArgObject(1, length);
48:
49: if (objBase instanceof HandlerBase) {
50: HandlerBase base = (HandlerBase) objBase;
51: if (obj instanceof InputStream)
52: parser.parse((InputStream) obj, base);
53: else if (obj instanceof Path) {
54: Path path = (Path) obj;
55: ReadStream is = path.openRead();
56: try {
57: parser.parse(is, base);
58: } finally {
59: is.close();
60: }
61: } else if (obj instanceof String) {
62: parser.parse((String) obj, base);
63: } else
64: throw new IOException();
65: } else {
66: DefaultHandler base = (DefaultHandler) objBase;
67: if (obj instanceof InputStream)
68: parser.parse((InputStream) obj, base);
69: else if (obj instanceof Path) {
70: Path path = (Path) obj;
71: ReadStream is = path.openRead();
72: try {
73: parser.parse(is, base);
74: } finally {
75: is.close();
76: }
77: } else if (obj instanceof String) {
78: parser.parse((String) obj, base);
79: } else if (obj instanceof InputSource) {
80: parser.parse((InputSource) obj, base);
81: } else
82: throw new IOException();
83: }
84: }
85: }
|