Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Efetua a pesquisa de uma Annotation a partir de um namespace e retorna um array onde, em cada posição há um objeto Json com as seguintes propriedades:

...

contendo as informações de onde a Annotation

...

foi encontrada.

Sintaxe

Bloco de código
collapsefalse
Reflection.getClassesByAnnotation( cAnnotationName,cNamespaceFilter) )

...

Nome

Tipo

Descrição

Obrigatório

Referência

cAnnotationName

caractere

Indica o nome da Annotation que será procurada em todas as pesquisada nas classes que estão compiladas no repositório

X


cNamespaceFilter*
caractereNome do namespace onde deve ser procurada a Annotation
Obs.: Aqui pode ser feito o uso do caractere para fazer a busca no namespace
           XX

Retorno

Nome

Tipo

Descrição

aRet

Array

Retorna um array com o nome de todas as classes que tem uma determinada annotation.

...

Array com o resultado da busca pela Annotation.
Em cada posição há um objeto Json com as seguintes propriedades:

  • cClassName -  nome do namespace . classe onde a Annotation pesquisada foi encontrada.
  • cProgramName - nome do programa fonte onde a Annotation pesquisada foi encontrada.

Exemplo:

Bloco de código
languagecpp
themeEclipse
titleexemplo1test_doc_resourceGetClassesByAnnotation.tlpp
linenumberstrue
//Definicoes das annotation, deve estar num fonte*
Programa test_doc_resourceGetClassesByAnnotation1.tlpp
*/


#include "msobjecttlpp-core.chth"

namespace resourceClassesbyAnnotation
namespace exemplo
@annotation AnnotationExemploAnnotationResource
    nickname as char
@end
 

@AnnotationExemplo@AnnotationResource(nickname = "MeuObject")
class Obj1'Resource1')

Class resourceClassesbyAnnotation1
 
  Public  public method new()data data1

  Public Method New()
  
EndClass

@AnnotationExemplo(nickname = "10")
class Obj2
    public method new()
EndClass


method new() class Obj2
return self

method new() class Obj1
return self


Main Function Exemplo()
    retVarMethod New() class resourceClassesbyAnnotation1
Return Self

Bloco de código
languagecpp
themeEclipse
titletest_doc_resourceGetClassesByAnnotation2.tlpp
linenumberstrue
/*
Programa test_doc_resourceGetClassesByAnnotation2.tlpp
*/

#include "tlpp-core.th"

namespace resourceClassesbyAnnotation
 
@annotation AnnotationResource
  nickname as char
@end
 
@AnnotationResource(nickname='Resource2')

Class resourceClassesbyAnnotation2
 
  Public data data1

  Public Method New()
  
EndClass

Method New() class resourceClassesbyAnnotation2
Return Self
Bloco de código
languagecpp
themeEclipse
titletestGetClassesByAnnotation.tlpp
linenumberstrue
#include "tlpp-core.th"
 
Function u_testGetClassesByAnnotation()
  Local aRet as array
 
  aRet := Reflection.getClassesByAnnotation("AnnotationExemplo", "exemplo.*") //procura por todas as classes do namespace exemplo'AnnotationResource',"resourceClassesbyAnnotation*")

  if(valType(aRet) <> "U") .and. (valType(aRet) == "A" .and. len(aRet) > 0)
    conout(retVaraRet[1]:cClassName)
    conout(retVaraRet[1]:cProgramName)
    conout(retVaraRet[2]:cClassName)
    conout(retVaraRet[2]:cProgramName)
  else
    conout('Não foi encontrada nenhuma informação de Annotation com os padrões declarados')
  endif
Return cJson

Resultado do Exemplo

EXEMPLORESOURCECLASSESBYANNOTATION.OBJ1EXEMPLO1RESOURCECLASSESBYANNOTATION1
TEST_DOC_RESOURCEGETCLASSESBYANNOTATION1.TLPP
EXEMPLORESOURCECLASSESBYANNOTATION.OBJ2EXEMPLO1RESOURCECLASSESBYANNOTATION2
TEST_DOC_RESOURCEGETCLASSESBYANNOTATION2.TLPP  

Abrangência

17.3.0.3

Veja também

...