[168570] Minor perf improvements
diff --git a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
index 162b341..46a2819 100644
--- a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
@@ -52,9 +52,9 @@
}
if (obj instanceof IAdaptable) {
IResource resource = (IResource) ((IAdaptable) obj).getAdapter(IResource.class);
- String testClassName = getClassNameForType(resource, SERVLET_TEST_CASE_TYPE);
- String projectName = resource.getProject().getName();
+ String testClassName = getClassNameForType(resource);
if (testClassName != null) {
+ String projectName = resource.getProject().getName();
return new WebTestableResource(getModule(resource.getProject()), false,
projectName, testClassName, methodName);
}
@@ -62,19 +62,23 @@
return null;
}
- public static String getClassNameForType(IResource resource, String superType) {
+ private static String getClassNameForType(IResource resource) {
if (resource == null)
return null;
+
+ if (!"java".equals(resource.getFileExtension()) && !"class".equals(resource.getFileExtension()))
+ return null;
+
try {
IProject project = resource.getProject();
IPath path = resource.getFullPath();
- if (!project.hasNature(JavaCore.NATURE_ID) || path == null)
+ if (path == null || !project.hasNature(JavaCore.NATURE_ID))
return null;
-
+
IJavaProject javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
if (!javaProject.isOpen())
javaProject.open(new NullProgressMonitor());
-
+
// output location may not be on classpath
IPath outputPath = javaProject.getOutputLocation();
if (outputPath != null
@@ -103,7 +107,7 @@
if (types != null) {
int size2 = types.length;
for (int i = 0; i < size2; i++) {
- if (hasSuperclass(types[i], superType) || hasSuiteMethod(types[i]))
+ if (hasSuperclass(types[i]) || hasSuiteMethod(types[i]))
return types[i].getFullyQualifiedName();
}
}
@@ -121,9 +125,8 @@
IMethod method = methods[i];
if (method.getParameterNames().length == 0 && method.getElementName().equals(SUITE_METHOD)) {
String returnType = getFullyQualifiedTypeForMangledType(method.getReturnType(), type);
- if (TEST_CLASS_NAME.equals(returnType)) {
+ if (TEST_CLASS_NAME.equals(returnType))
return true;
- }
}
}
return false;
@@ -139,13 +142,13 @@
}
}
- public static boolean hasSuperclass(IType type, String superClassName) {
+ private static boolean hasSuperclass(IType type) {
try {
ITypeHierarchy hierarchy = type.newSupertypeHierarchy(null);
IType[] superClasses = hierarchy.getAllSuperclasses(type);
int size = superClasses.length;
for (int i = 0; i < size; i++) {
- if (superClassName.equals(superClasses[i].getFullyQualifiedName())) //$NON-NLS-1$
+ if (SERVLET_TEST_CASE_TYPE.equals(superClasses[i].getFullyQualifiedName())) //$NON-NLS-1$
return true;
}
return false;