/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.xml; import java.io.IOException; import java.io.InputStream; import javax.xml.transform.URIResolver; import org.apache.xerces.xni.XMLResourceIdentifier; import org.apache.xerces.xni.parser.XMLEntityResolver; import org.apache.xerces.xni.parser.XMLInputSource; import org.jboss.tools.common.core.CommonCorePlugin; import org.xml.sax.SAXException; /** * @author Igels */ public class XMLEntityResolverImpl implements XMLEntityResolver { private URIResolver uriResolver; public XMLEntityResolverImpl() { } public XMLEntityResolverImpl(URIResolver uriResolver) { this.uriResolver = uriResolver; } public XMLInputSource resolveEntity(XMLResourceIdentifier rid) throws IOException { XMLInputSource result = null; String systemId = null; String publicId = null; InputStream is = null; try { DtdResolver resolver = new DtdResolver(); systemId = rid.getBaseSystemId()==null?rid.getLiteralSystemId():rid.getExpandedSystemId(); publicId = rid.getPublicId(); is = resolver.getInputStream(rid.getPublicId(), systemId); if(is!=null) { result = new XMLInputSource(rid.getPublicId(), systemId, rid.getBaseSystemId(), is, null); } } catch (SAXException e) { CommonCorePlugin.getPluginLog().logError( "Exception publicId=" + publicId + " systemId=" + systemId + " exception=" + e.getClass().getName() + ":" + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } return result; } }