1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.rice.core.util.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.apache.commons.lang.StringUtils;
27 import org.kuali.rice.coreservice.api.CoreServiceApiServiceLocator;
28
29
30
31
32
33
34
35
36 public class NameAndNamespacePairValidatingAdapter extends XmlAdapter<NameAndNamespacePair,NameAndNamespacePair> {
37
38
39
40
41 @Override
42 public NameAndNamespacePair unmarshal(NameAndNamespacePair v) throws Exception {
43 if (v != null) {
44
45 if (StringUtils.isBlank(v.getName())) {
46 throw new UnmarshalException("Cannot import a name-and-namespace pair with a blank name");
47 } else if (StringUtils.isBlank(v.getNamespaceCode())) {
48 throw new UnmarshalException("Cannot import a name-and-namespace pair with a blank namespace code");
49 } if (CoreServiceApiServiceLocator.getNamespaceService().getNamespace(v.getNamespaceCode()) == null) {
50 throw new UnmarshalException("Cannot import a name-and-namespace pair with invalid or unknown namespace \"" +
51 v.getNamespaceCode() + "\"");
52 }
53
54 v.setName(new NormalizedStringAdapter().unmarshal(v.getName()));
55 v.setNamespaceCode(v.getNamespaceCode());
56 }
57 return v;
58 }
59
60
61
62
63 @Override
64 public NameAndNamespacePair marshal(NameAndNamespacePair v) throws Exception {
65 if (v != null) {
66 if (StringUtils.isBlank(v.getName())) {
67 throw new MarshalException("Cannot export a name-and-namespace pair with a blank name");
68 } else if (StringUtils.isBlank(v.getNamespaceCode())) {
69 throw new MarshalException("Cannot export a name-and-namespace pair with a blank namespace code");
70 } else if (CoreServiceApiServiceLocator.getNamespaceService().getNamespace(v.getNamespaceCode()) == null) {
71 throw new MarshalException("Cannot export a name-and-namespace pair with invalid or unknown namespace \"" + v.getNamespaceCode() + "\"");
72 }
73
74 v.setName(new NormalizedStringAdapter().marshal(v.getName()));
75 v.setNamespaceCode(v.getNamespaceCode());
76 }
77 return v;
78 }
79
80 }