Ik ben bezig met een plugin systeem voor een programma dat in een zo goed als oneindige while loop draait. Nu wil ik dat je een plugin kan aanpassen, opnieuw een class file van kan maken, en dat als je dan een command doorgeeft aan het programma die plugin herlaad(dus met de nieuwe class file). Nu heb ik dit:
en zodra je de command aanroept om plugins te herladen dit:
Dit werkt echter niet(oude code blijft gewoon).
Iedere keer als er iets gebeurt geeft het programma een callback aan alle plugins in de arraylist. Dus stel je voor, bij de callback: blaat echoed een plugin: "Hello World!". Dan wil ik dat ik het zo kan aanpassen dat als ik de plugin verander en opnieuwe compile(naar bijvoorbeeld: "Hallo Wereld!") en ik dan de plugins reload er bij de callback blaat "Hallo Wereld!" komt te staan en niet meer "Hello World!"
Is dit mogelijk? Zo ja, hoe?
code:
1
2
3
| ArrayList<Plugin> plugins = new ArrayList<Plugin>(); plugins.add((Plugin) Class.forName("jasco.plugins.TestPlugin").newInstance()); plugins.add((Plugin) Class.forName("jasco.plugins.AdminPlugin").newInstance()); |
en zodra je de command aanroept om plugins te herladen dit:
code:
1
2
3
| plugins.clear(); plugins.add((Plugin) Class.forName("jasco.plugins.TestPlugin").newInstance()); plugins.add((Plugin) Class.forName("jasco.plugins.AdminPlugin").newInstance()); |
Dit werkt echter niet(oude code blijft gewoon).
Iedere keer als er iets gebeurt geeft het programma een callback aan alle plugins in de arraylist. Dus stel je voor, bij de callback: blaat echoed een plugin: "Hello World!". Dan wil ik dat ik het zo kan aanpassen dat als ik de plugin verander en opnieuwe compile(naar bijvoorbeeld: "Hallo Wereld!") en ik dan de plugins reload er bij de callback blaat "Hallo Wereld!" komt te staan en niet meer "Hello World!"
Is dit mogelijk? Zo ja, hoe?