From 821ce3504d2c7aad7cd44e3d40d07a25d8c6b105 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 13 Jul 2018 19:54:54 +0200 Subject: [PATCH] allow passing resource class and correct relative path to xml resource --- .../application/ex/DecodeDefaultsUtil.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java b/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java index 55a4cd36779a..dfa6a42994a8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java @@ -36,14 +36,14 @@ public class DecodeDefaultsUtil { public static URL getDefaults(Object requestor, @NotNull String componentResourcePath) { URL url = RESOURCE_CACHE.get(componentResourcePath); if (url == null) { - Class requestorClass = requestor.getClass(); + Class requestorClass = requestor instanceof Class ? (Class)requestor : requestor.getClass(); if (StringUtil.startsWithChar(componentResourcePath, '/')) { - url = requestorClass.getResource(componentResourcePath + FileStorageCoreUtil.DEFAULT_EXT); + url = requestorClass.getResource(appendExt(componentResourcePath)); } else { - url = requestorClass.getResource('/' + ApplicationManagerEx.getApplicationEx().getName() + '/' + componentResourcePath + FileStorageCoreUtil.DEFAULT_EXT); + url = requestorClass.getResource(appendExt('/' + ApplicationManagerEx.getApplicationEx().getName() + '/' + componentResourcePath)); if (url == null) { - url = requestorClass.getResource('/' + componentResourcePath + FileStorageCoreUtil.DEFAULT_EXT); + url = requestorClass.getResource(appendExt('/' + componentResourcePath)); } } RESOURCE_CACHE.put(componentResourcePath, url); @@ -51,6 +51,14 @@ public class DecodeDefaultsUtil { return url; } + private static String appendExt(@NotNull String s) { + return appendIfNeeded(s, FileStorageCoreUtil.DEFAULT_EXT); + } + + private static String appendIfNeeded(@NotNull String head, @NotNull String tail) { + return head.endsWith(tail) ? head : head + tail; + } + @Nullable public static InputStream getDefaultsInputStream(Object requestor, @NotNull String componentResourcePath) { try {