1 /*
2  * reserved comment block
3  * DO NOT REMOVE OR ALTER!
4  */
5 /*
6  * The Apache Software License, Version 1.1
7  *
8  *
9  * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
10  * reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  *
16  * 1. Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions and the following disclaimer.
18  *
19  * 2. Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in
21  *    the documentation and/or other materials provided with the
22  *    distribution.
23  *
24  * 3. The end-user documentation included with the redistribution,
25  *    if any, must include the following acknowledgment:
26  *       "This product includes software developed by the
27  *        Apache Software Foundation (http://www.apache.org/)."
28  *    Alternately, this acknowledgment may appear in the software itself,
29  *    if and wherever such third-party acknowledgments normally appear.
30  *
31  * 4. The names "Xerces" and "Apache Software Foundation" must
32  *    not be used to endorse or promote products derived from this
33  *    software without prior written permission. For written
34  *    permission, please contact apache@apache.org.
35  *
36  * 5. Products derived from this software may not be called "Apache",
37  *    nor may "Apache" appear in their name, without prior written
38  *    permission of the Apache Software Foundation.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
44  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
46  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Apache Software Foundation and was
56  * originally based on software copyright (c) 1999, International
57  * Business Machines, Inc., http://www.apache.org.  For more
58  * information on the Apache Software Foundation, please see
59  * <http://www.apache.org/>.
60  */
61 package com.sun.org.apache.xerces.internal.util;
62 
63 import javax.xml.transform.Source;
64 
65 import com.sun.org.apache.xerces.internal.impl.XMLEntityManager;
66 import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
67 import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource;
68 
69 /**
70  * {@link Source} that represents an {@link XMLInputSource}.
71  *
72  * <p>
73  * Ideally, we should be able to have {@link XMLInputSource}
74  * derive from {@link Source}, but the way
75  * the {@link XMLInputSource#getSystemId()} method works is
76  * different from the way {@link Source#getSystemId()} method works.
77  *
78  * <p>
79  * In a long run, we should make them consistent so that we can
80  * get rid of this awkward adaptor class.
81  *
82  * @author
83  *     Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
84  */
85 public final class XMLInputSourceAdaptor implements Source {
86     /**
87      * the actual source information.
88      */
89     public final XMLInputSource fSource;
90 
XMLInputSourceAdaptor( XMLInputSource core )91     public XMLInputSourceAdaptor( XMLInputSource core ) {
92         fSource = core;
93     }
94 
setSystemId(String systemId)95     public void setSystemId(String systemId) {
96         fSource.setSystemId(systemId);
97     }
98 
getSystemId()99     public String getSystemId() {
100         try {
101             return XMLEntityManager.expandSystemId(
102                     fSource.getSystemId(), fSource.getBaseSystemId(), false);
103         } catch (MalformedURIException e) {
104             return fSource.getSystemId();
105         }
106     }
107 }
108