class GroupBasedAdminProvider implements AdminProvider {
    private static final Logger LOGGER = LoggerFactory.getLogger(GroupBasedAdminProvider.class);
    private static final SystemProperty<String> GROUP_NAME = SystemProperty.Builder.ofType(String.class)
        .setKey("provider.group.groupBasedAdminProvider.groupName")
        .setDefaultValue("openfire-administrators")
        .setDynamic(true)
        .build();

    @Override
    public List<JID> getAdmins() {<FILL_FUNCTION_BODY>}

    @Override
    public void setAdmins(List<JID> admins) {
        throw new UnsupportedOperationException("The GroupAdminProvider is read only");
    }

    @Override
    public boolean isReadOnly() {
        return true;
    }
}

        final String groupName = GROUP_NAME.getValue();
        try {
            // Note; the list of admins is already cached, so if the list is being refreshed force a cache refresh too
            return new ArrayList<>(GroupManager.getInstance().getGroup(groupName, true).getMembers());
        } catch (GroupNotFoundException e) {
            LOGGER.error(String.format("Unable to retrieve members of group '%s' - assuming no administrators", groupName), e);
            return new ArrayList<>();
        }
    
<no_super_class>