扩展 Restlet 2.3 ClientInfo

Extending Restlet 2.3 ClientInfo

是否可以延长org.restlet.data.ClientInfo?我需要一种方便的方法来添加 List<String> permissions 来补充现有的 List<Role> roles。在一个完美的世界中,我可以添加 List<Permission> permissions 但前者是完全可以接受的。

我需要能够从请求中得到这个:org.restlet.resource.Resource.getRequest().getClientInfo().getPermissions()

我认为不可能在 class ClientInfo 中添加一些东西,因为它是由 Restlet 引擎管理的 class。你不能 subclass 它来添加一个字段 permissions (你没有客户端信息实例化的手)。

也就是说,您可以利用上下文属性。我的意思是,您可以在 Enroler 实现中为请求填写一个属性 permissions,如下所述:

public class MyEnroler implements Enroler {
    private Application application;

    public MyEnroler(Application application) {
        this.application = application;
    }

    public void enrole(ClientInfo clientInfo) {
        // Roles
        Role role = new Role(application, "roleId",
                    "Role name");
        clientInfo.getRoles().add(role);

        // Permissions
        Request request = Request.getCurrent();
        List<Permission> permissions = new ArrayList<Permission>();
        request.getAttributes().put("permissions", permissions);

        Permission permission = (...)
        permissions.add(permission);
}

希望对你有帮助, 蒂埃里