Можно ли использовать аннотацию для изменения аннотированного свойства?

Данный

class MyPOJO {
    @XssSanitized()
    String name
}

@Retention(RetentionPolicy.RUNTIME)
@interface XssSanitized {

}

import org.aspectj.lang.annotation.Aspect

@Aspect
@Slf4j
@Component
class XssSanitizedAspect {

    @Around("@within(com.es.phoenix.services.security.XssSanitized))")
    void sanitize(){
        //capture the value of the annotated String
        //make an arbritary change to the string
        //return modified string or otherwise overwrite the property
            log.info("XssSanitizedAspect is working!!!!")
    }
}

Можно ли изменить свойство myPOJOObject.name внутри XssSanitizedAspect?

На самом деле мне нужен способ очистки XSS String свойств. Я попытался создать собственный десериализатор Jackson. Это сработало, но я не могу вставить переключатель функций (без обходного пути, который ломает все контракты с пользовательским интерфейсом), так что это решение меня не устроило.

Я просмотрел множество примеров в Интернете. Я не нашел примера, где значение аннотированного свойства было напрямую изменено таким образом.


person P.Brian.Mackey    schedule 05.10.2017    source источник
comment
Это настоящий AspectJ? Если да, то этот ответ должен помочь.   -  person M. Prokhorov    schedule 05.10.2017
comment
Да. org.aspectj.lang.annotation.Aspect. Модифицированный вопрос. Рассмотрю ваше предложение.   -  person P.Brian.Mackey    schedule 05.10.2017
comment
Я думаю, что-то вроде @Around("set(@XssSanitized * * )") должно вас заинтересовать. но я не могу проверить это в данный момент. Я основываю это предположение на документах: eclipse. org/aspectj/doc/released/adk15notebook/   -  person endriu_l    schedule 05.10.2017
comment
@ P.Brian.Mackey, нет, я хотел спросить, предназначены ли эти аннотации для обработки настоящими ткачами AspectJ. Некоторые реализации АОП, такие как Spring, поддерживают только часть возможностей AspectJ. Если вы используете SpringAOP, вам придется использовать методы установки вместо доступа к полям.   -  person M. Prokhorov    schedule 06.10.2017
comment
@ М.Прохоров - честно не знаю. Если есть что-то, что я могу проверить, пожалуйста, дайте мне знать. Я использую Весну.   -  person P.Brian.Mackey    schedule 07.10.2017
comment
Я думаю, было бы неплохо сделать шаг назад и точно описать, чего вы хотите достичь. Соотношение сигнал/шум в этом вопросе довольно высокое. Какое событие вы хотите вызвать для совета (т. е. часть pointcut)? Что вы хотите, чтобы произошло, когда он сработает (часть совета)?   -  person Nándor Előd Fekete    schedule 07.10.2017
comment
@NándorElődFekete - Что именно шумно или неясно? В вопросе точно указано, что мне нужно для достижения In reality, I need a way to XSS sanitize String properties.. И пример кода показывает шаблон того, что нужно сделать, чтобы добиться этого.   -  person P.Brian.Mackey    schedule 07.10.2017
comment
Ну, единственный вопрос, который у вас есть в вашем посте, на самом деле заключается в следующем: Можно ли изменить свойство myPOJOObject.name внутри XssSanitizedAspect?. Что ж, ответ на этот вопрос очень прост: вы можете изменить атрибут name для myPOJOObject так же, как и для обычного класса, если это позволяют правила доступа (или вы можете сделать свой аспект привилегированным, чтобы обойти это ограничение). Но я считаю, что это не тот ответ, который вы ищете. Я думаю, вы ищете что-то другое, и вы должны уточнить это, изменив исходный пост.   -  person Nándor Előd Fekete    schedule 07.10.2017
comment
Я думаю, что вы на самом деле хотите спросить: возможно ли перехватить присвоения всем переменным экземпляра, помеченным аннотацией, чтобы изменить значение, которое присваивается этой переменной? что вы собираетесь делать, поскольку ваш вопрос не ясен мне.   -  person Nándor Előd Fekete    schedule 07.10.2017