¿Hay alguna mejor manera de obtener el tipo de proyecto dentro de la aplicación NetBeans Platform?

StackOverflow https://stackoverflow.com/questions/5831396

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
}
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top