Я использую совет AOP
для преобразования объекта User
в объект Owner
. Преобразование выполняется в совете, но я хотел бы передать этому объекту Owner
объекту.Установите переменную из совета АОП
@Aspect
public class UserAuthAspect {
@Inject
private OwnerDao ownerDao;
@Pointcut("@annotation(com.google.api.server.spi.config.ApiMethod)")
public void annotatedWithApiMethod() {
}
@Pointcut("execution(* *.*(.., com.google.appengine.api.users.User)) && args(.., user)")
public void allMethodsWithUserParameter(User user) {
}
@Before("annotatedWithApiMethod() && allMethodsWithUserParameter(user)")
public void checkUserLoggedIn(com.google.appengine.api.users.User user)
throws UnauthorizedException {
if (user == null) {
throw new UnauthorizedException("Must log in");
}
Owner owner = ownerDao.readByUser(user);
}
}
Класс с консультировали методами:
public class RealEstatePropertyV1 {
@ApiMethod(name = "create", path = "properties", httpMethod = HttpMethod.POST)
public void create(RealEstateProperty property, User user) throws Exception {
Owner owner = the value set by the advice
}
}
Может быть, я пропустил что-то, но если 'RealEstatePropertyV1' (часть вашей обычной программы) распространяется' AuthedImpl' (часть вашего аспекта), Безразлично 't он создает зависимость между программой и аспектом? Вам нужен «Владелец» только в методах аспект или в обычной программе? Возможно, это просто имя меня смущает: это аспект UserAuthAspect * или * вставлять владельца? – Beryllium
Вы правы, я представил зависимость между моей программой и аспектом. Мне нужна «Владелец» в обычной программе. В основном я хочу, чтобы мой аспект преобразовал «Пользователь» в «Владелец», а затем передал «Владелец» обратно в обычную программу. – Sydney
Фактически 'AuthImpl' не является частью аспекта. Аспект - это просто «UserAuthAspect». – Sydney