Есть ли лучший способ получить тип проекта в приложении платформы NetBeans? - PullRequest
0 голосов
/ 29 апреля 2011

Я пытаюсь создать модуль netbeans, который будет работать со стандартными Java-проектами Maven. Есть ли лучший способ сделать это, чем это было рекомендовано в: Как я могу получить тип проекта на платформе Netbeans? Кажется, что это довольно сильно зависит от implmenetation (обратите внимание на постфикс * Impl класса реализации) нашел в поиске). Я не смог найти ни одного стандартного метода в Project API. Есть идеи? Или безопасно полагаться на какую-то строку "NbMavenProjectImpl"?

В настоящее время я иду по этому пути:

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
}

1 Ответ

3 голосов
/ 26 июля 2011

Один подход будет

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

Еще один, который следует отдать предпочтение, - это зарегистрировать вашу бизнес-логику в поиске проекта maven, например. используя аннотацию

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

и затем доступ к бизнес-логике, такой как

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

Таким образом, вы можете отделить свой API от реализации, и в качестве бонуса вы можете использовать ту же бизнес-логику для нескольких типов проектов, если это уместно.

...