Search in sources :

Example 41 with IField

use of org.eclipse.jdt.core.IField in project che by eclipse.

the class RenameTypeTest method testSimilarElements11.

@Test
public void testSimilarElements11() throws Exception {
    //Assure participants get notified of normal stuff (type rename
    //and resource changes) AND similarly named elements.
    ParticipantTesting.reset();
    ICompilationUnit cu = createCUfromTestFile(getPackageP(), "SomeClass");
    IType someClass = getType(cu, "SomeClass");
    IType other = getClassFromTestFile(getPackageP(), "SomeOtherClass");
    List handleList = new ArrayList();
    List argumentList = new ArrayList();
    List similarOldHandleList = new ArrayList();
    List similarNewNameList = new ArrayList();
    List similarNewHandleList = new ArrayList();
    final String newName = "SomeNewClass";
    // f-Field + getters/setters
    IField f3 = other.getField("fSomeClass");
    similarOldHandleList.add(f3.getHandleIdentifier());
    similarNewHandleList.add("Lp/SomeOtherClass;.fSomeNewClass");
    similarNewNameList.add("fSomeNewClass");
    IMethod m3 = other.getMethod("getSomeClass", new String[0]);
    similarOldHandleList.add(m3.getHandleIdentifier());
    similarNewNameList.add("getSomeNewClass");
    similarNewHandleList.add("Lp/SomeOtherClass;.getSomeNewClass()V");
    IMethod m4 = other.getMethod("setSomeClass", new String[] { "QSomeClass;" });
    similarOldHandleList.add(m4.getHandleIdentifier());
    similarNewNameList.add("setSomeNewClass");
    similarNewHandleList.add("Lp/SomeOtherClass;.setSomeNewClass(QSomeNewClass;)V");
    // non-f-field + getter/setters
    IField f1 = someClass.getField("someClass");
    similarOldHandleList.add(f1.getHandleIdentifier());
    similarNewNameList.add("someNewClass");
    similarNewHandleList.add("Lp/SomeNewClass;.someNewClass");
    IMethod m1 = someClass.getMethod("getSomeClass", new String[0]);
    similarOldHandleList.add(m1.getHandleIdentifier());
    similarNewNameList.add("getSomeNewClass");
    similarNewHandleList.add("Lp/SomeNewClass;.getSomeNewClass()V");
    IMethod m2 = someClass.getMethod("setSomeClass", new String[] { "QSomeClass;" });
    similarOldHandleList.add(m2.getHandleIdentifier());
    similarNewNameList.add("setSomeNewClass");
    similarNewHandleList.add("Lp/SomeNewClass;.setSomeNewClass(QSomeNewClass;)V");
    // fs-field
    IField f2 = someClass.getField("fsSomeClass");
    similarOldHandleList.add(f2.getHandleIdentifier());
    similarNewNameList.add("fsSomeNewClass");
    similarNewHandleList.add("Lp/SomeNewClass;.fsSomeNewClass");
    // Type Stuff
    handleList.add(someClass);
    argumentList.add(new RenameArguments(newName, true));
    handleList.add(cu);
    argumentList.add(new RenameArguments(newName + ".java", true));
    handleList.add(cu.getResource());
    argumentList.add(new RenameArguments(newName + ".java", true));
    String[] handles = ParticipantTesting.createHandles(handleList.toArray());
    RenameArguments[] arguments = (RenameArguments[]) argumentList.toArray(new RenameArguments[0]);
    RenameJavaElementDescriptor descriptor = createRefactoringDescriptor(someClass, newName);
    setTheOptions(descriptor, true, false, true, null, RenamingNameSuggestor.STRATEGY_EMBEDDED);
    RefactoringStatus status = performRefactoring(descriptor);
    Assert.assertNull("was supposed to pass", status);
    checkResultInClass(newName);
    checkResultInClass("SomeOtherClass");
    ParticipantTesting.testRename(handles, arguments);
    ParticipantTesting.testSimilarElements(similarOldHandleList, similarNewNameList, similarNewHandleList);
}
Also used : ICompilationUnit(org.eclipse.jdt.core.ICompilationUnit) RenameArguments(org.eclipse.ltk.core.refactoring.participants.RenameArguments) ArrayList(java.util.ArrayList) RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) ArrayList(java.util.ArrayList) List(java.util.List) IMethod(org.eclipse.jdt.core.IMethod) IField(org.eclipse.jdt.core.IField) RenameJavaElementDescriptor(org.eclipse.jdt.core.refactoring.descriptors.RenameJavaElementDescriptor) IType(org.eclipse.jdt.core.IType) Test(org.junit.Test) BaseTest(org.eclipse.che.plugin.java.server.che.BaseTest)

Example 42 with IField

use of org.eclipse.jdt.core.IField in project che by eclipse.

the class RenameNonPrivateFieldTest method helper1_0.

private void helper1_0(String fieldName, String newFieldName) throws Exception {
    IType classA = getType(createCUfromTestFile(getPackageP(), "A"), "A");
    IField field = classA.getField(fieldName);
    RenameJavaElementDescriptor descriptor = RefactoringSignatureDescriptorFactory.createRenameJavaElementDescriptor(IJavaRefactorings.RENAME_FIELD);
    descriptor.setJavaElement(field);
    descriptor.setUpdateReferences(true);
    descriptor.setNewName(newFieldName);
    RefactoringStatus result = performRefactoring(descriptor);
    assertNotNull("precondition was supposed to fail", result);
}
Also used : RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) IField(org.eclipse.jdt.core.IField) RenameJavaElementDescriptor(org.eclipse.jdt.core.refactoring.descriptors.RenameJavaElementDescriptor) IType(org.eclipse.jdt.core.IType)

Example 43 with IField

use of org.eclipse.jdt.core.IField in project che by eclipse.

the class RefactoringTest method getFields.

public static IField[] getFields(IType type, String[] names) {
    if (names == null)
        return new IField[0];
    Set fields = new HashSet();
    for (int i = 0; i < names.length; i++) {
        IField field = type.getField(names[i]);
        assertTrue("field " + field.getElementName() + " does not exist", field.exists());
        fields.add(field);
    }
    return (IField[]) fields.toArray(new IField[fields.size()]);
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) IField(org.eclipse.jdt.core.IField) HashSet(java.util.HashSet)

Example 44 with IField

use of org.eclipse.jdt.core.IField in project che by eclipse.

the class RefactoringHandleTransplanter method convertElements.

private IMember[] convertElements(IMember[] oldElements) {
    final IMember[] newElements = new IMember[oldElements.length];
    final IMember first = oldElements[0];
    Assert.isTrue(first instanceof IType);
    if (first.equals(fOldType))
        // We renamed a top level type.
        newElements[0] = fNewType;
    else
        newElements[0] = first;
    for (int i = 1; i < oldElements.length; i++) {
        final IJavaElement newParent = newElements[i - 1];
        final IJavaElement currentElement = oldElements[i];
        switch(newParent.getElementType()) {
            case IJavaElement.TYPE:
                {
                    switch(currentElement.getElementType()) {
                        case IJavaElement.TYPE:
                            {
                                final String newName = resolveTypeName((IType) currentElement);
                                newElements[i] = ((IType) newParent).getType(newName);
                                break;
                            }
                        case IJavaElement.METHOD:
                            {
                                final String newName = resolveElementName(currentElement);
                                final String[] newParameterTypes = resolveParameterTypes((IMethod) currentElement);
                                newElements[i] = ((IType) newParent).getMethod(newName, newParameterTypes);
                                break;
                            }
                        case IJavaElement.INITIALIZER:
                            {
                                final IInitializer initializer = (IInitializer) currentElement;
                                newElements[i] = ((IType) newParent).getInitializer(initializer.getOccurrenceCount());
                                break;
                            }
                        case IJavaElement.FIELD:
                            {
                                final String newName = resolveElementName(currentElement);
                                newElements[i] = ((IType) newParent).getField(newName);
                                break;
                            }
                    }
                    break;
                }
            case IJavaElement.METHOD:
                {
                    switch(currentElement.getElementType()) {
                        case IJavaElement.TYPE:
                            {
                                newElements[i] = resolveTypeInMember((IMethod) newParent, (IType) currentElement);
                                break;
                            }
                    }
                    break;
                }
            case IJavaElement.INITIALIZER:
                {
                    switch(currentElement.getElementType()) {
                        case IJavaElement.TYPE:
                            {
                                newElements[i] = resolveTypeInMember((IInitializer) newParent, (IType) currentElement);
                                break;
                            }
                    }
                    break;
                }
            case IJavaElement.FIELD:
                {
                    switch(currentElement.getElementType()) {
                        case IJavaElement.TYPE:
                            {
                                // anonymous type in field declaration
                                newElements[i] = resolveTypeInMember((IField) newParent, (IType) currentElement);
                                break;
                            }
                    }
                    break;
                }
        }
    }
    return newElements;
}
Also used : IJavaElement(org.eclipse.jdt.core.IJavaElement) IInitializer(org.eclipse.jdt.core.IInitializer) IMethod(org.eclipse.jdt.core.IMethod) IField(org.eclipse.jdt.core.IField) IMember(org.eclipse.jdt.core.IMember) IType(org.eclipse.jdt.core.IType)

Example 45 with IField

use of org.eclipse.jdt.core.IField in project che by eclipse.

the class RenameEnumConstProcessor method initialize.

private RefactoringStatus initialize(JavaRefactoringArguments extended) {
    final String handle = extended.getAttribute(JavaRefactoringDescriptorUtil.ATTRIBUTE_INPUT);
    if (handle != null) {
        final IJavaElement element = JavaRefactoringDescriptorUtil.handleToElement(extended.getProject(), handle, false);
        if (element == null || !element.exists() || element.getElementType() != IJavaElement.FIELD)
            return JavaRefactoringDescriptorUtil.createInputFatalStatus(element, getProcessorName(), IJavaRefactorings.RENAME_ENUM_CONSTANT);
        else
            fField = (IField) element;
    } else
        return RefactoringStatus.createFatalErrorStatus(Messages.format(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, JavaRefactoringDescriptorUtil.ATTRIBUTE_INPUT));
    final String name = extended.getAttribute(JavaRefactoringDescriptorUtil.ATTRIBUTE_NAME);
    if (//$NON-NLS-1$
    name != null && !"".equals(name))
        setNewElementName(name);
    else
        return RefactoringStatus.createFatalErrorStatus(Messages.format(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, JavaRefactoringDescriptorUtil.ATTRIBUTE_NAME));
    final String references = extended.getAttribute(JavaRefactoringDescriptorUtil.ATTRIBUTE_REFERENCES);
    if (references != null) {
        setUpdateReferences(Boolean.valueOf(references).booleanValue());
    } else
        return RefactoringStatus.createFatalErrorStatus(Messages.format(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, JavaRefactoringDescriptorUtil.ATTRIBUTE_REFERENCES));
    final String matches = extended.getAttribute(ATTRIBUTE_TEXTUAL_MATCHES);
    if (matches != null) {
        setUpdateTextualMatches(Boolean.valueOf(matches).booleanValue());
    } else
        return RefactoringStatus.createFatalErrorStatus(Messages.format(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_TEXTUAL_MATCHES));
    return new RefactoringStatus();
}
Also used : IJavaElement(org.eclipse.jdt.core.IJavaElement) RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) IField(org.eclipse.jdt.core.IField)

Aggregations

IField (org.eclipse.jdt.core.IField)58 IType (org.eclipse.jdt.core.IType)36 IMethod (org.eclipse.jdt.core.IMethod)21 ArrayList (java.util.ArrayList)18 IJavaElement (org.eclipse.jdt.core.IJavaElement)16 Test (org.junit.Test)16 RefactoringStatus (org.eclipse.ltk.core.refactoring.RefactoringStatus)15 ICompilationUnit (org.eclipse.jdt.core.ICompilationUnit)14 RenameJavaElementDescriptor (org.eclipse.jdt.core.refactoring.descriptors.RenameJavaElementDescriptor)9 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)7 Function1 (org.eclipse.xtext.xbase.lib.Functions.Function1)7 IPackageFragment (org.eclipse.jdt.core.IPackageFragment)6 List (java.util.List)5 ILocalVariable (org.eclipse.jdt.core.ILocalVariable)5 JavaModelException (org.eclipse.jdt.core.JavaModelException)5 RenameArguments (org.eclipse.ltk.core.refactoring.participants.RenameArguments)5 IFile (org.eclipse.core.resources.IFile)4 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)4 IJavaProject (org.eclipse.jdt.core.IJavaProject)4 IMember (org.eclipse.jdt.core.IMember)4