Árvore de páginas

Versões comparadas

Chave

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

...

Pagetitle
Reflection.getClassesByAnnotation
Reflection.getClassesByAnnotation

Retorna um array com objetos do tipo Class das classes que tem uma determinada annotationEfetua a pesquisa de uma Annotation a partir de um namespace e retorna um array contendo as informações de onde a Annotation foi encontrada.

Sintaxe

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

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cAnnotationName

caractere

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

X


cClassNameFiltercNamespaceFilter
caractereIndica uma expressão regular para os nomes das classesNome 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 newdata 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