provide classSignature variable to represent generic class type (IDEA-178298)

This commit is contained in:
Anna Kozlova
2017-09-04 13:21:31 +03:00
parent 12e4b68a04
commit 5d09123af9
3 changed files with 35 additions and 5 deletions

View File

@@ -3,7 +3,7 @@ public ##
#if($field.modifierStatic)
static void ##
#else
$classname ##
$classSignature ##
#end
set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)

View File

@@ -18,6 +18,7 @@ package com.intellij.java.codeInsight
import com.intellij.codeInsight.generation.ClassMember
import com.intellij.codeInsight.generation.GenerateGetterHandler
import com.intellij.codeInsight.generation.GenerateSetterHandler
import com.intellij.codeInsight.generation.SetterTemplatesManager
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
@@ -98,6 +99,33 @@ class Foo {
'''
}
void "test builder setter template"() {
myFixture.configureByText 'a.java', '''
class X<T extends String> {
T field;
<caret>
}
'''
try {
SetterTemplatesManager.instance.state.defaultTempalteName = "Builder"
generateSetter()
myFixture.checkResult '''
class X<T extends String> {
T field;
public X<T> setField(T field) {
this.field = field;
return this;
}
}
'''
}
finally {
SetterTemplatesManager.instance.state.defaultTempalteName = null
}
}
void "test strip field prefix"() {
def settings = CodeStyleSettingsManager.getInstance(getProject()).currentSettings.getCustomSettings(JavaCodeStyleSettings.class)
String oldPrefix = settings.FIELD_NAME_PREFIX

View File

@@ -23,13 +23,11 @@ import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMember;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.codeStyle.NameUtil;
import com.intellij.refactoring.util.RefactoringChangeUtil;
import com.intellij.util.containers.ContainerUtil;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
@@ -207,6 +205,10 @@ public class GenerationUtil {
// information to keep as it is to avoid breaking compatibility with prior releases
vc.put("classname", useFullyQualifiedName ? ce.getQualifiedName() : ce.getName());
vc.put("FQClassname", ce.getQualifiedName());
PsiType type = RefactoringChangeUtil.createThisExpression(clazz.getManager(), clazz).getType();
if (type != null) {
vc.put("classSignature", type.getPresentableText());
}
}
if (member != null) {