Estou escrevendo um trecho de código Groovy que será executado dentro do contexto de um aplicativo específico (especificamente NoMagic/Cameo Enterprise Architecture).
De acordo com a documentação, eles fornecem certos objetos predefinidos que podem ser referenciados como variáveis globais dentro do meu script Groovy.
Meu problema é que meu IDE (IntelliJ IDEA) não reconhece esses objetos e, portanto, não consegue fornecer sugestões de conclusão de código e também não consegue resolver métodos corretamente ao referenciar essas variáveis globais.
Gostaria de saber se existe uma maneira de documentar a existência dessas variáveis, para que o IntelliJ as conheça. Talvez haja uma maneira de declarar isso com o Groovydoc?
// I would like to declare that the global variable 'ALH' will be
// defined at runtime as a specific type.
// Perhaps something like the following?
/**
* @RuntimeValue
* com.nomagic.magicdraw.simulation.utils.ALH ALH
*/
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.NamedElement
static void do_stuff(NamedElement e) {
// Do things...
}
NamedElement my_element = ALH.getCaller() // IntelliJ cannot resolve 'ALH'
do_stuff(my_element)
Se fosse apenas uma classe com métodos estáticos, uma importação deveria ser suficiente. Mas para uma instância injetada no script pelo chamador, não existe (até onde eu saiba) uma maneira estrita e eficiente.
Para que todas as sugestões aqui funcionem, as classes devem estar no class-path, mas, como
NamedElement
funciona no seu exemplo, esse é provavelmente o caso.Se você não se importar em alterar seus scripts, pode simplesmente escrever sua própria variável global no início do arquivo. Por exemplo:
(isso deve funcionar até mesmo usando o mesmo nome e sombreando intencionalmente a encadernação externa).
Se você não estiver disposto a alterar todos os arquivos e quiser apenas que o IDEA se comporte bem, suas opções são:
Adicione um arquivo GDSL e informe o tipo. Por exemplo, coloque
Types.gdsl
ao lado do seu script:Este arquivo pode ser verificado no controle de origem com seus scripts e outros colaboradores podem se beneficiar dele.
Se você realmente quer que ele funcione para você, você pode usar Adicionar Propriedade Dinâmica através do menu/lâmpada
alt+enter
no erro emAHL
(alt+enter
, escolhaAdd dynamic property
, selecione o tipo).