2015-08-04 2 views
1

В настоящее время я работаю над проектом, где я пытаюсь создать плагин jQassistant, который добавляет дополнительную информацию (Javadoc) к существующим узлам/ссылкам (созданным плагином Java) в виде свойств (например, @author или @version) или новых ссылок (@see).jQassistant plugin-add свойства или ссылки на существующие узлы/ссылки

Теперь я сталкиваюсь с проблемой, что мне нужно каким-то образом получить доступ к существующему узлу или ссылке для добавления свойств, но я не могу найти способ сделать это.

Небольшой намек, чтобы получить меня в правильном направлении было бы весьма признателен :)

+0

Привет, Мартин, есть инфраструктура на месте, которая позволяет именно то, что вы хотите сделать, но я сейчас в отпуске, и это трудно объяснить, не создавая пример. Я предоставлю его, когда вернусь - до тех пор создаю свои собственные узлы для типов и методов и инкапсулирует эту логику интерфейса, предоставляющего методы поиска, берущие строки для имен типов и подписи метода/поля. –

ответ

1

плагин Java (jqassistant.plugin.java) обеспечивает интерфейс, который позволяет TypeResolver отрываясь существующий тип (класс, интерфейс, перечисление , аннотации) узлов, включая их членов. Вы можете получить экземпляр типа распознавателя из контекста, переданного в плагине сканера:

TypeCache.CachedType<TypeDescriptor> resolver = context.peek(TypeResolver.class); 
CachedType cachedType = resolver.resolve(typeName, context); 
TypeDescriptor typeDescriptor = cachedType .getTypeDescriptor(); 
MethodDescriptor methodDescriptor = typeDescriptor .getMethod(methodSignature); 
FieldDescriptor fieldDescriptor = typeDescriptor .getMethod(fieldSignature); 

Есть две проблемы с этим:

  1. Эти интерфейсы не могут быть стабильными еще (то есть может быть некоторые изменения в будущем)
  2. Вероятно, вы не получите экземпляр TypeResolver - он доступен только в том случае, если в настоящее время проверяется путь Java classpath (например, каталог классов или файл JAR). Что вы сканируете (например, JavaDoc) и как (интерфейс командной строки или плагин Maven)?
Смежные вопросы