mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix stack overflow; remove some unnecessary indirection via PsiAdapter
This commit is contained in:
+2
-2
@@ -71,7 +71,7 @@ public class GenerateToStringUtils {
|
||||
List<PsiField> availableFields = new ArrayList<PsiField>();
|
||||
|
||||
// performs til filtering process
|
||||
PsiField[] fields = psi.getFields(clazz);
|
||||
PsiField[] fields = clazz.getFields();
|
||||
for (PsiField field : fields) {
|
||||
FieldElement fe = ElementFactory.newFieldElement(project, field, psi);
|
||||
if (log.isDebugEnabled()) log.debug("Field being filtered: " + fe);
|
||||
@@ -103,7 +103,7 @@ public class GenerateToStringUtils {
|
||||
List<PsiMethod> availableMethods = new ArrayList<PsiMethod>();
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getInstance(clazz.getProject()).getElementFactory();
|
||||
|
||||
PsiMethod[] methods = psi.getMethods(clazz);
|
||||
PsiMethod[] methods = clazz.getMethods();
|
||||
for (PsiMethod method : methods) {
|
||||
|
||||
MethodElement me = ElementFactory.newMethodElement(method, elementFactory, psi);
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ public class GenerateToStringWorker {
|
||||
this.psi = PsiAdapterFactory.getPsiAdapter();
|
||||
this.editor = editor;
|
||||
this.elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
|
||||
this.codeStyleManager = psi.getCodeStyleManager(project);
|
||||
this.codeStyleManager = CodeStyleManager.getInstance(project);
|
||||
this.containingFile = clazz.getContainingFile();
|
||||
this.config = GenerateToStringContext.getConfig();
|
||||
this.hasOverrideAnnotation = insertAtOverride;
|
||||
|
||||
+14
-14
@@ -55,9 +55,9 @@ public class ElementFactory {
|
||||
ce.setImplementNames(psi.getImplementsClassnames(clazz));
|
||||
|
||||
// other
|
||||
ce.setEnum(psi.isEnumClass(clazz));
|
||||
ce.setDeprecated(psi.isDeprecatedClass(clazz));
|
||||
ce.setException(psi.isExceptionClass(clazz));
|
||||
ce.setEnum(clazz.isEnum());
|
||||
ce.setDeprecated(clazz.isDeprecated());
|
||||
ce.setException(PsiAdapter.isExceptionClass(clazz));
|
||||
ce.setAbstract(psi.isAbstractClass(clazz));
|
||||
|
||||
return ce;
|
||||
@@ -83,8 +83,8 @@ public class ElementFactory {
|
||||
if (psi.isEnumField(field)) fe.setEnum(true);
|
||||
PsiModifierList modifiers = field.getModifierList();
|
||||
if (modifiers != null) {
|
||||
if (psi.isModifierTransient(modifiers)) fe.setModifierTransient(true);
|
||||
if (psi.isModifierVolatile(modifiers)) fe.setModifierVolatile(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.TRANSIENT)) fe.setModifierTransient(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.VOLATILE)) fe.setModifierVolatile(true);
|
||||
}
|
||||
|
||||
setElementInfo(fe, factory, type, modifiers, psi);
|
||||
@@ -126,11 +126,11 @@ public class ElementFactory {
|
||||
|
||||
// misc
|
||||
me.setReturnTypeVoid(psi.isTypeOfVoid(method.getReturnType()));
|
||||
me.setDeprecated(psi.isDeprecatedMethod(method));
|
||||
me.setDeprecated(method.isDeprecated());
|
||||
|
||||
// modifiers
|
||||
if (psi.isModifierAbstract(modifiers)) me.setModifierAbstract(true);
|
||||
if (psi.isModifierSynchronized(modifiers)) me.setModifierSynchronzied(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.ABSTRACT)) me.setModifierAbstract(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.SYNCHRONIZED)) me.setModifierSynchronzied(true);
|
||||
|
||||
return me;
|
||||
}
|
||||
@@ -184,18 +184,18 @@ public class ElementFactory {
|
||||
|
||||
// modifiers
|
||||
if (modifiers != null) {
|
||||
if (psi.isModifierStatic(modifiers)) element.setModifierStatic(true);
|
||||
if (psi.isModifierFinal(modifiers)) element.setModifierFinal(true);
|
||||
if (psi.isModifierPublic(modifiers)) {
|
||||
if (modifiers.hasModifierProperty(PsiModifier.STATIC)) element.setModifierStatic(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.FINAL)) element.setModifierFinal(true);
|
||||
if (modifiers.hasModifierProperty(PsiModifier.PUBLIC)) {
|
||||
element.setModifierPublic(true);
|
||||
}
|
||||
else if (psi.isModifierProtected(modifiers)) {
|
||||
else if (modifiers.hasModifierProperty(PsiModifier.PROTECTED)) {
|
||||
element.setModifierProtected(true);
|
||||
}
|
||||
else if (psi.isModifierPackageLocal(modifiers)) {
|
||||
else if (modifiers.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
|
||||
element.setModifierPackageLocal(true);
|
||||
}
|
||||
else if (psi.isModifierPrivate(modifiers)) element.setModifierPrivate(true);
|
||||
else if (modifiers.hasModifierProperty(PsiModifier.PRIVATE)) element.setModifierPrivate(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -85,19 +85,19 @@ public class ClassHasNoToStringMethodInspection extends AbstractToStringInspecti
|
||||
PsiAdapter psi = PsiAdapterFactory.getPsiAdapter();
|
||||
|
||||
// must not be an exception
|
||||
if (excludeException && psi.isExceptionClass(clazz)) {
|
||||
if (excludeException && PsiAdapter.isExceptionClass(clazz)) {
|
||||
log.debug("This class is an exception");
|
||||
return;
|
||||
}
|
||||
|
||||
// must not be deprecated
|
||||
if (excludeDeprecated && psi.isDeprecatedClass(clazz)) {
|
||||
if (excludeDeprecated && clazz.isDeprecated()) {
|
||||
log.debug("Class is deprecated");
|
||||
return;
|
||||
}
|
||||
|
||||
// must not be enum
|
||||
if (excludeEnum && psi.isEnumClass(clazz)) {
|
||||
if (excludeEnum && clazz.isEnum()) {
|
||||
log.debug("Class is an enum");
|
||||
return;
|
||||
}
|
||||
@@ -117,7 +117,7 @@ public class ClassHasNoToStringMethodInspection extends AbstractToStringInspecti
|
||||
}
|
||||
|
||||
// must have fields
|
||||
PsiField[] fields = psi.getFields(clazz);
|
||||
PsiField[] fields = clazz.getFields();
|
||||
if (fields.length == 0) {
|
||||
log.debug("Class does not have any fields");
|
||||
return;
|
||||
|
||||
+2
-2
@@ -83,7 +83,7 @@ public class FieldNotUsedInToStringInspection extends AbstractToStringInspection
|
||||
|
||||
// must have fields
|
||||
PsiAdapter psi = PsiAdapterFactory.getPsiAdapter();
|
||||
PsiField[] fields = psi.getFields(clazz);
|
||||
PsiField[] fields = clazz.getFields();
|
||||
if (fields.length == 0) {
|
||||
log.debug("Class does not have any fields");
|
||||
return;
|
||||
@@ -181,7 +181,7 @@ public class FieldNotUsedInToStringInspection extends AbstractToStringInspection
|
||||
}
|
||||
|
||||
// must have methods
|
||||
PsiMethod[] methods = psi.getMethods(clazz);
|
||||
PsiMethod[] methods = clazz.getMethods();
|
||||
if (methods.length == 0) {
|
||||
log.debug("Class does not have any methods");
|
||||
return;
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -39,16 +40,6 @@ public abstract class PsiAdapter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get's the fields for the class.
|
||||
*
|
||||
* @param clazz class.
|
||||
* @return the fields for the class. If the class doesn't have any fields the array's size is 0.
|
||||
*/
|
||||
public PsiField[] getFields(PsiClass clazz) {
|
||||
return clazz.getFields();
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the class for the given element.
|
||||
* <p/>
|
||||
* Will look in the element's parent hieracy.
|
||||
@@ -271,116 +262,6 @@ public abstract class PsiAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>transient</code> modifier?
|
||||
* <p/>eg: <code>private transient String myField;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierTransient(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.TRANSIENT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>volatile</code> modifier?
|
||||
* <p/>eg: <code>private volatile Image screen;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierVolatile(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.VOLATILE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>public</code> modifier?
|
||||
* <p/>eg: <code>public String myField;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierPublic(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.PUBLIC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>protected</code> modifier?
|
||||
* <p/>eg: <code>public String myField;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierProtected(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.PROTECTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>package-local</code> modifier?
|
||||
* <p/>eg: <code>String myField;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierPackageLocal(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.PACKAGE_LOCAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>private</code> modifier?
|
||||
* <p/>eg: <code>private static String myField;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierPrivate(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.PRIVATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>abstract</code> modifier?
|
||||
* <p/>eg: <code>public abstract String getConfiguration()</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierAbstract(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.ABSTRACT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>final</code> modifier?
|
||||
* <p/>eg: <code>final static boolean DEBUG = false;</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierFinal(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.FINAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>static</code> modifier?
|
||||
* <p/>eg: <code>private static String getMyField()</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierStatic(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a <code>synchronized</code> modifier?
|
||||
* <p/>eg: <code>public synchronized void putInCache()</code>.
|
||||
*
|
||||
* @param modifiers the modifiers
|
||||
*/
|
||||
public boolean isModifierSynchronized(PsiModifierList modifiers) {
|
||||
return modifiers.hasModifierProperty(PsiModifier.SYNCHRONIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get's the CodeStyleManager for the project.
|
||||
*
|
||||
* @param project project.
|
||||
* @return the CodeStyleManager.
|
||||
*/
|
||||
public CodeStyleManager getCodeStyleManager(Project project) {
|
||||
return CodeStyleManager.getInstance(project);
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the javafile have the import statement?
|
||||
*
|
||||
@@ -592,17 +473,7 @@ public abstract class PsiAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get's the methods for the class.
|
||||
*
|
||||
* @param clazz class.
|
||||
* @return the methods for the class. If the class doesn't have any methods the array's size is 0.
|
||||
*/
|
||||
public PsiMethod[] getMethods(PsiClass clazz) {
|
||||
return clazz.getMethods();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Find's an existing field with the given name.
|
||||
* If there isn't a field with the name, null is returned.
|
||||
*
|
||||
@@ -725,38 +596,8 @@ public abstract class PsiAdapter {
|
||||
return false;
|
||||
}
|
||||
|
||||
return isEnumClass(clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the class is enum (JDK1.5).
|
||||
*
|
||||
* @param clazz class to check if it's a enum
|
||||
* @return true if enum.
|
||||
*/
|
||||
public boolean isEnumClass(PsiClass clazz) {
|
||||
return clazz.isEnum();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the class is deprecated.
|
||||
*
|
||||
* @param clazz class to check if it's deprecated
|
||||
* @return true if deprecated.
|
||||
*/
|
||||
public boolean isDeprecatedClass(PsiClass clazz) {
|
||||
return clazz.isDeprecated();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the method is deprecated.
|
||||
*
|
||||
* @param method method to check if it's deprecated
|
||||
* @return true if deprecated.
|
||||
*/
|
||||
public boolean isDeprecatedMethod(PsiMethod method) {
|
||||
return method.isDeprecated();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the class an exception - extends Throwable (will check super).
|
||||
@@ -764,17 +605,8 @@ public abstract class PsiAdapter {
|
||||
* @param clazz class to check.
|
||||
* @return true if class is an exception.
|
||||
*/
|
||||
public boolean isExceptionClass(PsiClass clazz) {
|
||||
PsiClass[] supers = clazz.getSupers();
|
||||
for (PsiClass sup : supers) {
|
||||
if ("java.lang.Throwable".equals(sup.getQualifiedName())) {
|
||||
return true;
|
||||
} else if (isExceptionClass(sup)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
public static boolean isExceptionClass(PsiClass clazz) {
|
||||
return InheritanceUtil.isInheritor(clazz, CommonClassNames.JAVA_LANG_THROWABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -788,7 +620,7 @@ public abstract class PsiAdapter {
|
||||
if (list == null) {
|
||||
return false;
|
||||
}
|
||||
return isModifierAbstract(clazz.getModifierList());
|
||||
return clazz.getModifierList().hasModifierProperty(PsiModifier.ABSTRACT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user