paolo antinori created FORGE-2075:
-------------------------------------
Summary: Facet like support for .jar introspection
Key: FORGE-2075
URL:
https://issues.jboss.org/browse/FORGE-2075
Project: Forge
Issue Type: Feature Request
Reporter: paolo antinori
Priority: Minor
As part of Camel addon we are trying to add this functionality:
- offer the user the ability to add to the project a new Camel component(i.e. a .jar
downloaded from Maven) taken from a predefined list
- add it as a dependency to the project
- generate various resources based on dynamic templates combined with the user choice
To address the last of that list, I have to "consume" the artifact that has been
added. And since there is no static metadata, I have to discover which of the classes that
are in that .jar implements a specific interface, extends a class or is annotated in a
specific way.
It would be handy if there could be any helper class that behaves similarly to the
{{JavaSourceFacet}} , offering facilities to inspect the classes contained in a .jar.
Anything similar to the following snippet but applied on a {{.jar}}
{code}
project.getFacet(JavaSourceFacet.class).visitJavaSources(
new JavaResourceVisitor() {
@Override
public void visit(VisitContext context, JavaResource javaResource) {
try {
JavaSource<?> javaType = javaResource.getJavaType();
if (javaType.isClass()) {
JavaClassSource source = (JavaClassSource) javaType;
if (source.hasAnnotation(org.apache.camel.cdi.ContextName.class)
|| source.hasAnnotation(org.apache.camel.cdi.Uri.class)
) {
matched[0] = true;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
{code}
[~lincolnthree] pointed me to this example:
https://github.com/forge/core/blob/master/database-tools/impl/src/main/ja...
Which is exactly what I need, but it would turn out handy having helper methods and
classes to keep the code simpler and symmetric to other interaction with Forge APIs
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)