How to set Localized name for a role that is created Design-time?

I have created a role in my Core module programmatically at design time as seen below.
But how do I assign a ‘localized name’ programmatically for the role?

package com.company.lms.core;

import com.company.lms.entity.Setting;
import com.haulmont.cuba.security.app.role.AnnotatedRoleDefinition;
import com.haulmont.cuba.security.app.role.annotation.EntityAccess;
import com.haulmont.cuba.security.app.role.annotation.EntityAttributeAccess;
import com.haulmont.cuba.security.app.role.annotation.Role;
import com.haulmont.cuba.security.app.role.annotation.ScreenAccess;
import com.haulmont.cuba.security.entity.EntityOp;
import com.haulmont.cuba.security.role.EntityAttributePermissionsContainer;
import com.haulmont.cuba.security.role.EntityPermissionsContainer;
import com.haulmont.cuba.security.role.ScreenPermissionsContainer;

@Role(name = SettingsManagementRole.NAME)
public class SettingsManagementRole extends AnnotatedRoleDefinition {
    public final static String NAME = "settings-management";

    @EntityAccess(entityClass = Setting.class,
            operations = {EntityOp.CREATE, EntityOp.READ, EntityOp.UPDATE, EntityOp.DELETE})
    @Override
    public EntityPermissionsContainer entityPermissions() {
        return super.entityPermissions();
    }

    @EntityAttributeAccess(entityClass = Setting.class, modify = "*")
    @Override
    public EntityAttributePermissionsContainer entityAttributePermissions() {
        return super.entityAttributePermissions();
    }

    @ScreenAccess(screenIds = {"lms_Setting.edit"})
    @Override
    public ScreenPermissionsContainer screenPermissions() {
        return super.screenPermissions();
    }
}

Never mind. I found out how to do this. I looked in cuba class MinimalRoleDefinition.java and found the solution:

All I needed to do was to include the following Override:

@Override
    public String getLocName() {
        return "Settings Management";
    }
1 Like