*/
package com.jetbrains.jsonSchema.extension;
-import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.VirtualFile;
* @author Irina.Chernushina on 2/24/2016.
*/
public class JsonSchemaProjectSelfProviderFactory implements JsonSchemaProviderFactory {
- private static final Logger LOG = Logger.getInstance("#com.jetbrains.jsonSchema.extension.JsonSchemaProjectSelfProviderFactory");
public static final String SCHEMA_JSON_FILE_NAME = "schema.json";
private final List<JsonSchemaFileProvider> myProviders;
@Override
public VirtualFile getSchemaFile() {
- return JsonSchemaProviderFactory.getResourceFile(JsonSchemaProjectSelfProviderFactory.class, "jsonSchema/schema.json");
+ return JsonSchemaProviderFactory.getResourceFile(JsonSchemaProjectSelfProviderFactory.class, "/jsonSchema/schema.json");
}
@Override
package com.jetbrains.jsonSchema.extension;
-
+import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VfsUtil;
public interface JsonSchemaProviderFactory {
ExtensionPointName<JsonSchemaProviderFactory> EP_NAME = ExtensionPointName.create("JavaScript.JsonSchema.ProviderFactory");
+ Logger LOG = Logger.getInstance(JsonSchemaProviderFactory.class);
List<JsonSchemaFileProvider> getProviders(@Nullable Project project);
+ /**
+ * Finds a {@link VirtualFile} instance corresponding to a specified resource path (relative or absolute).
+ *
+ * @param baseClass
+ * @param resourcePath String identifying a resource (relative or absolute)
+ * See {@link Class#getResource(String)} for more details
+ * @return VirtualFile instance, or null if not found
+ */
static VirtualFile getResourceFile(@NotNull Class baseClass, @NotNull String resourcePath) {
- final ClassLoader loader = baseClass.getClassLoader();
- final URL resource = loader.getResource(resourcePath);
- assert resource != null;
-
- final VirtualFile file = VfsUtil.findFileByURL(resource);
- assert file != null;
+ URL url = baseClass.getResource(resourcePath);
+ if (url == null) {
+ LOG.error("Cannot find resource " + resourcePath);
+ return null;
+ }
+ VirtualFile file = VfsUtil.findFileByURL(url);
+ if (file == null) {
+ LOG.error("Cannot find file by " + resourcePath);
+ return null;
+ }
return file;
}
}