View Javadoc

1   /*
2    * Copyright [2006] [University Corporation for Advanced Internet Development, Inc.]
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.opensaml.xml.signature.impl;
18  
19  import java.util.ArrayList;
20  import java.util.Collections;
21  import java.util.List;
22  
23  import javax.xml.namespace.QName;
24  
25  import org.opensaml.xml.XMLObject;
26  import org.opensaml.xml.signature.X509CRL;
27  import org.opensaml.xml.signature.X509Certificate;
28  import org.opensaml.xml.signature.X509Data;
29  import org.opensaml.xml.signature.X509IssuerSerial;
30  import org.opensaml.xml.signature.X509SKI;
31  import org.opensaml.xml.signature.X509SubjectName;
32  import org.opensaml.xml.util.IndexedXMLObjectChildrenList;
33  import org.opensaml.xml.validation.AbstractValidatingXMLObject;
34  
35  /**
36   * Concrete implementation of {@link org.opensaml.xml.signature.X509Data}
37   */
38  public class X509DataImpl extends AbstractValidatingXMLObject implements X509Data {
39      
40      /** The list of XMLObject child elements */
41      private final IndexedXMLObjectChildrenList indexedChildren;
42  
43      /**
44       * Constructor
45       *
46       * @param namespaceURI
47       * @param elementLocalName
48       * @param namespacePrefix
49       */
50      protected X509DataImpl(String namespaceURI, String elementLocalName, String namespacePrefix) {
51          super(namespaceURI, elementLocalName, namespacePrefix);
52          indexedChildren = new IndexedXMLObjectChildrenList(this);
53      }
54  
55      /** {@inheritDoc} */
56      public List<XMLObject> getXMLObjects() {
57          return (List<XMLObject>) this.indexedChildren;
58      }
59  
60      /** {@inheritDoc} */
61      public List<XMLObject> getXMLObjects(QName typeOrName) {
62          return (List<XMLObject>) this.indexedChildren.subList(typeOrName);
63      }
64  
65      /** {@inheritDoc} */
66      public List<X509IssuerSerial> getX509IssuerSerials() {
67          return (List<X509IssuerSerial>) this.indexedChildren.subList(X509IssuerSerial.DEFAULT_ELEMENT_NAME);
68      }
69  
70      /** {@inheritDoc} */
71      public List<X509SKI> getX509SKIs() {
72          return (List<X509SKI>) this.indexedChildren.subList(X509SKI.DEFAULT_ELEMENT_NAME);
73      }
74  
75      /** {@inheritDoc} */
76      public List<X509SubjectName> getX509SubjectNames() {
77          return (List<X509SubjectName>) this.indexedChildren.subList(X509SubjectName.DEFAULT_ELEMENT_NAME);
78      }
79  
80      /** {@inheritDoc} */
81      public List<X509Certificate> getX509Certificates() {
82          return (List<X509Certificate>) this.indexedChildren.subList(X509Certificate.DEFAULT_ELEMENT_NAME);
83      }
84  
85      /** {@inheritDoc} */
86      public List<X509CRL> getX509CRLs() {
87          return (List<X509CRL>) this.indexedChildren.subList(X509CRL.DEFAULT_ELEMENT_NAME);
88      }
89  
90      /** {@inheritDoc} */
91      public List<XMLObject> getOrderedChildren() {
92          ArrayList<XMLObject> children = new ArrayList<XMLObject>();
93          
94          children.addAll((List<XMLObject>) indexedChildren);
95          
96          if (children.size() == 0) {
97              return null;
98          }
99          
100         return Collections.unmodifiableList(children);
101     }
102 
103 }