C'è un modo migliore per ottenere il tipo di progetto nell'ambito di applicazione della piattaforma NetBeans?

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

Domanda

Sto cercando di creare netbeans modulo che opera whould su progetti Maven standard di Java. C'è qualche modo migliore per farlo che poi come è stato avvertita in: Come posso ottenere un tipo di progetto su Netbeans Platform ? Questo sembra essere abbastanza dipendente da implmenetation (notare il suffisso * Impl della classe che implementa trovato nella ricerca). Non riuscivo a trovare alcun metodo standard nell'API progetto. Qualche idea? O è sicuro di fare affidamento su qualche stringa "NbMavenProjectImpl"?

Al momento sto andando in questo modo:

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
}
È stato utile?

Soluzione

Un approccio potrebbe essere

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

Un altro, che dovrebbe essere preferito, è quello di registrare la logica di business nel progetto Maven ricerca ad es. utilizzando un'annotazione

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

e quindi l'accesso alla logica di business come

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

In questo modo è possibile separare la vostra API da implementazione e come bonus è possibile condividere la stessa logica di business tra più tipi di progetto, se. Del caso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top