blob: 4353bf602e041f8250f4ad0b63f2e7a82be5d81d [file] [log] [blame]
/*
* User: anna
* Date: 08-Aug-2008
*/
package com.intellij.refactoring.typeMigration.rules;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.typeMigration.TypeConversionDescriptor;
import com.intellij.refactoring.typeMigration.TypeConversionDescriptorBase;
import com.intellij.refactoring.typeMigration.TypeMigrationLabeler;
public class BoxingTypeConversionRule extends TypeConversionRule {
public TypeConversionDescriptorBase findConversion(final PsiType from, final PsiType to, final PsiMember member, final PsiExpression context,
final TypeMigrationLabeler labeler) {
if (to instanceof PsiClassType && from instanceof PsiPrimitiveType) {
if (!PsiUtil.isLanguageLevel5OrHigher(context)) {
final String boxedTypeName = ((PsiPrimitiveType)from).getBoxedTypeName();
if (Comparing.strEqual(boxedTypeName, to.getCanonicalText())) {
return new TypeConversionDescriptor("$qualifier$", boxedTypeName + ".valueOf($qualifier$)");
}
}
}
else if (from instanceof PsiClassType && to instanceof PsiPrimitiveType) {
if (!PsiUtil.isLanguageLevel5OrHigher(context)) {
final String boxedTypeName = ((PsiPrimitiveType)to).getBoxedTypeName();
if (Comparing.strEqual(boxedTypeName, from.getCanonicalText())) {
return new TypeConversionDescriptor("$qualifier$", "($qualifier$)." + to.getCanonicalText() + "Value()");
}
}
}
return null;
}
}