com.intellij.psi.impl.source.PsiClassImpl Java Examples

The following examples show how to use com.intellij.psi.impl.source.PsiClassImpl. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: IocBeanInterfaceLineMarkerProvider.java    From NutzCodeInsight with Apache License 2.0 6 votes vote down vote up
/**
 * 取得实现类
 *
 * @param psiElement
 * @return
 */
private List<PsiElement> getImplListElements(String name, String qualifiedName, PsiElement psiElement, GlobalSearchScope moduleScope) {
    Project project = psiElement.getProject();
    Collection<PsiReferenceList> psiReferenceListCollection = JavaSuperClassNameOccurenceIndex.getInstance().get(name, project, moduleScope);
    List<PsiElement> elements = new ArrayList<>();
    for (PsiElement psiReferenceList : psiReferenceListCollection) {
        if (psiReferenceList instanceof PsiClassImpl) {
            PsiClassImpl psiClassImpl = (PsiClassImpl) psiReferenceList.getContext();
            if (psiClassImpl.getAnnotation(IOCBEAN_QUALI_FIED_NAME) != null) {
                elements.add(psiClassImpl);
            }
        }
    }
    if (methodIocBeans.containsKey(qualifiedName)) {
        elements.addAll(methodIocBeans.get(qualifiedName));
    }
    return elements;
}
 
Example #2
Source File: ImplUsageProviderTest.java    From Intellij-Plugin with Apache License 2.0 6 votes vote down vote up
@Test
public void TestIsImplicitUsageForClass() throws Exception {
    ModuleHelper helper = mock(ModuleHelper.class);
    PsiClass c = mock(PsiClassImpl.class);
    PsiMethod method = mock(PsiMethod.class);
    PsiModifierList list = mock(PsiModifierList.class);
    PsiAnnotation annotation = mock(PsiAnnotation.class);
    when(annotation.getQualifiedName()).thenReturn(BeforeStep.class.getCanonicalName());
    when(list.getAnnotations()).thenReturn(new PsiAnnotation[]{annotation});
    when(method.getModifierList()).thenReturn(list);
    when(c.getMethods()).thenReturn(new PsiMethod[]{method});
    when(helper.isGaugeModule(c)).thenReturn(true);

    boolean isUsed = new ImplUsageProvider(null, helper).isImplicitUsage(c);

    assertTrue(isUsed);
}
 
Example #3
Source File: AbstractPropertiesProvider.java    From intellij-quarkus with Eclipse Public License 2.0 5 votes vote down vote up
/**
 * Get or create the update hint from the given type.
 * 
 * @param collector
 * @param type      the type.
 * @return the hint name.
 */
protected String updateHint(IPropertiesCollector collector, PsiClass type) {
	if (type == null) {
		return null;
	}
	if (type.isEnum()) {
		// Register Enumeration in "hints" section
		//String hint = ClassUtil.getJVMClassName(type);
		String hint = type.getQualifiedName();
		if (!collector.hasItemHint(hint)) {
			ItemHint itemHint = collector.getItemHint(hint);
			itemHint.setSourceType(hint);
			if (type instanceof PsiClassImpl) {
				itemHint.setSource(Boolean.TRUE);
			}
			PsiElement[] children = type.getChildren();
			for (PsiElement c : children) {
				if (c instanceof PsiEnumConstant) {
					String enumName = ((PsiEnumConstant) c).getName();
					// TODO: extract Javadoc
					String description = null;
					ValueHint value = new ValueHint();
					value.setValue(enumName);
					itemHint.getValues().add(value);
				}
			}
		}
		return hint;
	}
	return null;
}
 
Example #4
Source File: ImplUsageProviderTest.java    From Intellij-Plugin with Apache License 2.0 5 votes vote down vote up
@Test
public void TestIsImplicitUsageForClassWithNoMethods() throws Exception {
    ModuleHelper helper = mock(ModuleHelper.class);
    PsiClass c = mock(PsiClassImpl.class);
    when(helper.isGaugeModule(c)).thenReturn(true);
    when(c.getMethods()).thenReturn(new PsiMethod[]{});

    boolean isUsed = new ImplUsageProvider(null, helper).isImplicitUsage(c);

    assertFalse(isUsed);
}
 
Example #5
Source File: OnePojoInfo.java    From codehelper.generator with Apache License 2.0 4 votes vote down vote up
public PsiClassImpl getPsiClass() {
    return psiClass;
}
 
Example #6
Source File: OnePojoInfo.java    From codehelper.generator with Apache License 2.0 4 votes vote down vote up
public void setPsiClass(PsiClassImpl psiClass) {
    this.psiClass = psiClass;
}
 
Example #7
Source File: AutoCodingAction.java    From codehelper.generator with Apache License 2.0 4 votes vote down vote up
@Override
    public void actionPerformed(AnActionEvent event) {
        String projectPath = StringUtils.EMPTY;
        try {
            //todo need check if need module.
            UserConfigService.loadUserConfig(ProjectHelper.getProjectPath(event));
            projectPath = ProjectHelper.getProjectPath(event);
            Project project = event.getProject();
            Editor editor = event.getData(LangDataKeys.EDITOR);
            PsiFile currentFile = event.getData(LangDataKeys.PSI_FILE);
            CaretModel caretModel = editor.getCaretModel();
            LogicalPosition oldLogicPos = caretModel.getLogicalPosition();
            String text = currentFile.getText();
            List<String> lines = Splitter.on("\n").splitToList(text);
            PojoLine pojo = getCursorLine(lines, oldLogicPos);
            PsiDirectory containingDirectory = currentFile.getContainingDirectory();
//            HintManager.getInstance().showInformationHint(editor,"success");
            String dir = containingDirectory.getVirtualFile().getCanonicalPath() + GenCodeResponseHelper.getPathSplitter() + currentFile.getName();
            AutoCodingRequest request = new AutoCodingRequest();
            request.setRequestType("AutoCoding");
            request.setCodingType("Setter");
            ServerRequestHelper.fillCommonField(request);
            if (pojo != null) {
                request.setPojoName(pojo.getClassName());
                LogicalPosition newStatementPos = new LogicalPosition(pojo.getLineNumber() , pojo.getLineStartPos() + 1);
                LogicalPosition insertPos = new LogicalPosition(pojo.getLineNumber() + 1 , 0 );
                caretModel.moveToLogicalPosition(newStatementPos);
                PsiElement currentFileElement = event.getData(LangDataKeys.PSI_ELEMENT);
                if (currentFileElement instanceof PsiClassImpl || currentFileElement instanceof ClsClassImpl) {
                    //                    Integer trueOffSet = getOffset(pojo, dir);
                    //                    if(trueOffSet != 0){
                    //                       offset = trueOffSet;
                    //                    }
                    Document document = PsiDocumentManager.getInstance(event.getProject()).getDocument(currentFile);
                    caretModel.moveToLogicalPosition(insertPos);
                    Integer offset = caretModel.getOffset();
                    String insert = insertSetter(project, pojo, document, currentFileElement, offset);
                    request.setInsert(insert);
//                    SettingService.getSetting().setLastInsertPos(offset);
//                    SettingService.getSetting().setLastInsertLength(setter.length());
                }
            }
//            VirtualFileManager.getInstance().syncRefresh();
//            ApplicationManager.getApplication().saveAll();

            caretModel.moveToLogicalPosition(oldLogicPos);
            SendToServerService.post(project,request);
        } catch (Throwable ignored) {
            LOGGER.error("actionPerformed :{}", ignored);
        }finally {
            LoggerWrapper.saveAllLogs(projectPath);
            SettingService.updateLastRunTime();
        }

    }
 
Example #8
Source File: OnePojoInfoHelper.java    From codehelper.generator with Apache License 2.0 4 votes vote down vote up
public static void parseIdeaFieldInfo(@NotNull OnePojoInfo onePojoInfo, GenCodeResponse response){
        String pojoName = onePojoInfo.getPojoName();
        String pojoFileShortName = pojoName + ".java";
        Project project = response.getRequest().getProject();
        PsiFile[] psiFile = FilenameIndex
                .getFilesByName(project, pojoFileShortName, GlobalSearchScope.projectScope(project));
        PsiElement firstChild = psiFile[0].getFirstChild();
        LOGGER.info("parseIdeaFieldInfo psiFile[0] path :{}", psiFile[0].getVirtualFile().getPath());
        PsiElement child = null;
        for (PsiFile each: psiFile){
            VirtualFile vf = each.getVirtualFile();
            LOGGER.info("parseIdeaFieldInfo :{}, :{}", vf.getPath(), onePojoInfo.getFullPojoPath());
            if (removeSplit(vf.getPath()).equals(removeSplit(onePojoInfo.getFullPojoPath()))){
                child = firstChild;
            }
        }

        List<PsiElement> elements = Lists.newArrayList();

//        i// Find Psi of class and package
        do {
            if (child instanceof PsiClassImpl) {
                elements.add(child);
            }
            if (child instanceof PsiPackageStatementImpl){
                onePojoInfo.setPojoPackage(((PsiPackageStatementImpl) child).getPackageName());
            }
            child = child.getNextSibling();
        }
        while (child != null);

        PsiClassImpl psiClass = (PsiClassImpl) elements.get(0);
        PsiElement context = psiClass.getContext();
        if(context == null){
            throw new RuntimeException("parse class error");
        }
        String text = context.getText();
        onePojoInfo.setPojoPackage(parsePackage(text));
        PsiField[] allFields = psiClass.getAllFields();
        List<PojoFieldInfo> fieldList = Lists.newArrayList();

        for (PsiField field : allFields) {
            if(isStaticField(field)){
                continue;
            }
            SupportFieldClass fieldClass = SupportFieldClass.fromDesc(field.getType().getCanonicalText());
            LOGGER.info("parseIdeaFieldInfo  canonicalText :{}", field.getType().getCanonicalText());
            if(fieldClass == SupportFieldClass.NONE){
                continue;
            }
            PojoFieldInfo fieldInfo = new PojoFieldInfo();
            fieldInfo.setFieldComment(parseComment(field));
            fieldInfo.setFieldName(field.getName());
            fieldInfo.setFieldClass(fieldClass);
            fieldInfo.setAnnotations(Lists.newArrayList());
            if(!StringUtils.containsIgnoreCase(fieldInfo.getFieldComment(), "IgnoreAutoGenerate")) {
                fieldList.add(fieldInfo);
            }
        }
        onePojoInfo.setPojoFieldInfos(fieldList);
    }
 
Example #9
Source File: ImplUsageProvider.java    From Intellij-Plugin with Apache License 2.0 4 votes vote down vote up
public boolean isImplicitUsage(PsiElement element) {
    if (element == null || !moduleHelper.isGaugeModule(element)) return false;
    if (element instanceof PsiClassImpl) return isClassUsed((PsiClassImpl) element);
    if (element instanceof PsiParameterImpl) return isParameterUsed((PsiParameterImpl) element);
    return isElementUsed(element);
}
 
Example #10
Source File: ImplUsageProvider.java    From Intellij-Plugin with Apache License 2.0 4 votes vote down vote up
private boolean isClassUsed(PsiClassImpl element) {
    for (PsiMethod psiMethod : element.getMethods())
        if (StepUtil.getGaugeStepAnnotationValues(psiMethod).size() > 0 || HookUtil.isHook(psiMethod)) return true;
    return false;
}