¿Hay alguna mejor manera de obtener el tipo de proyecto dentro de la aplicación NetBeans Platform?
-
27-10-2019 - |
Pregunta
Estoy tratando de crear un módulo NetBeans que funcione en proyectos Maven Java estándar. ¿Hay alguna mejor manera de hacer eso que cómo se aconsejó? ¿Cómo puedo obtener un tipo de proyecto en la plataforma NetBeans? Esto parece ser bastante dependiente de la implemenetación (tenga en cuenta el *Postfix de implicación de la clase de implementación que se encuentra en la búsqueda). No pude encontrar ningún método estándar en la API del proyecto. ¿Algunas ideas? ¿O es seguro confiar en alguna cadena "nbmavenprojectImpl"?
Actualmente voy por este camino:
Project mainProject = OpenProjects.getDefault().getMainProject();
if (mainProject == null) {
return;
}
String projectType = mainProject.getClass().getName();
if (projectType.equals("NbMavenProjectImpl")) {
// do some action with the project here
}
Solución
Un enfoque sería
if (mainProject.getLookup().lookup(NbMavenProject.class) != null) {
// do stuff
}
Otro, que debe preferirse, es registrar su lógica comercial en la búsqueda del proyecto Maven, por ejemplo. Usando una anotación
@ProjectServiceProvider(service=MyService.class, projectType="org-netbeans-modules-maven")
public class MyServiceImpl implements MyService {
@Override
public void doit() {
}
}
y luego acceder a la lógica de negocios como
MyService ms = mainProject.getLookup().lookup(MyService.class);
if (ms != null) {
ms.doit()
}
De esa manera, puede desacoplar su API de la implementación y, como bono, puede compartir la misma lógica comercial entre más tipos de proyectos, si es apropiado.