View Javadoc
1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements. See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License. You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied. See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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 }