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 java.io.Serializable;
22 import java.util.List;
23
24 import javax.xml.bind.Marshaller;
25 import javax.xml.bind.UnmarshalException;
26 import javax.xml.bind.Unmarshaller;
27 import javax.xml.bind.annotation.XmlAccessType;
28 import javax.xml.bind.annotation.XmlAccessorType;
29 import javax.xml.bind.annotation.XmlElement;
30 import javax.xml.bind.annotation.XmlType;
31
32 import org.kuali.rice.core.util.jaxb.RiceXmlExportList;
33 import org.kuali.rice.core.util.jaxb.RiceXmlImportList;
34 import org.kuali.rice.core.util.jaxb.RiceXmlListAdditionListener;
35 import org.kuali.rice.core.util.jaxb.RiceXmlListGetterListener;
36 import org.kuali.rice.kim.api.permission.PermissionContract;
37
38
39
40
41
42
43 @XmlAccessorType(XmlAccessType.FIELD)
44 @XmlType(name="PermissionsType", propOrder={"permissions"})
45 public class PermissionsXmlDTO implements RiceXmlListAdditionListener<PermissionXmlDTO>,
46 RiceXmlListGetterListener<PermissionXmlDTO,Object>, Serializable {
47
48 private static final long serialVersionUID = 1L;
49
50 @XmlElement(name="permission")
51 private List<PermissionXmlDTO> permissions;
52
53 public PermissionsXmlDTO() {}
54
55 public PermissionsXmlDTO(List<? extends Object> permissionsToExport) {
56 this.permissions = new RiceXmlExportList<PermissionXmlDTO,Object>(permissionsToExport, this);
57 }
58
59
60
61
62 public List<PermissionXmlDTO> getPermissions() {
63 return this.permissions;
64 }
65
66
67
68
69 public void setPermissions(List<PermissionXmlDTO> permissions) {
70 this.permissions = permissions;
71 }
72
73 void beforeUnmarshal(Unmarshaller unmarshaller, Object parent) {
74 permissions = new RiceXmlImportList<PermissionXmlDTO>(this);
75 }
76
77 void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {
78 permissions = null;
79 }
80
81 public void newItemAdded(PermissionXmlDTO item) {
82 try {
83 PermissionXmlUtil.validateAndPersistNewPermission(item);
84 } catch (UnmarshalException e) {
85 throw new RuntimeException(e);
86 }
87 }
88
89 void afterMarshal(Marshaller marshaller) {
90 permissions = null;
91 }
92
93 public PermissionXmlDTO gettingNextItem(Object nextItem, int index) {
94 if (!(nextItem instanceof PermissionContract)) {
95 throw new IllegalStateException("Object for exportation should have been a permission");
96 }
97 return new PermissionXmlDTO((PermissionContract) nextItem);
98 }
99 }