From 2c41963ef11c2ea3ed4a82c67a06f7c2f42193d4 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 20 Jul 2010 12:31:47 +0400 Subject: [PATCH] NPE (EA-19846) --- .../moveMembers/MoveMembersProcessor.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java index 6ddce912fa95..bc6d43828c3b 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java @@ -156,19 +156,21 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { protected void performRefactoring(final UsageInfo[] usages) { try { // correct references to moved members from the outside - LanguageExtension extension=new LanguageExtension("com.intellij.refactoring.moveMemberHandler"); PsiClass targetClass = JavaPsiFacade.getInstance(myProject) .findClass(myOptions.getTargetClassName(), GlobalSearchScope.projectScope(myProject)); if (targetClass == null) return; final Map anchors = new HashMap(); for (PsiMember member : myMembersToMove) { - anchors.put(member, extension.forLanguage(member.getLanguage()).getAnchor(member, targetClass)); + final MoveMemberHandler handler = MoveMemberHandler.EP_NAME.forLanguage(member.getLanguage()); + if (handler != null) { + anchors.put(member, handler.getAnchor(member, targetClass)); + } } ArrayList otherUsages = new ArrayList(); for (UsageInfo usageInfo : usages) { MoveMembersUsageInfo usage = (MoveMembersUsageInfo)usageInfo; if (!usage.reference.isValid()) continue; - final MoveMemberHandler handler = extension.forLanguage(usageInfo.getElement().getLanguage()); + final MoveMemberHandler handler = MoveMemberHandler.EP_NAME.forLanguage(usageInfo.getElement().getLanguage()); if (handler!=null) { if (handler.changeExternalUsage(myOptions, usage)) continue; } @@ -189,13 +191,15 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { } } final RefactoringElementListener elementListener = getTransaction().getElementListener(member); - final MoveMemberHandler handler = extension.forLanguage(member.getLanguage()); - PsiMember newMember=handler.doMove(myOptions, member, anchors.get(member), targetClass); - elementListener.elementMoved(newMember); + final MoveMemberHandler handler = MoveMemberHandler.EP_NAME.forLanguage(member.getLanguage()); + if (handler != null) { + PsiMember newMember=handler.doMove(myOptions, member, anchors.get(member), targetClass); + elementListener.elementMoved(newMember); - fixModifierList(newMember, usages); - for (PsiReference reference : refsToBeRebind) { - reference.bindToElement(newMember); + fixModifierList(newMember, usages); + for (PsiReference reference : refsToBeRebind) { + reference.bindToElement(newMember); + } } }