public Message Process(Message request) { var newStep = request.RefactorRequest.NewStepValue; var newStepValue = newStep.ParameterizedStepValue; var parameterPositions = request.RefactorRequest.ParamPositions.Select(position => new Tuple <int, int>(position.OldPosition, position.NewPosition)).ToList(); var response = new RefactorResponse(); try { var gaugeMethod = GetGaugeMethod(request.RefactorRequest.OldStepValue); var filesChanged = _sandbox.Refactor(gaugeMethod, parameterPositions, newStep.Parameters.ToList(), newStepValue); response.Success = true; response.FilesChanged.Add(filesChanged.First()); } catch (AggregateException ex) { response.Success = false; response.Error = ex.InnerExceptions.Select(exception => exception.Message).Distinct().Aggregate((s, s1) => string.Concat(s, "; ", s1)); } catch (Exception ex) { response.Success = false; response.Error = ex.Message; } return(new Message() { MessageId = request.MessageId, MessageType = Message.Types.MessageType.RefactorResponse, RefactorResponse = response, }); }
public Message Process(Message request) { var newStep = request.RefactorRequest.NewStepValue; var newStepValue = newStep.ParameterizedStepValue; var parameterPositions = request.RefactorRequest.ParamPositions .Select(position => new Tuple <int, int>(position.OldPosition, position.NewPosition)).ToList(); var response = new RefactorResponse(); try { var gaugeMethod = GetGaugeMethod(request.RefactorRequest.OldStepValue); if (gaugeMethod.HasAlias) { throw new Exception("Steps with aliases can not be refactored."); } var fileChanges = RefactorHelper.Refactor(gaugeMethod, parameterPositions, newStep.Parameters.ToList(), newStepValue); if (request.RefactorRequest.SaveChanges) { File.WriteAllText(fileChanges.FileName, fileChanges.FileContent); } response.Success = true; response.FilesChanged.Add(gaugeMethod.FileName); response.FileChanges.Add(ConvertToProtoFileChanges(fileChanges)); } catch (AggregateException ex) { response.Success = false; response.Error = ex.InnerExceptions.Select(exception => exception.Message).Distinct() .Aggregate((s, s1) => string.Concat(s, "; ", s1)); } catch (Exception ex) { response.Success = false; response.Error = ex.Message; } return(new Message { MessageId = request.MessageId, MessageType = Message.Types.MessageType.RefactorResponse, RefactorResponse = response }); }
public Message Process(Message request) { var oldStepValue = request.RefactorRequest.OldStepValue.StepValue; var newStep = request.RefactorRequest.NewStepValue; var newStepValue = newStep.ParameterizedStepValue; var parameterPositions = request.RefactorRequest.ParamPositionsList; var methodInfo = _stepRegistry.MethodFor(oldStepValue); var refactorResponseBuilder = RefactorResponse.CreateBuilder(); try { var filesChanged = RefactorHelper.Refactor(methodInfo, parameterPositions, newStep.ParametersList, newStepValue); refactorResponseBuilder.SetSuccess(true).AddFilesChanged(filesChanged.First()); } catch (AggregateException ex) { refactorResponseBuilder.SetSuccess(false) .SetError(ex.InnerExceptions.Select(exception => ex.Message).Aggregate((s, s1) => string.Concat(s, "; ", s1))); } catch (Exception ex) { refactorResponseBuilder.SetSuccess(false) .SetError(ex.Message); } var refactorResponse = refactorResponseBuilder.Build(); return(Message.CreateBuilder() .SetMessageId(request.MessageId) .SetMessageType(Message.Types.MessageType.RefactorResponse) .SetRefactorResponse(refactorResponse) .Build()); }