1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.rice.kim.api.jaxb;
20
21 import javax.xml.bind.MarshalException;
22 import javax.xml.bind.UnmarshalException;
23 import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
24 import javax.xml.bind.annotation.adapters.XmlAdapter;
25
26 import org.kuali.rice.core.util.jaxb.NameAndNamespacePair;
27 import org.kuali.rice.kim.api.common.template.Template;
28 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
29
30
31
32
33
34
35 public class NameAndNamespacePairToPermTemplateIdAdapter extends XmlAdapter<NameAndNamespacePair,String> {
36
37
38
39
40 @Override
41 public String unmarshal(NameAndNamespacePair v) throws Exception {
42 if (v != null) {
43 Template permissionTemplate = KimApiServiceLocator.getPermissionService().findPermTemplateByNamespaceCodeAndName(
44 v.getNamespaceCode(), new NormalizedStringAdapter().unmarshal(v.getName()));
45 if (permissionTemplate == null) {
46 throw new UnmarshalException("Cannot find permission template with namespace \"" + v.getNamespaceCode() + "\" and name \"" + v.getName() + "\"");
47 }
48 return permissionTemplate.getId();
49 }
50 return null;
51 }
52
53
54
55
56 @Override
57 public NameAndNamespacePair marshal(String v) throws Exception {
58 if (v != null) {
59 Template permissionTemplate = KimApiServiceLocator.getPermissionService().getPermissionTemplate(v);
60 if (permissionTemplate == null) {
61 throw new MarshalException("Cannot find permission template with ID \"" + v + "\"");
62 }
63 return new NameAndNamespacePair(permissionTemplate.getNamespaceCode(), permissionTemplate.getName());
64 }
65 return null;
66 }
67
68 }