diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaVelocityEngineTemplateService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaVelocityEngineTemplateService.kt index a9ba44502d3..dbf2d0744d9 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaVelocityEngineTemplateService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaVelocityEngineTemplateService.kt @@ -8,12 +8,10 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.service import com.intellij.ide.fileTemplates.FileTemplateUtil import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor -import org.jetbrains.kotlin.tools.projectWizard.templates.Template -class IdeaVelocityEngineTemplateService : TemplateEngineService, IdeaWizardService { +class IdeaVelocityEngineTemplateService : TemplateEngineService(), IdeaWizardService { override fun renderTemplate(template: FileTemplateDescriptor, data: Map): String { - val templatePath = template.templateId - val templateText = Template::class.java.getResource(templatePath).readText() + val templateText = getTemplateText(template) return FileTemplateUtil.mergeTemplate(data, templateText, false) } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/TemplateEngineService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/TemplateEngineService.kt index 50606df6033..0d21c91509d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/TemplateEngineService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/TemplateEngineService.kt @@ -18,8 +18,15 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor import org.jetbrains.kotlin.tools.projectWizard.templates.Template import java.io.StringWriter -interface TemplateEngineService : WizardService { - fun renderTemplate(template: FileTemplateDescriptor, data: Map): String +abstract class TemplateEngineService : WizardService { + abstract fun renderTemplate(template: FileTemplateDescriptor, data: Map): String + + protected fun getTemplateText(template: FileTemplateDescriptor) = try { + val templateId = template.templateId.replace('\\', '/') + Template::class.java.getResource(templateId).readText() + } catch (e: Throwable) { + throw RuntimeException("Can not get template ${template.templateId}", e) + } fun Writer.writeTemplate(template: FileTemplate): TaskResult { val formatter = service() @@ -31,10 +38,9 @@ interface TemplateEngineService : WizardService { } -class VelocityTemplateEngineServiceImpl : TemplateEngineService, IdeaIndependentWizardService { +class VelocityTemplateEngineServiceImpl : TemplateEngineService(), IdeaIndependentWizardService { override fun renderTemplate(template: FileTemplateDescriptor, data: Map): String { - val templatePath = template.templateId - val templateText = Template::class.java.getResource(templatePath).readText() + val templateText = getTemplateText(template) val context = VelocityContext().apply { data.forEach { (key, value) -> put(key, value) } }