JasperReports Serverリポジトリのフォルダの 1 つを削除したい。
JR Serverrepository.deleteFolder(string URI)
の API を使用しています。しかし、フォルダーを削除しているときに、「アクセスが拒否されました」というメッセージが表示されますが、以下でそのフォルダーに管理者権限を与えています。また、アプリケーションがデプロイされるときに呼び出されるコードであるため、セキュリティコンテキストオブジェクトを手動で作成しました
public void enableRoleAdministrator(ExecutionContext ctx, String userName,
String folderName) {
try {
List ctxAttrib = ctx.getAttributes();
if (ctxAttrib != null) {
ctxAttrib.add(ObjectPermissionService.PRIVILEGED_OPERATION);
} else {
ctxAttrib = new ArrayList<String>();
ctxAttrib.add(ObjectPermissionService.PRIVILEGED_OPERATION);
}
ctx.setAttributes(ctxAttrib);
ObjectPermission userPermission = objectPermissionService
.newObjectPermission(null);
User user = profileAttributeService.getUserAuthorityService()
.getUser(ctx, userName);
userPermission.setURI("repo:/" + folderName);
System.out.println("The URI is "+userPermission.getURI());
userPermission.setPermissionRecipient(user);
System.out.println("The userPermission is "+userPermission.getPermissionRecipient().toString());
System.out.println("The user is "+user);
userPermission.setPermissionMask(ADMINISTRATION);
objectPermissionService.putObjectPermission(ctx, userPermission);
System.out.println("Before calling delete Folder");
repository.deleteFolder(ctx, folderName);
System.out.println("After calling delete Folder");
} catch (Exception ex) {
logger.log(Level.SEVERE, "Exception occurred" + ex.getMessage());
System.out.println("Exception while deletingnnn forlder "+ex.getMessage());
ex.printStackTrace();
}
}