Senhors,
Muito obrigado por tudo.
Até agora consegui resolver o que queria com esse post. Porém surgiu novas dúvidas que falarei depois que explicar como foi resolvido.
Para que possamos customizar um Java Doc como eu estava querendo existe um forma muito boa que é utilizando o Java Doclets.
Aqui tem um exemplo de como acrescentar gráficos na documentação utilizando esse Doclets:
http://code.google.com/p/apiviz/
Vale apenas dar uma olhada.
Então vou colcar aqui um exemplo de um doclet
package br.com.seiz.generatorApi.doclets;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import br.com.seiz.generatorApi.bean.Project;
import br.com.seiz.generatorApi.dao.GenericDaoJpa;
import com.sun.javadoc.AnnotationDesc;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.ConstructorDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.MemberDoc;
import com.sun.javadoc.ParamTag;
import com.sun.javadoc.RootDoc;
import com.sun.javadoc.Tag;
public class Generator{
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
/*
* Iterando as classes
*/
for (ClassDoc cd : classes) {
//Throws
//Assign
String assing = cd.modifiers() + " " + cd.simpleTypeName();
//Super Classe
//TODO Fazer aqui um metodo para mondar a arvore de super classes
if (cd.superclass() != null){
cd.superclass().simpleTypeName();
}
/**
* SubClasses
*/
List<String> subClasses = new ArrayList<String>();
ClassDoc[] classes2 = root.classes();
for (ClassDoc classDoc : classes2) {
if (classDoc.subclassOf(cd) && !cd.equals(classDoc)){
subClasses.add(classDoc.simpleTypeName());
}
}
/**
* Iterando as TAG´s
*/
Tag[] tags = cd.tags();
for (Tag tag : tags) {
tag.name();
}
//Nome do Pacote
cd.containingPackage().name();
//Comentário
cd.commentText();
/**
* Iterando os parametros
*/
ParamTag[] paramTagClasse = cd.typeParamTags();
for (ParamTag paramTag : paramTagClasse) {
}
/*
* Iterando os Fields
*/
FieldDoc[] fieldsDocClass = cd.fields();
for (FieldDoc fieldDoc : fieldsDocClass) {
}
/*
* Iterando as anotações da classe
*/
AnnotationDesc[] annotationDescsClasse = cd.annotations();
for (AnnotationDesc annotationDesc : annotationDescsClasse) {
}
/**
* Iterando os Construtores da classe
*/
ConstructorDoc[] construtores = cd.constructors();
for (ConstructorDoc construtor : construtores) {
}
/**
* Iterando os Métodos
*/
for(MemberDoc md : cd.methods()) {
md.commentText();
md.getRawCommentText();
if(isDeprecated(md.annotations()))
System.out.println("Deprecated: " + md.qualifiedName());
}
}
return true;
}
private static Boolean isDeprecated(AnnotationDesc[] annotations) {
for (AnnotationDesc annotationDesc : annotations) {
if ("java.lang.Deprecated".equalsIgnoreCase(annotationDesc.annotationType().qualifiedName().toString()))
return true;
}
return false;
}
}
Com essa classe vc vai conseguir todas as informações da documentação se seu projeto.
Estava eu querendo fazer um parse com Ruby do HTML gerado pelo Javadoc so que da muito mais trabalho que isso.
Pronto. Agora vamos algo atual problema.
Preciso customizar um documentação utilizando um Doclet. Ou melhor, preciso pegar todas as informações de meu projeto como:
Classes, métodos, se publicos, se protected, argumentos, comentários, tag de comentários, Erros, Exceções, Interfaces e etc.
Ou seja todas aquelas informações que estão da documentação e PERSISTIR em um banco de dados. Para que possamos fazer um certo estudo aqui com todos os nossos projetos.
Por tanto vou mostrar minha estrutura.
Criei um projeto que vai persistir no banco e que possuirá a classe de Doclet com a seguinte arquitetura vamos chamalo de “GERADOR”.
Spring, JPA + Hibernate e JSF.
Gerei um jar desse projeto utilizando o plugin “FAT Jar” que coloca dentro de JAR principal todas as classes das lib que contem o projeto ( Spring, JPA e etc).
Portanto chegarei em cada um de nossos sistemas e vou mandar gerar a documentação utilizando um Doclet que vou desenvolver.
No método inicial desse Doclet " start() " vou iniciar o contexto do spring e começar a persistir as informações que desejo.
Tudo da certo até o momento que vou iniciar o contexto do Spring.
A exceção é a seguinte:
http://pastie.org/775523
Não sei se ficou claro pra vc´s.
Qualquer dúvida me pergunta aqui ok.
Será que os gurus aqui poderá me ajudar?!
Valew