package br.uff.ic.gems.peixeespadacliente.conflicts; import net.sf.refactorit.refactorings.conflicts.ChangedFunctionalityConflict; import net.sf.refactorit.refactorings.conflicts.Conflict; import net.sf.refactorit.refactorings.conflicts.ConflictResolver; import net.sf.refactorit.refactorings.conflicts.DeleteOtherImplementersConflict; import net.sf.refactorit.refactorings.conflicts.resolution.ConflictResolution; import java.lang.reflect.Field; /** * * @author João Felipe */ public class ConflictWithResolution { private Conflict conflict; private ConflictResolution resolution; private ConflictResolver resolver; public ConflictWithResolution(Conflict conflict, ConflictResolution resolution, ConflictResolver resolver) { this.conflict = conflict; this.resolution = resolution; this.resolver = resolver; } public Conflict getConflict() { return conflict; } public ConflictResolution getResolution() { return resolution; } public boolean resolveConflict() { //Escolher modo certo de resolver // conflict.resolve(); if ((conflict == null) || (conflict instanceof ChangedFunctionalityConflict)) { return false; } if (resolution != null) { conflict.setResolution(resolution); resolution.runResolution(resolver); if (conflict instanceof DeleteOtherImplementersConflict) { try { Field field = DeleteOtherImplementersConflict.class.getDeclaredField("isResolved"); field.setAccessible(true); // aqui eu troco o acesso dele field.set(conflict, true); } catch (Exception e) { return false; } } } if (conflict.isResolved()) { return true; } else { return false; } } }