Community
Participate
Working Groups
Given code: package a; import java.util.ArrayList; import java.util.List; public class ATest { <T> List<T> generateList(Class<T> clazz) { return new ArrayList<T>(); } } class CTest extends ATest { private List<String> myList = generateList(String.class); CTest() { myList = new ArrayList<String>(); } } If I try to Pull Up field myList, hitting "Finish" generates "Unexpected error while performing the refactoring. See error log for more information." Error log says: java.lang.reflect.InvocationTargetException at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:90) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113) Caused by: Java Model Exception: Java Model Status [gmock(Class<IProgressMonitor>) {key=Lorg/jmock/generic/GenericMockObjectTestCase;.gmock<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)Lorg/jmock/generic/GenericMock<TT;>;} [in GenericMockObjectTestCase [in GenericMockObjectTestCase.java [in org.jmock.generic [in src [in org.jmock]]]]] does not exist] at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:468) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:499) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:232) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:218) at org.eclipse.jdt.internal.core.Member.getFlags(Member.java:147) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:671) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:690) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:722) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustVisibility(MemberVisibilityAdjustor.java:763) at org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoring.createChangeManager(PullUpRefactoring.java:951) at org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoring.checkFinalConditions(PullUpRefactoring.java:617) at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:84) at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:114) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1716) at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:86) ... 1 more Root exception: Java Model Exception: Java Model Status [gmock(Class<IProgressMonitor>) {key=Lorg/jmock/generic/GenericMockObjectTestCase;.gmock<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)Lorg/jmock/generic/GenericMock<TT;>;} [in GenericMockObjectTestCase [in GenericMockObjectTestCase.java [in org.jmock.generic [in src [in org.jmock]]]]] does not exist] at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:468) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:499) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:232) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:218) at org.eclipse.jdt.internal.core.Member.getFlags(Member.java:147) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:671) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:690) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustOutgoingVisibility(MemberVisibilityAdjustor.java:722) at org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdjustor.adjustVisibility(MemberVisibilityAdjustor.java:763) at org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoring.createChangeManager(PullUpRefactoring.java:951) at org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoring.checkFinalConditions(PullUpRefactoring.java:617) at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:84) at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:114) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1716) at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:86) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
David, which build are you using ?
Just confirmed on I20050509-2010
It seems like there is something wrong with the resolved source method for 'generateList' which the search engine returns during visibility checking. The output of toString() looks as follows: generateList(Class<String>) (not open) {key=LC;.generateList<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;) Ljava/util/List<TT;>;} [in C [in [Working copy] C.java [in <default> [in <project root> [in Test]]]]] The type arguments encoded in the key do not match the parameter types of the Java element. Calling #getFlags() then causes the exception Moving to JDT Core for comments
+1 for RC2
Fixed and released in HEAD. Method handle was not correct due to the fact it was built on parameterized method binding instead of original one. Now search engine correctly find messages sent in field declaration. [jdt-core internal] Change done in MethodLocator.reportDeclaration(...) Test case added in JavaSearcgBugsTests
Verified using N20050606-0010 + JDT/Core HEAD
Verified with I20050610-0010.