Cannot retrieve group scoped configuration data

thumbnail
Steve Weiss, modified 2 Years ago. Regular Member Posts: 112 Join Date: 9/20/11 Recent Posts

Hi,

I've created a configuration interface with group scope in Liferay 7.4 dxp, following the documentation here: https://help.liferay.com/hc/en-us/articles/360028726152-Scoping-Configurations.

The configuration form shows up in the site settings, and if I change a value it is saved. But when I retrieve the value in the portlet it's empty. Below are the relevant code snippets:

 

Configuration interface:

@ExtendedObjectClassDefinition(category = "NASA", scope = ExtendedObjectClassDefinition.Scope.GROUP)
@Meta.OCD(
        id = "gov.nasa.hq.mailerform.internal.configuration.MailerFormGroupConfiguration",
        localization = "content/Language",
        name = "MailerForm Configuration")
public interface MailerFormGroupConfiguration {

    @Meta.AD(
            required = false,
            name = "antiSamyPolicyFile",
            description = "AntiSamy policy file",
            deflt = "antisamy-slashdot.xml")
    public String antiSamyPolicyFile();

    @Meta.AD(
            required = false,
            name = "antiSamyPolicyDirectory",
            deflt = "/app/liferay/data/portlet_properties/antisamy")
    public String antiSamyPolicyDirectory();
}
 

Registering the configuration:

public class MailerFormGroupConfigurationBeanDeclaration implements ConfigurationBeanDeclaration {

    @Override
    public Class<?> getConfigurationBeanClass() {
        return MailerFormGroupConfiguration.class;
    }

}
 

Portlet code:

@Component(
        configurationPid = "gov.nasa.hq.mailerform.internal.configuration.MailerFormGroupConfiguration",
        property = {
                "com.liferay.portlet.display-category=NASA",
                "com.liferay.portlet.header-portlet-css=/css/styles.css",
                "com.liferay.portlet.instanceable=true",
                "javax.portlet.display-name=MailerForm",
                "javax.portlet.init-param.template-path=/",
                "javax.portlet.init-param.view-template=/view.jsp",
                "javax.portlet.init-param.error-template=/errorPage.jsp",
                "javax.portlet.init-param.config-template=/admin/configuration.jsp",
                "javax.portlet.name=" + MailerFormPortletKeys.MAILERFORM,
                "javax.portlet.resource-bundle=content.Language",
                "javax.portlet.security-role-ref=power-user,user"
        },
        service = Portlet.class)
 

// Declare class scope ConfigurationProvider

    private ConfigurationProvider _configurationProvider;
 

// Get a reference to ConfigurationProvider

    @Reference(unbind = "-")
    protected void setConfigurationProvider(ConfigurationProvider configurationProvider) {
        _configurationProvider = configurationProvider;
    }
 

// Try reading from the configuration

        try {
            MailerFormGroupConfiguration configuration = _configurationProvider
                    .getGroupConfiguration(MailerFormGroupConfiguration.class, scopeGroupId);
            _log.info(ID + "antiSamyPolicyFile = " + configuration.antiSamyPolicyFile());
        } catch (ConfigurationException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }

When I print the value of "antiSamyPolicyFile" from the configuration it is empty:

2023-09-08 15:59:50.933 INFO  [http-nio-8080-exec-2][MailerForm:196] doView: antiSamyPolicyFile =