1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.rice.kim.impl.jaxb;
20
21 import javax.xml.bind.UnmarshalException;
22
23 import org.apache.commons.lang.StringUtils;
24 import org.kuali.rice.kim.api.permission.Permission;
25 import org.kuali.rice.kim.api.permission.PermissionContract;
26 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
27
28
29
30
31
32
33
34
35
36
37 public final class PermissionXmlUtil {
38
39 private PermissionXmlUtil() {}
40
41
42
43
44
45
46
47
48 static void validateAndPersistNewPermission(PermissionXmlDTO newPermission) throws UnmarshalException {
49 if (newPermission == null) {
50 throw new IllegalArgumentException("Cannot persist a null permission");
51 }
52
53
54 validatePermission(newPermission);
55
56
57 Permission.Builder builder = Permission.Builder.create(newPermission.getNamespaceCode(), newPermission.getPermissionName());
58 builder.setDescription(newPermission.getPermissionDescription());
59 builder.setActive(newPermission.getActive().booleanValue());
60 builder.setAttributes(newPermission.getPermissionDetails());
61
62 KimApiServiceLocator.getPermissionService().createPermission(builder.build());
63 }
64
65
66
67
68
69
70 private static void validatePermission(PermissionXmlDTO newPermission) throws UnmarshalException {
71
72 if (StringUtils.isBlank(newPermission.getPermissionName()) || StringUtils.isBlank(newPermission.getNamespaceCode())) {
73 throw new UnmarshalException("Cannot create a permission with a blank name or namespace");
74 } else if (StringUtils.isBlank(newPermission.getPermissionTemplateId())) {
75 throw new UnmarshalException("Cannot create a permission without specifying a permission template");
76 } else if (StringUtils.isBlank(newPermission.getPermissionDescription())) {
77 throw new UnmarshalException("Cannot create a permission with a blank description");
78 }
79
80
81 PermissionContract permission = KimApiServiceLocator.getPermissionService().findPermByNamespaceCodeAndName(
82 newPermission.getNamespaceCode(), newPermission.getPermissionName());
83 if (permission != null) {
84 newPermission.setPermissionId(permission.getId());
85 }
86 }
87 }