PsiJavaCodeReferenceElement ref1; if (exceptionName != null) { ref1 = factory.createReferenceElementByFQClassName(exceptionName, method.getResolveScope()); PsiJavaCodeReferenceElement ref; if (exceptionName != null) { ref = factory.createReferenceElementByFQClassName(exceptionName, method.getResolveScope());
private static PsiExpression getBoxedArgument(PsiExpression arg) throws IncorrectOperationException { arg = PsiUtil.deparenthesizeExpression(arg); assert arg != null; if (PsiUtil.isLanguageLevel5OrHigher(arg)) { return arg; } final PsiType type = arg.getType(); if (!(type instanceof PsiPrimitiveType) || type.equals(PsiType.NULL)) { return arg; } final PsiPrimitiveType primitiveType = (PsiPrimitiveType)type; final String boxedQName = primitiveType.getBoxedTypeName(); if (boxedQName == null) { return arg; } final GlobalSearchScope resolveScope = arg.getResolveScope(); final PsiElementFactory factory = JavaPsiFacade.getElementFactory(arg.getProject()); final PsiJavaCodeReferenceElement ref = factory.createReferenceElementByFQClassName(boxedQName, resolveScope); final PsiNewExpression newExpr = (PsiNewExpression)factory.createExpressionFromText("new A(b)", null); final PsiElement classRef = newExpr.getClassReference(); assert classRef != null; classRef.replace(ref); final PsiExpressionList argumentList = newExpr.getArgumentList(); assert argumentList != null; argumentList.getExpressions()[0].replace(arg); return newExpr; }
@Override protected void run(Result result) throws Throwable { IdeDocumentHistory.getInstance(project).includeCurrentPlaceAsChangePlace(); PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory(); PsiJavaCodeReferenceElement ref = baseClass == null ? null : elementFactory.createReferenceElementByFQClassName( baseClass, GlobalSearchScope.allScope(project)); try { PsiClass resultClass = JavaDirectoryService.getInstance().createClass(targetDirectory, className); resultRef.set(resultClass); if (ref != null) { PsiElement baseClass = ref.resolve(); boolean isInterface = baseClass instanceof PsiClass && ((PsiClass) baseClass).isInterface(); PsiReferenceList targetReferenceList = isInterface ? resultClass.getImplementsList() : resultClass.getExtendsList(); assert targetReferenceList != null; targetReferenceList.add(ref); } if (consumer != null) { consumer.consume(resultClass); } } catch (final IncorrectOperationException e) { ApplicationManager.getApplication().invokeLater( () -> Messages.showErrorDialog(project, "Unable to create class " + className + "\n" + e.getLocalizedMessage(), title)); } } }.execute();