Olaf Willuhn | 21 Feb 13:41 2011
Picon

Plugin-Mechanismus in Job-Erzeugung

Hi,

Setzt die Diskussion von
https://www.willuhn.de/bugzilla/show_bug.cgi?id=338#c27
fort:

 <at> Raphael: Erstmal Danke fuer den Code.

Hab mir deine aktualisierte Loesung grad angeschaut. Gute Idee, so
aehnlich haette ich das wohl auch gemacht. Ein paar Anmerkungen noch:

1) Ich wuerde versuchen, das neue Interface "IHBCIJob" zu vermeiden.
   Damit waere es moeglich, HBCI-Jobs zu implementieren, die nicht
   von "AbstractHBCIJob" erben. Sie koennten dann bei der Ergebnis-
   Behandlung in "handleResult()" "aus der Reihe tanzen". Ich denke,
   es sollte auch ohne das Interface - direkt mit AbstractHBCIJob
   als Basis gehen.

2) Das manuelle Registrieren der Jobs in der HBCIJobFactory
   ist eigentlich nicht noetig. Man koennte alternativ auch
   den Classfinder nehmen:

   PluginLoader loader = Application.getPluginLoader();
   ClassFinder finder = loader.getPlugin(HBCI.class).getResources().
                          getClassLoader().getClassFinder();

   Class[] classes = finder.findImplementors(AbstractHBCIJob.class);
   for (Class c:classes)
   {
     AbstractPlugin p = loader.findByClass(c);
(Continue reading)

lists.raphael | 21 Feb 14:21 2011
Picon

Re: Plugin-Mechanismus in Job-Erzeugung

Hi,

Zitat von Olaf Willuhn <hibiscus <at> willuhn.de>:

> Hi,
>
> Setzt die Diskussion von
> https://www.willuhn.de/bugzilla/show_bug.cgi?id=338#c27
> fort:
>
>  <at> Raphael: Erstmal Danke fuer den Code.
>
> Hab mir deine aktualisierte Loesung grad angeschaut. Gute Idee, so
> aehnlich haette ich das wohl auch gemacht. Ein paar Anmerkungen noch:
>
> 1) Ich wuerde versuchen, das neue Interface "IHBCIJob" zu vermeiden.
>    Damit waere es moeglich, HBCI-Jobs zu implementieren, die nicht
>    von "AbstractHBCIJob" erben. Sie koennten dann bei der Ergebnis-
>    Behandlung in "handleResult()" "aus der Reihe tanzen". Ich denke,
>    es sollte auch ohne das Interface - direkt mit AbstractHBCIJob
>    als Basis gehen.

Das Interface ist in der jetzigen Form tatsächlich redundant mit  
AbstractHBCIJob.
Die Frage ist, ob es Sinn macht Plugins zu zwingend von  
AbstractHBCIJob abzuleiten.
Da würde ich deinen Urteil vertrauen da für mich Hibuscus noch sehr neu ist.

> 2) Das manuelle Registrieren der Jobs in der HBCIJobFactory
>    ist eigentlich nicht noetig. Man koennte alternativ auch
(Continue reading)

Olaf Willuhn | 21 Feb 16:37 2011
Picon

Re: Plugin-Mechanismus in Job-Erzeugung

Hi,

> Das Interface ist in der jetzigen Form tatsächlich redundant mit
> AbstractHBCIJob. Die Frage ist, ob es Sinn macht Plugins zu zwingend
> von AbstractHBCIJob abzuleiten.
> Da würde ich deinen Urteil vertrauen da für mich Hibuscus noch sehr neu
> ist.

Naja, das dort drin implementierte Verhalten ist schon wichtig und
sollte bei allen Jobs identisch sein. Allerdings koennte man ueberlegen,
den Code in einen separaten "JobResultProcessor" (oder so aehnlich)
auszulagern. Er waere dann nicht mehr Bestandteil der
Ableitungs-Hierarchie an der Stelle und koennte durch ein Interface
IHBCIJob nicht mehr umgangen werden, wenn es nicht AbstractHBCIJob
implementiert. Allerdings koennte das mit etwas mehr Arbeit verbunden sein.

> Irgendwie muss man die Jobs ja unterscheiden. Am Anfang hatte ich über
> einen Enum nachgedacht (SALDO, UMSATZ etc). Der Job könnte dann
> zurückgeben was er kann (public JobType getJobType()) und mann konnte
> anhand dessen unterscheiden. Interfaces fand ich aber doch schöner.

Ja, im Vergleich zu Enums ist Interface wirklich besser - zumal die
Liste der Enum-Werte nicht geaendert werden muesste, wenn neue
Geschaeftvorfaelle hinzukommen.

> Ich schau heute abend nochmal in den Code.

Gern. Gib einfach Bescheid, wenn du irgendwelche Fragen hast.

Gruss
(Continue reading)

Raphael Vullriede | 28 Feb 12:38 2011
Picon

Re: Plugin-Mechanismus in Job-Erzeugung

Hi,

On 02/21/2011 01:41 PM, Olaf Willuhn wrote:
> Hi,
> 
> Setzt die Diskussion von
> https://www.willuhn.de/bugzilla/show_bug.cgi?id=338#c27
> fort:
> 
>  <at> Raphael: Erstmal Danke fuer den Code.
> 
> Hab mir deine aktualisierte Loesung grad angeschaut. Gute Idee, so
> aehnlich haette ich das wohl auch gemacht. Ein paar Anmerkungen noch:
> 
> 1) Ich wuerde versuchen, das neue Interface "IHBCIJob" zu vermeiden.
>    Damit waere es moeglich, HBCI-Jobs zu implementieren, die nicht
>    von "AbstractHBCIJob" erben. Sie koennten dann bei der Ergebnis-
>    Behandlung in "handleResult()" "aus der Reihe tanzen". Ich denke,
>    es sollte auch ohne das Interface - direkt mit AbstractHBCIJob
>    als Basis gehen.
> 
> 2) Das manuelle Registrieren der Jobs in der HBCIJobFactory
>    ist eigentlich nicht noetig. Man koennte alternativ auch
>    den Classfinder nehmen:
> 
>     <snip />

Habe ich umgebaut und funktioniert.

>    Das liefert alle verfuegbaren Implementierungen von AbstractHBCIJob.
(Continue reading)


Gmane