Closed frandevel closed 10 years ago
It was due to trying to create a role that was already existing on the server. Weird. Now it's solved Thanks anyway!
Hi frandevel, Sorry for that long is not answered. I tried to reproduce your error but have no succes. Could you tell me version of JasperReports server you are using?
No worries at all! It was not a long wait anyway. I'm using version 5.5 with Multi-tenancy license ServerVersionInfo.getEditionName returns "Professional" ;O)
Ok, I'm executing following sample code, where I'm firstly creating new user and new role, then I'm getting them from server, then granting user with TEST_ROLE and then update user. That's work for me.
Try to execute this code and if you will get an error please provide me with full stack trace.
RestClientConfiguration configuration1 = new RestClientConfiguration("http://localhost:8081/jasperserver-pro");
JasperserverRestClient client = new JasperserverRestClient(configuration1);
Session session = client.authenticate("jasperadmin|organization_1", "jasperadmin");
//role creation
ClientRole role = new ClientRole();
OperationResult<RolesListWrapper> result = session
.rolesService()
.organization("organization_1")
.rolename("TEST_ROLE")
.createOrUpdate(role);
System.out.println("Create role: " + result.getEntity());
//user creation
ClientUser newUser = new ClientUser();
newUser.setFullName("Test User");
newUser.setPassword("password");
OperationResult<ClientUser> result1 = session
.usersService()
.organization("organization_1")
.username("testUser")
.createOrUpdate(newUser);
System.out.println("Create user: " + result1.getEntity());
//getting created user
OperationResult<ClientUser> result2 = session
.usersService()
.organization("organization_1")
.username("testUser")
.get();
System.out.println("Get user: " + result2.getEntity());
ClientUser user = result2.getEntity();
//getting created role
OperationResult<ClientRole> result3 = session
.rolesService()
.organization("organization_1")
.rolename("TEST_ROLE")
.get();
System.out.println("Get role: " + result3.getEntity());
//setting user's roles
HashSet<ClientRole> roleSet = new HashSet<ClientRole>(user.getRoleSet());
roleSet.add(result3.getEntity());
user.setRoleSet(roleSet);
//updating user
OperationResult<ClientUser> result4 = session
.usersService()
.organization(user.getTenantId())
.username(user.getUsername())
.createOrUpdate(user);
System.out.println("Update user with new role: " + result4.getEntity());
Thanks Borys, it was now working. I guess I have to keep in mind that to modify entities it's probably better to create the entity, send it to the server to be persisted and updated with the correct field values (some of them set on the server on creation) and then update the entities after grabing latest changes from server and send them back again.
Hi Borys, I'm trying to update a user assigning a second new role. When I try to update the user, even when I'm passing in two valid ClientRole objects, I get an IllegalParameterValueException with the message "The value "" for parameter "roleSet" is invalid"
Here is my code:
And the values that are passed in:
The second one was already assigned as I created the user and before assigning the role I retrieved it from the server
And the error for the ".createOrUpdate(user)" operation:
User's TenantId is set and available.
Thanks in advance,
Fran