blob: 0226eb5b36a4a149c6d5dbcc5ca19b3349b1323e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 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
*******************************************************************************/
package org.eclipse.wst.xml.core.tests.contentmodel;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider;
import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ExternalSchemaLocationProviderRegistry;
public class ExternalSchemaTest extends TestCase {
private static final String EXTERNAL_SCHEMA_LOCATION = "file://external/schema/foo.xsd";
public static class ExternalSchemaLocationProvider implements org.eclipse.wst.xml.core.contentmodel.modelquery.IExternalSchemaLocationProvider {
private static URI INTERESTED_RESOURCE = null;
public ExternalSchemaLocationProvider() {
try {
INTERESTED_RESOURCE = new URI("file://interested/path/file.xml");
} catch (Exception e) {}
}
public Map getExternalSchemaLocation(URI fileURI) {
Map map = new HashMap(1);
if (fileURI != null && fileURI.equals(INTERESTED_RESOURCE)) {
map.put(NO_NAMESPACE_SCHEMA_LOCATION, EXTERNAL_SCHEMA_LOCATION);
}
return map;
}
}
public void testExternalLocations() throws Exception {
final IExternalSchemaLocationProvider[] providers = ExternalSchemaLocationProviderRegistry.getInstance().getProviders();
assertTrue(providers.length > 0);
URI resource = new URI("file://uninterested/path/file.xml");
for (int i = 0; i < providers.length; i++) {
Map locations = providers[i].getExternalSchemaLocation(resource);
assertTrue("[" + resource + "] should have no external schemas.", locations == null || locations.isEmpty());
}
resource = new URI("file://interested/path/file.xml");
boolean foundCorrectSchema = false;
for (int i = 0; i < providers.length; i++) {
Map locations = providers[i].getExternalSchemaLocation(resource);
if (locations != null) {
String location = (String) locations.get(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION);
if (EXTERNAL_SCHEMA_LOCATION.equals(location)) {
foundCorrectSchema = true;
}
}
assertTrue("[" + resource + "] should have an external schema.", foundCorrectSchema);
}
}
}