Gibt es einen besseren Weg, um den Projekttyp innerhalb der Netbeans -Plattformanwendung zu erhalten?

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

Frage

Ich versuche, Netbeans -Modul zu erstellen, das an Standard -Maven -Java -Projekten arbeiten würde. Gibt es einen besseren Weg, um das zu tun, wie es in Folgendes geprüft wurde: Wie kann ich einen Projekttyp auf der Netbeans -Plattform erhalten? Dies scheint ziemlich abhängig von der Implmenetation zu sein (beachten Sie die *Impl -Postfix der implementierenden implementierenden Klasse). Ich konnte keine Standardmethode in der Projekt -API finden. Irgendwelche Ideen? Oder ist es sicher, sich auf eine "NBMAVENProjectImpl" -Schuge zu verlassen?

Derzeit gehe ich in diesem Weg:

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
}
War es hilfreich?

Lösung

Ein Ansatz wäre

if (mainProject.getLookup().lookup(NbMavenProject.class) != null) {
  // do stuff
}

Ein weiterer, der bevorzugt werden sollte, besteht darin, Ihre Geschäftslogik in der SO -SOKUP -EG von Maven Project zu registrieren. Verwenden einer Annotation

@ProjectServiceProvider(service=MyService.class, projectType="org-netbeans-modules-maven")
public class MyServiceImpl implements MyService {
  @Override
  public void doit() {
  }
}

und dann auf die Geschäftslogik zugreifen wie

MyService ms = mainProject.getLookup().lookup(MyService.class);
if (ms != null) {
  ms.doit()
}

Auf diese Weise können Sie Ihre API von der Implementierung entkoppeln, und als Bonus können Sie gegebenenfalls dieselbe Geschäftslogik zwischen mehr Projekttypen teilen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top