# Plugin Abhängigkeiten/Circle References



## SegFault (18. Jan 2010)

Wie kann man die Vermeiden? Ich möchte in einen Plugin eine Factory anbieten welche mir ein Composite mit bestimmten Infos aufbaut. Diese Factory soll in ein besimmtes Plugin. Nun kann es aber sein das ein anderes Plugin eine ähnliche Factory anbietet, die vom anderen Plugin angebotene Factory benötigt. Umgekehrt könnte es auch der Fall sein, das 1. Plugin benötigt die Factory die von Plugin 2 angeboten wird. Typischerweise eine Circle Referenz. Wie kann ich das bauen damit es klappt? 
Ich hab ein Tools Plugin welches mir funktionen anbieten die von mehreren Plugins benötigt werden. Aber ich finde es soll nicht sinn der sache sein dort alles rein zu packen. Kann ich also bestimmte Pakete aus plugins importieren ohne das ich direkt die Kreisreferenz benötige?


----------



## maki (18. Jan 2010)

> Wie kann man die Vermeiden?


Da empfehle ich eine saubere Projektstruktur 

Zeichne dir mal am besten auf welches Plugin von welchem abhängt, dann kannst xu sehen wo der Wurm drinnen ist.

Erfahrungsgemäss würde Eclipse schon damit zurechtkommen, wegen des inkrementellen Builds, musst halt solange rumprobieren bis es klappt, aber sauber ist das nicht und automatisieren lässt sich der Build in so einem Projekt auch nicht.


----------



## SegFault (18. Jan 2010)

Naja wie ist dass, wenn es vom Konzept her so ist das: 
Plugin A packages aus Plugin B benötigt sowie Plugin B packages aus Plugin A.
Geht das grundsätzlich schief oder kann es auch klappen?
Wichtig sind eigentlich nur die interfaces, das andere kann ich über services lösen, aber Plugin A bzw Plugin B müssen bestimmte Interfaces kennen die vom jeweils anderen Plugin angeboten werden.


----------



## maki (18. Jan 2010)

SegFault hat gesagt.:


> Naja wie ist das wenn es vom Konzept her so ist das
> Plugin A packages aus Plugin B benötigt sowie Plugin B packages aus Plugin A.
> Geht das grundsätzlich schief oder kann es auch klappen?


Das ist grundsätzlich falsch, sehr falsch sogar.


----------



## SegFault (18. Jan 2010)

Das ist schonmal eine aussage, also sollte ich sowas dach ins Tools Package auslagern bzw wiederum eigene Packages für sowas anbieten die nicht voneinander abhängig sind.


----------



## maki (18. Jan 2010)

Ja.

Kann ja gar cniht gehen sonst:
A -> B -> A

Was sollte er da denn zuerst bauen? -> muss schiefgehen

Würdest ja auch niemals so eine Vererbungshierache in Java bauen können:
Class A -> Class B -> Class A


----------



## SegFault (18. Jan 2010)

Wie schon gesagt es geht eigentlich stur um die interface definition im jeweiligen jar archiv an die ich rankommen möchte. In C++ könnte ich das mit defines im Header so lösen, das die defintion nur einmal includiert wird. Ich dachte ggf geht sowas mit den RCP auch.


----------

