Una delle funzionalità fornite dal portale è quella di consentire la definizione di un file di properties all'interno di un plugin custom.
Vediamo quindi come fare per definire il file e leggerne i valori, all'interno di Liferay 6.2.
La procedura è piuttosto semplice; come prima cosa va definito il file WEB-INF/src/portlet.properties al cui interno andremo a definire le property necessarie:
my.integer.property=100 my.string.property=Hello my.array.property=1,5,10
Dopodichè va creata l'interfaccia PortletPropsKeys al cui interno definiremo le costanti che rappresentano i nomi delle varie property:
public interface PortletPropsKeys {
public static final String MY_INTEGER_PROPERTY = "my.integer.property";
public static final String MY_STRING_PROPERTY = "my.string.property";
public static final String MY_LONG_ARRAY_PROPERTY = "my.array.property";
}
Infine va creata la classe PortletPropsValues che ha lo scopo di fornire l'accesso alle property:
public class PortletPropsValues {
public static final int MY_INTEGER_PROPERTY =
GetterUtil.getInteger(PortletProps.get(PortletPropsKeys.MY_INTEGER_PROPERTY));
public static final String MY_STRING_PROPERTY =
PortletProps.get(PortletPropsKeys.MY_STRING_PROPERTY);
public static final long[] MY_LONG_ARRAY_PROPERTY =
GetterUtil.getLongValues(PortletProps.getArray(PortletPropsKeys.MY_LONG_ARRAY_PROPERTY));
}
L'accesso alle property viene consentito dalla classe di portale PortletProps e dall'utilizzo della classe GetterUtil per convertire i valori stringa in quello che serve.
A questo punto è possibile utilizzare le property in qualsiasi punto del codice, direttamente attraverso la classe PortletPropsValues:
if(PortletPropsValues.MY_INTEGER_PROPERTY > 50) {
...
}
if(PortletPropsValues.MY_STRING_PROPERTY.equals("Hello")) {
...
}
for(long value: PortletPropsValues.MY_LONG_ARRAY_PROPERTY) {
...
}