1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.xerces.internal.util;
  23 
  24 import javax.xml.transform.Source;
  25 
  26 import com.sun.org.apache.xerces.internal.impl.XMLEntityManager;
  27 import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
  28 import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource;
  29 
  30 /**
  31  * {@link Source} that represents an {@link XMLInputSource}.
  32  *
  33  * <p>
  34  * Ideally, we should be able to have {@link XMLInputSource}
  35  * derive from {@link Source}, but the way
  36  * the {@link XMLInputSource#getSystemId()} method works is
  37  * different from the way {@link Source#getSystemId()} method works.
  38  *
  39  * <p>
  40  * In a long run, we should make them consistent so that we can
  41  * get rid of this awkward adaptor class.
  42  *
  43  * @author
  44  *     Kohsuke Kawaguchi
  45  */
  46 public final class XMLInputSourceAdaptor implements Source {
  47     /**
  48      * the actual source information.
  49      */
  50     public final XMLInputSource fSource;
  51 
  52     public XMLInputSourceAdaptor( XMLInputSource core ) {
  53         fSource = core;
  54     }
  55 
  56     public void setSystemId(String systemId) {
  57         fSource.setSystemId(systemId);
  58     }
  59 
  60     public String getSystemId() {
  61         try {
  62             return XMLEntityManager.expandSystemId(
  63                     fSource.getSystemId(), fSource.getBaseSystemId(), false);
  64         } catch (MalformedURIException e) {
  65             return fSource.getSystemId();
  66         }
  67     }
  68 }