diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java index ab6289584719..1ccd66eaaf4d 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java @@ -258,12 +258,13 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper } @Override - public void setupCatchBlock(String exceptionName, PsiElement context, PsiCatchSection catchSection) { + public void setupCatchBlock(@NotNull String exceptionName, @NotNull PsiType exceptionType, PsiElement context, @NotNull PsiCatchSection catchSection) { final FileTemplate catchBodyTemplate = FileTemplateManager.getInstance().getCodeTemplate(JavaTemplateUtil.TEMPLATE_CATCH_BODY); LOG.assertTrue(catchBodyTemplate != null); final Properties props = new Properties(); props.setProperty(FileTemplate.ATTRIBUTE_EXCEPTION, exceptionName); + props.setProperty(FileTemplate.ATTRIBUTE_EXCEPTION_TYPE, exceptionType.getCanonicalText()); if (context != null && context.isPhysical()) { final PsiDirectory directory = context.getContainingFile().getContainingDirectory(); if (directory != null) { diff --git a/java/java-psi-impl/src/com/intellij/core/CoreJavaPsiImplementationHelper.java b/java/java-psi-impl/src/com/intellij/core/CoreJavaPsiImplementationHelper.java index e78527248038..6200d6d97d4c 100644 --- a/java/java-psi-impl/src/com/intellij/core/CoreJavaPsiImplementationHelper.java +++ b/java/java-psi-impl/src/com/intellij/core/CoreJavaPsiImplementationHelper.java @@ -52,7 +52,7 @@ public class CoreJavaPsiImplementationHelper extends JavaPsiImplementationHelper } @Override - public void setupCatchBlock(String exceptionName, PsiElement context, PsiCatchSection element) { + public void setupCatchBlock(@NotNull String exceptionName, @NotNull PsiType exceptionType, PsiElement context, @NotNull PsiCatchSection element) { throw new UnsupportedOperationException("TODO"); } } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java index 77b0675b6dde..b506621f6ba0 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java @@ -50,5 +50,6 @@ public abstract class JavaPsiImplementationHelper { @Nullable public abstract PsiElement getDefaultMemberAnchor(@NotNull PsiClass psiClass, @NotNull PsiMember firstPsi); - public abstract void setupCatchBlock(String exceptionName, PsiElement context, PsiCatchSection element); + public abstract void setupCatchBlock(@NotNull String exceptionName, @NotNull PsiType exceptionType, + @Nullable PsiElement context, @NotNull PsiCatchSection element); } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java index e87fbe3cccbf..8aedad8de691 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java @@ -748,7 +748,7 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps final Project project = myManager.getProject(); final JavaPsiImplementationHelper helper = JavaPsiImplementationHelper.getInstance(project); - helper.setupCatchBlock(exceptionName, context, (PsiCatchSection)element); + helper.setupCatchBlock(exceptionName, exceptionType, context, (PsiCatchSection)element); final CodeStyleManager styleManager = CodeStyleManager.getInstance(project); final PsiCatchSection catchSection = (PsiCatchSection)styleManager.reformat(element); diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplate.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplate.java index a3e7769ce355..ddfe60f20f86 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplate.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplate.java @@ -33,6 +33,7 @@ public interface FileTemplate extends Cloneable { FileTemplate[] EMPTY_ARRAY = new FileTemplate[0]; String ATTRIBUTE_EXCEPTION = "EXCEPTION"; + String ATTRIBUTE_EXCEPTION_TYPE = "EXCEPTION_TYPE"; String ATTRIBUTE_DESCRIPTION = "DESCRIPTION"; String ATTRIBUTE_DISPLAY_NAME = "DISPLAY_NAME"; diff --git a/resources-en/src/fileTemplates/code/Catch Statement Body.java.html b/resources-en/src/fileTemplates/code/Catch Statement Body.java.html index d1c5a3b03d99..06712437b6e9 100644 --- a/resources-en/src/fileTemplates/code/Catch Statement Body.java.html +++ b/resources-en/src/fileTemplates/code/Catch Statement Body.java.html @@ -19,6 +19,11 @@