Wstęp
Ta strona opisuje wszystkie dodatkowe komponenty, które używane są pomiędzy modułami.
Jeżeli własny moduł będzie wymagał np. spełnienia warunków, powinniśmy wykorzystać właśnie komponent condition opisany na tym stronie. Dzięki temu definicje modułów będą spójne i pisanie ich będzie bardziej naturalne.
Komponenty
Warunki - condition
Warunki mogą być wykorzystywane np. do sprawdzenia praw użytkownika do konkretnego modułu. Możemy zdefiniować wiele warunków, jednak logika ich spełnienia zależy od implementacji modułu (AND, OR etc.)
Atrybuty
Nazwa | Wymagany | Opis |
---|---|---|
class | ![]() | Pełna nazwa klasy tego warunku. Klasa musi implementować Condition. |
Do każdego warunku możemy przesłać dowolne parametry:
<param name="param1">asd</param> <param name="param2">asd</param>
Przykład
<condition class="xyz.HasRightCondition"> <param name="right">admin</param> </condition>
Java API
Możemy ułatwić sobie pisanie warunków i ich odczyt z XML'a.
// odczyt z elementu modułu conditions = ModuleHelper.getConditions(plugin, definition); // podczas pisania warunku możemy użyć klasy ConditionSupport: public class HelloCondition extends ConditionSupport{ @Autowired private SomeService someService; @Override public boolean isFulfilled(){ return someService.check(getParameter("someparam")); } }
Instancja Condition tworzona jest z wykorzystaniem kontekstu aplikacji, dlatego możliwe jest używanie adnotacji @Autowired.
Nie powinniśmy oznaczać klasy adnotacją @Component!!!
Jeżeli wykorzystujemy klasę warunku z innej wtyczki, a deskryptor jest jedynym miejscem, w którym odwołujemy się do pakietu tej klasy, to możemy napotkać na błąd ClassNotFoundException. Należy wtedy postępować zgodnie z instrukcjami w FAQ: PluginFramework FAQ
Link - link
Element link umożliwia pobranie absolutnego adresu URL, wpisując adres relatywny do wtyczki lub do systemu.
Atrybuty
Nazwa | Wymagany | Opis |
---|---|---|
scoped | Domyślnie true. Jeżeli ma wartość true, to wpisany link będzie traktowany jako relatywny do wtyczki. Jeżeli ma wartość false, link będzie traktowany jako relatywny do context path. |
Przykład
<!-- Link relatywny do wtyczki: /PlusWorkflow/plugin/com.suncode.plugin-tutorial/hello --> <link>/hello</link> <link scoped="true">/hello</link> <!-- Link relatywny do systemu: /PlusWorkflow/hello --> <link scoped="false">/hello</link>
Java API
Możemy ułatwić sobie pisanie warunków i ich odczyt z XML'a.
// odczyt z elementu modułu - zwraca null jeżeli nie ma elementu link w module conditions = ScopedWebLink.parse(definition, plugin);