diff --git a/src/com/seventh7/mybatis/alias/BeanAliasResolver.java b/src/com/seventh7/mybatis/alias/BeanAliasResolver.java index 32b03be..79532b8 100644 --- a/src/com/seventh7/mybatis/alias/BeanAliasResolver.java +++ b/src/com/seventh7/mybatis/alias/BeanAliasResolver.java @@ -1,23 +1,26 @@ package com.seventh7.mybatis.alias; -import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Set; +import com.google.common.collect.Sets; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.spring.CommonSpringModel; import com.intellij.spring.SpringManager; import com.intellij.spring.model.SpringBeanPointer; +import com.intellij.spring.model.SpringModelSearchParameters; +import com.intellij.spring.model.utils.SpringModelSearchers; import com.intellij.spring.model.utils.SpringPropertyUtils; import com.intellij.spring.model.xml.beans.SpringPropertyDefinition; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Collection; -import java.util.Set; - /** * @author yanglin */ @@ -25,18 +28,29 @@ public class BeanAliasResolver extends PackageAliasResolver{ private static final String MAPPER_ALIAS_PACKAGE_CLASS = "org.mybatis.spring.SqlSessionFactoryBean"; private static final String MAPPER_ALIAS_PROPERTY = "typeAliasesPackage"; - private ModuleManager moduleManager; + private final SpringModelSearchParameters.BeanClass searchParameters; + private ModuleManager moduleManager; private SpringManager springManager; public BeanAliasResolver(Project project) { super(project); this.moduleManager = ModuleManager.getInstance(project); this.springManager = SpringManager.getInstance(project); + this.searchParameters = createBeanSearchParameters(project); } - @NotNull @Override + private SpringModelSearchParameters.BeanClass createBeanSearchParameters(Project project) { + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); + final PsiClass psiClass = psiFacade.findClass(MAPPER_ALIAS_PACKAGE_CLASS, GlobalSearchScope.projectScope(project)); + return psiClass == null? null: SpringModelSearchParameters.byClass(psiClass); + } + + @NotNull @Override public Collection getPackages(@Nullable PsiElement element) { Set res = Sets.newHashSet(); + if (searchParameters == null) { + return res; + } for (Module module : moduleManager.getModules()) { for (CommonSpringModel springModel : springManager.getCombinedModel(module).getModelsToProcess()) { addPackages(res, springModel); @@ -46,7 +60,7 @@ public Collection getPackages(@Nullable PsiElement element) { } private void addPackages(Set res, CommonSpringModel springModel) { - for (SpringBeanPointer springBaseBeanPointer : springModel.findBeansByPsiClassWithInheritance(MAPPER_ALIAS_PACKAGE_CLASS)) { + for (SpringBeanPointer springBaseBeanPointer : SpringModelSearchers.findBeans(springModel, searchParameters)) { SpringPropertyDefinition basePackages = SpringPropertyUtils.findPropertyByName(springBaseBeanPointer.getSpringBean(), MAPPER_ALIAS_PROPERTY); if (basePackages != null) { final String value = basePackages.getValueElement().getStringValue(); diff --git a/src/com/seventh7/mybatis/service/EditorService.java b/src/com/seventh7/mybatis/service/EditorService.java index 805ec23..141370a 100644 --- a/src/com/seventh7/mybatis/service/EditorService.java +++ b/src/com/seventh7/mybatis/service/EditorService.java @@ -27,7 +27,7 @@ public class EditorService { public EditorService(Project project) { this.project = project; - this.codeFormatterFacade = new CodeFormatterFacade(new CodeStyleSettings()); + this.codeFormatterFacade = new CodeFormatterFacade(new CodeStyleSettings(), null); this.fileEditorManager = FileEditorManager.getInstance(project); }