create constructor in context: also for java

This commit is contained in:
Anna Kozlova
2012-11-01 16:33:59 +01:00
parent 53348aaeda
commit 691d5ea77d
5 changed files with 18 additions and 5 deletions
@@ -218,7 +218,7 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
JVMElementFactory factory = JVMElementFactories.requireFactory(aClass.getLanguage(), aClass.getProject());
CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject());
PsiMethod constructor = factory.createMethodFromText(aClass.getName() + "() {}", aClass);
PsiMethod constructor = factory.createConstructor(aClass.getName(), aClass);
String modifier = getConstructorModifier(aClass);
if (modifier != null) {
PsiUtil.setModifierProperty(constructor, modifier, true);
@@ -259,14 +259,15 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
JavaCodeStyleManager javaStyle = JavaCodeStyleManager.getInstance(aClass.getProject());
final PsiMethod dummyConstructor = factory.createMethodFromText(constructor.getText(), null);
final PsiMethod dummyConstructor = factory.createConstructor(aClass.getName());
dummyConstructor.getParameterList().replace(constructor.getParameterList().copy());
List<PsiParameter> fieldParams = new ArrayList<PsiParameter>();
for (PsiField field : fields) {
String fieldName = field.getName();
String name = javaStyle.variableNameToPropertyName(fieldName, VariableKind.FIELD);
String parmName = javaStyle.propertyNameToVariableName(name, VariableKind.PARAMETER);
parmName = javaStyle.suggestUniqueVariableName(parmName, dummyConstructor, true);
PsiParameter parm = factory.createParameter(parmName, field.getType());
PsiParameter parm = factory.createParameter(parmName, field.getType(), aClass);
final NullableNotNullManager nullableManager = NullableNotNullManager.getInstance(field.getProject());
final String notNull = nullableManager.getNotNull(field);
@@ -275,6 +276,7 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
}
constructor.getParameterList().add(parm);
dummyConstructor.getParameterList().add(parm.copy());
fieldParams.add(parm);
}
@@ -394,9 +394,9 @@ public class GenerateMembersUtil {
private static PsiMethod createMethod(@NotNull JVMElementFactory factory,
@NotNull PsiMethod method, PsiElement target) {
if (method.isConstructor()) {
return factory.createMethodFromText(method.getName() + "(){}", target);
return factory.createConstructor(method.getName(), target);
}
return factory.createMethodFromText("void " + method.getName() + "(){}", target);
return factory.createMethod(method.getName(), PsiType.VOID);
}
private static void substituteReturnType(@NotNull PsiManager manager,
@@ -184,6 +184,7 @@ public interface JVMElementFactory {
*/
@NotNull
PsiMethod createConstructor(@NotNull @NonNls String name);
PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context);
/**
* Creates a class type for the specified class, using the specified substitutor
@@ -256,6 +256,11 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
return (PsiMethod)CodeStyleManager.getInstance(myManager.getProject()).reformat(method);
}
@Override
public PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context) {
return createMethodFromText(name + "() {}", context);
}
@NotNull
@Override
public PsiClassInitializer createClassInitializer() throws IncorrectOperationException {
@@ -1019,6 +1019,11 @@ public class GroovyPsiElementFactoryImpl extends GroovyPsiElementFactory {
return createConstructorFromText(name, name + "(){}", null);
}
@Override
public PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context) {
return createConstructorFromText(name, name + "(){}", context);
}
@NotNull
@Override
public PsiClassType createType(@NotNull PsiClass resolve, @NotNull PsiSubstitutor substitutor) {