01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: /* $Id: FOPSAXSVGDocumentFactory.java 426576 2006-07-28 15:44:37Z jeremias $ */
19:
20: package org.apache.fop.svg;
21:
22: import java.io.IOException;
23:
24: import org.xml.sax.EntityResolver;
25: import org.xml.sax.InputSource;
26: import org.xml.sax.SAXException;
27:
28: import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
29:
30: /**
31: * This is a special subclass to allow setting a special EntityResolver.
32: */
33: public class FOPSAXSVGDocumentFactory extends SAXSVGDocumentFactory {
34:
35: private EntityResolver additionalResolver;
36:
37: /**
38: * Creates a new DocumentFactory object.
39: * @param parser The SAX2 parser classname.
40: */
41: public FOPSAXSVGDocumentFactory(String parser) {
42: super (parser);
43: }
44:
45: /**
46: * Sets an additional entity resolver. It will be used before the default
47: * entity resolving.
48: * @param resolver Additional resolver
49: */
50: public void setAdditionalEntityResolver(EntityResolver resolver) {
51: this .additionalResolver = resolver;
52: }
53:
54: /**
55: * @see org.xml.sax.EntityResolver#resolveEntity(String, String)
56: */
57: public InputSource resolveEntity(String publicId, String systemId)
58: throws SAXException {
59: if (this .additionalResolver != null) {
60: try {
61: InputSource result = this .additionalResolver
62: .resolveEntity(publicId, systemId);
63: if (result != null) {
64: return result;
65: }
66: } catch (IOException ioe) {
67: /**@todo Batik's SAXSVGDocumentFactory should throw IOException,
68: * so we don't have to handle it here. */
69: throw new SAXException(ioe);
70: }
71: }
72: return super.resolveEntity(publicId, systemId);
73: }
74:
75: }
|