package org.jetbrains.idea.maven.dom;
import com.intellij.javaee.ExternalResourceManager;
+import com.intellij.javaee.ExternalResourceManagerEx;
import com.intellij.javaee.ResourceRegistrar;
import com.intellij.javaee.StandardResourceProvider;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.idea.maven.utils.MavenLog;
public class MavenSchemaProvider implements StandardResourceProvider {
public static final String MAVEN_PROJECT_SCHEMA_URL = "http://maven.apache.org/xsd/maven-4.0.0.xsd";
@NotNull
public static VirtualFile getSchemaFile(@NotNull String url) {
- String location = ExternalResourceManager.getInstance().getResourceLocation(url);
+ String location = ((ExternalResourceManagerEx)ExternalResourceManager.getInstance()).getStdResource(url, null);
+ assert location != null : "cannot find a standard resource for " + url;
+
VirtualFile result = VfsUtil.findRelativeFile(location, null);
- if (result == null) {
- MavenLog.LOG.error("Cannot find a schema file for URL: " + url + " location: " + location);
- }
+ assert result != null : "cannot find a schema file for URL: " + url + " location: " + location;
+
return result;
}
}
public abstract void removeExternalResourceListener(ExternalResourceListener listener);
@Nullable
- public abstract String getUserResourse(Project project, String url, String version);
+ public abstract String getUserResource(Project project, String url, String version);
+ @Nullable
+ public abstract String getStdResource(String url, String version);
}
public String getResourceLocation(@NonNls String url, String version) {
String result = getUserResourse(url, version);
- Map<String, String> map;
-
if (result == null) {
- map = getMap(myStdResources.getValue(), version, false);
- result = map != null ? map.get(url) : null;
+ result = getStdResource(url, version);
}
-
if (result == null) {
result = url;
}
-
return result;
}
@Override
@Nullable
- public String getUserResourse(Project project, String url, String version) {
+ public String getUserResource(Project project, String url, String version) {
String resourse = getProjectResources(project).getUserResourse(url, version);
return resourse == null ? getUserResourse(url, version) : resourse;
}
+ @Override
+ @Nullable
+ public String getStdResource(String url, String version) {
+ Map<String, String> map = getMap(myStdResources.getValue(), version, false);
+ return map != null ? map.get(url) : null;
+ }
+
@Nullable
private String getUserResourse(String url, String version) {
Map<String, String> map = getMap(myResources, version, false);