Сериализация метода аспекта в GWT

Я пытаюсь предоставить клиенту (gwt) метод аспекта через gwt-rpc, но клиент gwt не может найти метод, определенный в аспекте. Класс, который я выставляю, реализует IsSerializable, и только его метод виден клиентскому интерфейсу... метод, добавленный их аспектом, наоборот, нет. Как я могу это исправить? спасибо за совет.

p.s. я публикую небольшой пример для большей ясности:

это класс...

public class Example implements IsSerializable{

   private String name;

   public setName(String name){
      this.name=name
   }
}

а это аспект...

privileged aspect Example_x{

   public int Example.getVersion() {
      return this.version;
   }
}

Метод Example.getVersion() недоступен на стороне клиента.

TNX


person user1066888    schedule 26.11.2011    source источник


Ответы (1)


Это не сработает, поскольку GWT требуется доступ к исходному коду любого класса Java, доступного на стороне клиента. Это необходимо для их компиляции из Java в Javascript. Если вы измените свои классы с помощью AspectJ, добавленные методы не будут видны компилятору GWT и, следовательно, не будут видны клиенту.

Я бы сказал, что AspectJ просто не подходит для этой задачи. Если вы хотите добавить некоторые методы к существующим классам, вы можете написать (возможно, общий) класс-контейнер, который содержит экземпляр Example, а также информацию о версии из Example_x.

person Robert Petermeier    schedule 26.11.2011