1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.policy.model;
20
21 import org.apache.neethi.Constants;
22 import org.apache.neethi.Policy;
23 import org.apache.wss4j.policy.SPConstants;
24
25 import javax.xml.namespace.QName;
26 import javax.xml.stream.XMLStreamException;
27 import javax.xml.stream.XMLStreamWriter;
28
29 public class Attachments extends AbstractSecurityAssertion {
30
31 private boolean contentSignatureTransform;
32 private boolean attachmentCompleteSignatureTransform;
33
34 public Attachments(SPConstants.SPVersion version, boolean contentSignatureTransform,
35 boolean attachmentCompleteSignatureTransform) {
36 super(version);
37
38 this.contentSignatureTransform = contentSignatureTransform;
39 this.attachmentCompleteSignatureTransform = attachmentCompleteSignatureTransform;
40 }
41
42 @Override
43 public QName getName() {
44 return getVersion().getSPConstants().getAttachments();
45 }
46
47 @Override
48 public boolean equals(Object object) {
49 if (object == this) {
50 return true;
51 }
52
53 if (!(object instanceof Attachments)) {
54 return false;
55 }
56
57 Attachments that = (Attachments)object;
58 if (contentSignatureTransform != that.contentSignatureTransform) {
59 return false;
60 }
61 if (attachmentCompleteSignatureTransform != that.attachmentCompleteSignatureTransform) {
62 return false;
63 }
64
65 return super.equals(object);
66 }
67
68 @Override
69 public int hashCode() {
70 int result = 17;
71 result = 31 * result + Boolean.hashCode(contentSignatureTransform);
72 result = 31 * result + Boolean.hashCode(attachmentCompleteSignatureTransform);
73
74 return 31 * result + super.hashCode();
75 }
76
77 @Override
78 protected AbstractSecurityAssertion cloneAssertion(Policy nestedPolicy) {
79 return new Attachments(getVersion(), isContentSignatureTransform(), isAttachmentCompleteSignatureTransform());
80 }
81
82 @Override
83 public void serialize(XMLStreamWriter writer) throws XMLStreamException {
84 writer.writeStartElement(getName().getPrefix(), getName().getLocalPart(), getName().getNamespaceURI());
85 writer.writeNamespace(getName().getPrefix(), getName().getNamespaceURI());
86 if (!isNormalized() && isOptional()) {
87 writer.writeAttribute(Constants.ATTR_WSP,
88 writer.getNamespaceContext().getNamespaceURI(Constants.ATTR_WSP),
89 Constants.ATTR_OPTIONAL, "true");
90 }
91 if (isIgnorable()) {
92 writer.writeAttribute(Constants.ATTR_WSP,
93 writer.getNamespaceContext().getNamespaceURI(Constants.ATTR_WSP),
94 Constants.ATTR_IGNORABLE, "true");
95 }
96 if (isContentSignatureTransform()) {
97 writer.writeEmptyElement(
98 getVersion().getSPConstants().getContentSignatureTransform().getPrefix(),
99 getVersion().getSPConstants().getContentSignatureTransform().getLocalPart(),
100 getVersion().getSPConstants().getContentSignatureTransform().getNamespaceURI());
101 writer.writeNamespace(
102 getVersion().getSPConstants().getContentSignatureTransform().getPrefix(),
103 getVersion().getSPConstants().getContentSignatureTransform().getNamespaceURI());
104 }
105 if (isAttachmentCompleteSignatureTransform()) {
106 writer.writeEmptyElement(
107 getVersion().getSPConstants().getAttachmentCompleteSignatureTransform().getPrefix(),
108 getVersion().getSPConstants().getAttachmentCompleteSignatureTransform().getLocalPart(),
109 getVersion().getSPConstants().getAttachmentCompleteSignatureTransform().getNamespaceURI());
110 writer.writeNamespace(
111 getVersion().getSPConstants().getAttachmentCompleteSignatureTransform().getPrefix(),
112 getVersion().getSPConstants().getAttachmentCompleteSignatureTransform().getNamespaceURI());
113 }
114 writer.writeEndElement();
115 }
116
117 public boolean isContentSignatureTransform() {
118 return contentSignatureTransform;
119 }
120
121 protected void setContentSignatureTransform(boolean contentSignatureTransform) {
122 this.contentSignatureTransform = contentSignatureTransform;
123 }
124
125 public boolean isAttachmentCompleteSignatureTransform() {
126 return attachmentCompleteSignatureTransform;
127 }
128
129 protected void setAttachmentCompleteSignatureTransform(boolean attachmentCompleteSignatureTransform) {
130 this.attachmentCompleteSignatureTransform = attachmentCompleteSignatureTransform;
131 }
132 }