1919import com .intellij .java .language .impl .codeInsight .ChangeContextUtil ;
2020import com .intellij .java .language .psi .*;
2121import com .intellij .java .language .psi .javadoc .PsiDocComment ;
22+ import consulo .annotation .access .RequiredReadAction ;
23+ import consulo .annotation .access .RequiredWriteAction ;
2224import consulo .annotation .component .ExtensionImpl ;
2325import consulo .language .psi .PsiDirectory ;
24- import consulo .language .psi .PsiElement ;
2526import consulo .language .psi .PsiFile ;
2627import consulo .language .psi .util .PsiTreeUtil ;
2728import consulo .language .util .IncorrectOperationException ;
2829import consulo .logging .Logger ;
2930import consulo .usage .UsageInfo ;
30-
3131import jakarta .annotation .Nonnull ;
3232
3333import java .util .Collection ;
@@ -55,27 +55,28 @@ public void prepareMove(@Nonnull PsiClass aClass) {
5555 }
5656 }
5757
58- public PsiClass doMoveClass (@ Nonnull final PsiClass aClass , @ Nonnull PsiDirectory moveDestination ) throws IncorrectOperationException {
58+ @ Override
59+ @ RequiredWriteAction
60+ public PsiClass doMoveClass (@ Nonnull PsiClass aClass , @ Nonnull PsiDirectory moveDestination ) throws IncorrectOperationException {
5961 PsiFile file = aClass .getContainingFile ();
60- final PsiJavaPackage newPackage = JavaDirectoryService .getInstance ().getPackage (moveDestination );
62+ PsiJavaPackage newPackage = JavaDirectoryService .getInstance ().getPackage (moveDestination );
6163
6264 PsiClass newClass = null ;
63- if (file instanceof PsiJavaFile ) {
64- if (!moveDestination .equals (file .getContainingDirectory ()) &&
65- moveDestination .findFile (file .getName ()) != null ) {
65+ if (file instanceof PsiJavaFile javaFile ) {
66+ if (!moveDestination .equals (javaFile .getContainingDirectory ()) && moveDestination .findFile (file .getName ()) != null ) {
6667 // moving second of two classes which were in the same file to a different directory (IDEADEV-3089)
6768 correctSelfReferences (aClass , newPackage );
68- final PsiFile newFile = moveDestination .findFile (file .getName ());
69+ PsiFile newFile = moveDestination .findFile (file .getName ());
6970 LOG .assertTrue (newFile != null );
7071 newClass = (PsiClass )newFile .add (aClass );
7172 correctOldClassReferences (newClass , aClass );
7273 aClass .delete ();
7374 }
74- else if ((( PsiJavaFile ) file ) .getClasses ().length > 1 ) {
75+ else if (javaFile .getClasses ().length > 1 ) {
7576 correctSelfReferences (aClass , newPackage );
76- final PsiClass created = JavaDirectoryService .getInstance ().createClass (moveDestination , aClass .getName ());
77+ PsiClass created = JavaDirectoryService .getInstance ().createClass (moveDestination , aClass .getName ());
7778 if (aClass .getDocComment () == null ) {
78- final PsiDocComment createdDocComment = created .getDocComment ();
79+ PsiDocComment createdDocComment = created .getDocComment ();
7980 if (createdDocComment != null ) {
8081 aClass .addAfter (createdDocComment , null );
8182 }
@@ -89,12 +90,13 @@ else if (((PsiJavaFile)file).getClasses().length > 1) {
8990 }
9091
9192 private static void correctOldClassReferences (final PsiClass newClass , final PsiClass oldClass ) {
92- final Set <PsiImportStatementBase > importsToDelete = new HashSet <PsiImportStatementBase >();
93+ final Set <PsiImportStatementBase > importsToDelete = new HashSet <>();
9394 newClass .getContainingFile ().accept (new JavaRecursiveElementVisitor () {
9495 @ Override
95- public void visitReferenceElement (PsiJavaCodeReferenceElement reference ) {
96+ @ RequiredWriteAction
97+ public void visitReferenceElement (@ Nonnull PsiJavaCodeReferenceElement reference ) {
9698 if (reference .isValid () && reference .isReferenceTo (oldClass )) {
97- final PsiImportStatementBase importStatement = PsiTreeUtil .getParentOfType (reference , PsiImportStatementBase .class );
99+ PsiImportStatementBase importStatement = PsiTreeUtil .getParentOfType (reference , PsiImportStatementBase .class );
98100 if (importStatement != null ) {
99101 importsToDelete .add (importStatement );
100102 return ;
@@ -119,13 +121,13 @@ private static void correctSelfReferences(final PsiClass aClass, final PsiJavaPa
119121 if (aPackage != null ) {
120122 aClass .accept (new JavaRecursiveElementWalkingVisitor () {
121123 @ Override
122- public void visitReferenceElement (PsiJavaCodeReferenceElement reference ) {
124+ @ RequiredWriteAction
125+ public void visitReferenceElement (@ Nonnull PsiJavaCodeReferenceElement reference ) {
123126 if (reference .isQualified () && reference .isReferenceTo (aClass )) {
124- final PsiElement qualifier = reference .getQualifier ();
125- if (qualifier instanceof PsiJavaCodeReferenceElement && ((PsiJavaCodeReferenceElement )qualifier ).isReferenceTo (
126- aPackage )) {
127+ if (reference .getQualifier () instanceof PsiJavaCodeReferenceElement codeRefElem
128+ && codeRefElem .isReferenceTo (aPackage )) {
127129 try {
128- (( PsiJavaCodeReferenceElement ) qualifier ) .bindToElement (newContainingPackage );
130+ codeRefElem .bindToElement (newContainingPackage );
129131 }
130132 catch (IncorrectOperationException e ) {
131133 LOG .error (e );
@@ -138,12 +140,15 @@ public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
138140 }
139141 }
140142
143+ @ Override
144+ @ RequiredReadAction
141145 public String getName (PsiClass clazz ) {
142- final PsiFile file = clazz .getContainingFile ();
143- if (!(file instanceof PsiJavaFile )) {
146+ if (!(clazz .getContainingFile () instanceof PsiJavaFile javaFile )) {
144147 return null ;
145148 }
146- return ((PsiJavaFile )file ).getClasses ().length > 1 ? clazz .getName () + "." + JavaFileType .INSTANCE .getDefaultExtension () : file .getName ();
149+ return javaFile .getClasses ().length > 1
150+ ? clazz .getName () + "." + JavaFileType .INSTANCE .getDefaultExtension ()
151+ : javaFile .getName ();
147152 }
148153
149154 @ Override
0 commit comments