扩展 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);
}
希望对你有帮助,
蒂埃里
是否可以延长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);
}
希望对你有帮助, 蒂埃里