blob: f4c7ceb0ebd124ecf06d03b4f548279133423ca2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are 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:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.xml.core.internal.modelquery;
import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider;
import org.eclipse.wst.xml.core.internal.contentmodel.util.CMDocumentCache;
import org.w3c.dom.Document;
/**
* XMLModelQueryAssociationProvider
*/
class XMLModelQueryAssociationProvider extends XMLAssociationProvider {
protected URIResolver idResolver;
public XMLModelQueryAssociationProvider(CMDocumentCache cache, URIResolver idResolver) {
super(cache);
this.idResolver = idResolver;
}
protected String resolveGrammarURI(Document document, String publicId, String systemId) {
/*
* Fix for bug 110356
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=110356
*
* TODO: XMLCatalogURIResolverExtension was contributed to "postnormalization"
* stage, but not to "physical" stage. We have to reconcile that.
*/
String resolvedId = idResolver.resolve(null, publicId, systemId); // initially we had only this call
if(resolvedId == null){
String location = systemId;
if(location == null){
location = publicId;
}
// try physical location
resolvedId = idResolver.resolvePhysicalLocation(null, publicId, location);
}
return resolvedId;
}
}