Y at-il une meilleure façon d'obtenir le type de projet dans l'application de la plate-forme NetBeans?

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

Question

Je suis en train de créer NetBeans module qui travail whould sur des projets Maven standard java. Y at-il une meilleure façon de le faire alors comment il a été conseillé dans: Comment puis-je obtenir un type de projet sur la plate-forme NetBeans ? Cela semble être assez dépendant implmenetation (notez le postfix * Impl de la classe implémentant trouvée dans recherche). Je ne pouvais pas trouver une méthode standard dans l'API du projet. Des idées? Ou est-il sûr de compter sur une chaîne « NbMavenProjectImpl »?

À l'heure actuelle, je vais ainsi:

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
}
Était-ce utile?

La solution

Une approche serait

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

Un autre, qui devrait être préféré, est d'enregistrer votre logique métier dans le projet Maven recherche par exemple. en utilisant une annotation

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

et accéder à la logique métier comme

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

De cette façon, vous pouvez découpler votre API de mise en œuvre et en tant que bonus, vous pouvez partager la même logique d'affaires entre plusieurs types de projets, le cas échéant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top