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);
}
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);
}
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()]);
}
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;
}
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();
}
Aggregations