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) {
    ...
}