AspectJ AWS Сбой генерации активности
В настоящее время я использую AspectJ для генерации кода реализации клиента для своей деятельности в AWS. Обычно это работает очень хорошо как для рабочих процессов, так и для действий.
Стоит отметить, что я немного знаю об AspectJ, так как использую его только для генерации кода.
Однако я достиг точки, в которой я хотел бы вернуть массив из действия, и это препятствует тому, чтобы этот класс действия генерировал свою клиентскую реализацию (Это также предотвращает генерацию некоторого кода рабочего процесса, но я думаю, что это побочный эффект). Если я превращу массив в список (только для проверки), все снова заработает. У меня не было проблем с передачей массивов активности, только возвращая их.
Чтобы уточнить структуру. У меня есть интерфейс, который определяет активность и класс реализации, который выполняет реализацию... так что ничего особенного.
Разбитая:
public String[] myMethod( String a, String b, String c ) throws Exception;
Работает:
public List<String> myMethod( String a, String b, String c ) throws Exception;
Насколько я вижу, я не вижу никаких ошибок компиляции AspectJ, но я действительно только смотрю на консоли.
Единственные журналы, которые я обнаружил, показывают, что генерация была завершена, но они действительно сообщают, что общее количество сгенерированных файлов отличается (как и ожидалось, потому что он поврежден).
Разбитая:
:B: 9:53:40 Compiler configuration for project TestProj doesn't know previous state, so assuming EVERYTHING has changed.
:B: 9:53:40 ===========================================================================================
:B: 9:53:40 Build kind = FULLBUILD
:B: 9:53:40 Project=TestProj, kind of build requested=Full AspectJ compilation
:B: 9:53:40 Timer event: 0ms: Flush included source file cache
:B: 9:53:40 Timer event: 0ms: Check delta
:B: 9:53:40 Builder: Tidied output folder(s), removed class files and derived resources
:B: 9:53:40 Timer event: 160ms: Pre compile
:B: 9:53:40 Compiler configuration for project TestProj has been read by compiler. Resetting.
:B: 9:53:40 Configuration was [PROJECTSOURCEFILES_CHANGED, JAVAOPTIONS_CHANGED, ASPECTPATH_CHANGED, CLASSPATH_CHANGED, INPATH_CHANGED, NONSTANDARDOPTIONS_CHANGED, OUTJAR_CHANGED, PROJECTSOURCERESOURCES_CHANGED, OUTPUTDESTINATIONS_CHANGED, INJARS_CHANGED]
:B: 9:53:40 Resetting list of modified source files. Was null
:C: 9:53:40 Preparing for build: not going to be incremental because no successful previous full build
:C: 9:53:41 Timer event: 850ms: Time to first compiled message
:C: 9:53:41 Timer event: 860ms: Time to first woven message
:C: 9:53:42 AspectJ reports build successful, build was: FULL
:C: 9:53:42 AJDE Callback: finish. Was full build: true
:B: 9:53:42 Timer event: 1560ms: Total time spent in AJDE
:B: 9:53:42 Timer event: 0ms: Refresh after build
:C: 9:53:42 Types affected during build = 166
:B: 9:53:42 Timer event: 2436ms: Total time spent in AJBuilder.build()
:B: 9:53:43 Timer event: 10ms: Update visualizer, xref, advice listeners for (separate thread): TestProj
:B: 9:53:43 Timer event: 20ms: Delete markers: TestProj (Finished deleting markers for TestProj)
:B: 9:53:43 Timer event: 570ms: Create markers: TestProj (Finished creating markers for TestProj)
:B: 9:53:43 Created 7 markers in 176 files
За работой:
:B: 9:54:55 Timer event: 0ms: Delete markers: TestProj (Finished deleting markers for TestProj)
:B: 9:55:6 Compiler configuration for project TestProj doesn't know previous state, so assuming EVERYTHING has changed.
:B: 9:55:6 ===========================================================================================
:B: 9:55:6 Build kind = FULLBUILD
:B: 9:55:6 Project=TestProj, kind of build requested=Full AspectJ compilation
:B: 9:55:6 Timer event: 0ms: Flush included source file cache
:B: 9:55:6 Timer event: 0ms: Check delta
:B: 9:55:6 Builder: Tidied output folder(s), removed class files and derived resources
:B: 9:55:6 Timer event: 250ms: Pre compile
:B: 9:55:6 Compiler configuration for project TestProj has been read by compiler. Resetting.
:B: 9:55:6 Configuration was [PROJECTSOURCEFILES_CHANGED, JAVAOPTIONS_CHANGED, ASPECTPATH_CHANGED, CLASSPATH_CHANGED, INPATH_CHANGED, NONSTANDARDOPTIONS_CHANGED, OUTJAR_CHANGED, PROJECTSOURCERESOURCES_CHANGED, OUTPUTDESTINATIONS_CHANGED, INJARS_CHANGED]
:B: 9:55:6 Resetting list of modified source files. Was null
:C: 9:55:6 Preparing for build: not going to be incremental because no successful previous full build
:C: 9:55:7 Timer event: 970ms: Time to first compiled message
:C: 9:55:7 Timer event: 970ms: Time to first woven message
:C: 9:55:8 AspectJ reports build successful, build was: FULL
:C: 9:55:8 AJDE Callback: finish. Was full build: true
:B: 9:55:8 Timer event: 2420ms: Total time spent in AJDE
:B: 9:55:8 Timer event: 0ms: Refresh after build
:C: 9:55:10 Types affected during build = 320
:B: 9:55:10 Timer event: 3741ms: Total time spent in AJBuilder.build()
:B: 9:55:10 Timer event: 10ms: Update visualizer, xref, advice listeners for (separate thread): TestProj
:B: 9:55:10 Timer event: 30ms: Delete markers: TestProj (Finished deleting markers for TestProj)
:B: 9:55:10 Timer event: 100ms: Create markers: TestProj (Finished creating markers for TestProj)
:B: 9:55:10 Created 28 markers in 320 files
Я не уверен, что журналы мне что-то говорят, но я подумал, что они могут что-то значить для кого-то другого.
Я неохотно использую реализацию List, так как когда действие получит примитивы типа int[], я не смогу напрямую преобразовать их в List, который просто накладные расходы для всех действий.
Буду благодарен за любые советы.
1 ответ
Вы имеете в виду аннотацию @activities, предоставляемую платформой aws sdk flow? В этом случае это не связано. Swf использует aspectj только в решающей логике. Для генерации кода выполните одно из следующих действий. Если вы используете maven, пожалуйста, обратитесь к плагину mavens annotation builder. Если вы используете eclipse, то в меню выберите "Проект" -> "JavaCompiler" -> "Обработка аннотаций" -> "Включить параметры проекта" и укажите путь, по которому вы хотите создавать файлы на основе аннотаций.