Замените один из параметров аннотации структурной заменой IntelliJ IDEA.

У меня много классов с аннотацией Spring @ContextConfiguration. В аннотации есть параметр classes, который может быть массивом.

Теперь большинство моих классов выглядят так:

@RunWith(SpringJUnit4ClassRunner.class)         
@ContextConfiguration(classes = {
        ThisShellBeTwoClassesInContextHierarchyConfig.class,
        SomeTest.SomeTestConfig.class,
        WhateverConfig.class
})
@Transactional
public class SomeTest { ...

Желаемый результат некоторой волшебной пакетной операции будет следующим:

@RunWith(SpringJUnit4ClassRunner.class)         
@ContextHierarchy(classes = {
        @ContextConfiguration(classes = { ConfigA.class }),
        @ContextConfiguration(classes = { ConfigB.class }),
        @ContextConfiguration(classes = {
            SomeTest.SomeTestConfig.class,
            WhateverConfig.class
        })
})
@Transactional
public class SomeTest { ...

До сих пор я даже не смог заставить инструмент замены IntelliJ IDEA Structural найти аннотации с параметром classes, не говоря уже о его замене. Даже такая упрощенная структура

@$Annotation$($param$ = { $ctx$ })

ничего не находит. Количество вхождений ctx установлено на неограниченное количество.

Как мне правильно работать с параметрами аннотации?


person bubblefoil    schedule 17.07.2017    source источник


Ответы (1)


Похоже, что из-за ошибки невозможно сопоставить массивы (ElementValueArrayInitializer) в пары «имя-значение» аннотации. Вы можете сопоставить нужную аннотацию, используя запрос, например:

@$Annotation$($param$ = $value$)

Но это, наверное, не очень полезно.

person Bas Leijdekkers    schedule 21.07.2017