Есть ли лучший способ получить тип проекта в приложении платформы netbeans?

Я пытаюсь создать модуль netbeans, который будет работать со стандартными проектами maven java. Есть ли лучший способ сделать это, чем то, что было рекомендовано в: Как я могу получить тип проекта на платформе Netbeans? Кажется, это довольно сильно зависит от реализации (обратите внимание на постфикс *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
}

person Martin Vejmelka    schedule 29.04.2011    source источник


Ответы (1)


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

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 от реализации, и в качестве бонуса вы можете использовать одну и ту же бизнес-логику для большего количества типов проектов, если это необходимо.

person JB-    schedule 26.07.2011
comment
В конце концов мне пришлось использовать мое решение, упомянутое выше (это было для какой-то работы, которая не могла ждать). Но спасибо за ваши решения, так как они действительно чистые и лаконичные! - person Martin Vejmelka; 28.07.2011