Попытка сделать структурную замену в IntelliJ - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу заменить свои аннотации с @RequestMapping на аннотации @GetMapping, @PutMapping ....Когда я смотрел на Структурный поиск / замену в IntelliJ, он выглядел так, как будто он справился с работой.

Я попытался добавить следующее в поиске

@ RequestMapping ($ key $ = $ value $).Добавлен фильтр по ключу.text = method.

Теперь я хочу извлечь из значения (RequestMethod.GET) слово после.(Период).а затем в замену добавить

@ [Word (TitleCase)] Mapping ([все, кроме ключа, значение, которое было извлечено в поиске])

Не удалось выяснитькак идти об этом.Было бы приятно узнать, если это не может быть сделано, или какие-либо предложения о том, как это сделать.Посмотрел некоторые другие вопросы здесь на SO, но не нашел ничего, что могло бы помочь.В большинстве случаев в этих случаях используется регулярное выражение.

До:

@RequestMapping(
    value = "/channels/{channel_name}",
    method = RequestMethod.POST,
    produces = MediaType.APPLICATION_JSON_VALUE,
    consumes = MediaType.APPLICATION_JSON_VALUE)
public Channel updateChannel(
    @PathVariable("channel_name") String channelName,
    @Valid @RequestBody Channel channel) {
  return channelService.updateChannel(channelName, channel);
}

@RequestMapping(
    value = "/channels/{channel_name}",
    method = RequestMethod.DELETE,
    produces = MediaType.APPLICATION_JSON_VALUE)
public Channel deleteChannel(
    @PathVariable("channel_name") String channelName) {
  return channelService.deleteChannel(channelName);
}

После

@PostMapping(value = "/channels/{channel_name}",
    produces = MediaType.APPLICATION_JSON_VALUE,
    consumes = MediaType.APPLICATION_JSON_VALUE)
public Channel updateChannel(
    @PathVariable("channel_name") String channelName,
    @Valid @RequestBody Channel channel) {
  return channelService.updateChannel(channelName, channel);
}

@DeleteMapping(
    value = "/channels/{channel_name}",
    produces = MediaType.APPLICATION_JSON_VALUE)
public Channel deleteChannel(
    @PathVariable("channel_name") String channelName) {
  return channelService.deleteChannel(channelName);
}

1 Ответ

0 голосов
/ 13 февраля 2019

Я бы сделал это грязно, с помощью регулярного выражения:

  1. Замените RequestMethod.(.)(.+)(?=,) на RequestMethod.\U$1\L$2 ( \ L превратит текст в строчные буквы .)
  2. Заменить @RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(.+?), на @$5Mapping\($1$2$3.

Затем упростить эту цепочку замены:

Заменить @RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?), на @\U$5\L$6\EMapping\($1$2

Обновление: Заметил, что первый параметр value не указан в строке @Mapping или в отдельной строке.

  • Если он вам нужен в строке@Mapping, замените @RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?),\s на @\U$5\L$6\EMapping\($2$3.
  • Если вам нужно автономную линию, замените @RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?), на @\U$5\L$6\EMapping\($1$2.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...