2008/05/19

WTF: Interface Equinox módra

Sajnos az OSGi nem tartalmaz szabványos interface-t a konzol szolgáltatásokra. Konzolja azonban szinte minden OSGi frameworknek van, és általában ezeket valahogy ki is lehet terjeszteni, hogy saját parancsaiddal bővítsd a rendszert.

A Felix-ben pl. a SehllSerivce-t kell implementálni:
public interface ShellService
{
public String[] getCommands();
public String getCommandUsage(String name);
public String getCommandDescription(String name);
public ServiceReference getCommandReference(String name);
public void executeCommand(
String commandLine, PrintStream out, PrintStream err)
throws Exception;
}

Ez a dokumentáció nélkül is körülbelül érhető. De hogy csinálja mindezt az Equinox?

Nos előszőr is implementálni kell egy CommandProvider interface-t. Ezek után pedig minden metódus, ahol a metódusnév _-al
(aláhúzással) kezdődik automatikusa a konzolból is elérhető parancs lesz. Az én konzervatív OOP-s lelkemnek ez már határeset.
Jó, jó, legyen egyszerű, de nem gányolás ez kicsit?


3 megjegyzés:

Unknown írta...

Ne is mond. Amikor eloszor belefutottam parszor elolvastam a javadoc-t, hogy tenyleg igy van-e (es azota se tudtam megszokni).
Raadasul az a legszornyubb, hogy semmi kezdemenyezest nem lattam eddig, hogy ezt lecsereljek szornyet (tudom irjak egyet :) )

Névtelen írta...

Eleg nagy hype van mostansag az osgi korul. Egy valamit mondjatok meg nekem. Miert lehet az, hogy a peldak/cikkek tobbsege inkabb a Felixxel foglalkozik, mint a Equinoxxal? Csak mert az utobbi - ugy emlekszem - megkapta a certet, mig a Felix meg nem.

Szo se rola, a Felix nekem is szimpatikusabb.

Unknown írta...

Mig felix-et lehet rendesen mavenbol is hasznalni, addig equinoxnak nincs hivatalosan elerheto repoja. Illetve talan az, hogy felix egy frissebb implementacio, igy megvolt neki a lehetoseg, hogy javitsa masok "hulyeseget".