src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java

Print this page

        

@@ -1,30 +1,32 @@
 /*
  * reserved comment block
  * DO NOT REMOVE OR ALTER!
  */
-/*
- * Copyright 2005 The Apache Software Foundation.
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 /*
  * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
  */
 /*
- * $Id: DOMPGPData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
+ * $Id: DOMPGPData.java 1203846 2011-11-18 21:18:17Z mullan $
  */
 package org.jcp.xml.dsig.internal.dom;
 
 import java.util.*;
 import javax.xml.crypto.*;

@@ -46,11 +48,11 @@
  */
 public final class DOMPGPData extends DOMStructure implements PGPData {
 
     private final byte[] keyId;
     private final byte[] keyPacket;
-    private final List externalElements;
+    private final List<XMLStructure> externalElements;
 
     /**
      * Creates a <code>DOMPGPData</code> containing the specified key packet.
      * and optional list of external elements.
      *

@@ -65,27 +67,27 @@
      * @throws IllegalArgumentException if the key packet is not in the
      *    correct format
      * @throws ClassCastException if <code>other</code> contains any
      *    entries that are not of type {@link XMLStructure}
      */
-    public DOMPGPData(byte[] keyPacket, List other) {
+    public DOMPGPData(byte[] keyPacket, List<? extends XMLStructure> other) {
         if (keyPacket == null) {
             throw new NullPointerException("keyPacket cannot be null");
         }
         if (other == null || other.isEmpty()) {
-            this.externalElements = Collections.EMPTY_LIST;
+            this.externalElements = Collections.emptyList();
         } else {
-            List otherCopy = new ArrayList(other);
-            for (int i = 0, size = otherCopy.size(); i < size; i++) {
-                if (!(otherCopy.get(i) instanceof XMLStructure)) {
+            this.externalElements =
+                Collections.unmodifiableList(new ArrayList<XMLStructure>(other));
+            for (int i = 0, size = this.externalElements.size(); i < size; i++) {
+                if (!(this.externalElements.get(i) instanceof XMLStructure)) {
                     throw new ClassCastException
                         ("other["+i+"] is not a valid PGPData type");
                 }
             }
-            this.externalElements = Collections.unmodifiableList(otherCopy);
         }
-        this.keyPacket = (byte []) keyPacket.clone();
+        this.keyPacket = (byte[])keyPacket.clone();
         checkKeyPacket(keyPacket);
         this.keyId = null;
     }
 
     /**

@@ -106,32 +108,35 @@
      * @throws IllegalArgumentException if the key id or packet is not in the
      *    correct format
      * @throws ClassCastException if <code>other</code> contains any
      *    entries that are not of type {@link XMLStructure}
      */
-    public DOMPGPData(byte[] keyId, byte[] keyPacket, List other) {
+    public DOMPGPData(byte[] keyId, byte[] keyPacket,
+                      List<? extends XMLStructure> other) 
+    {
         if (keyId == null) {
             throw new NullPointerException("keyId cannot be null");
         }
         // key ids must be 8 bytes
         if (keyId.length != 8) {
             throw new IllegalArgumentException("keyId must be 8 bytes long");
         }
         if (other == null || other.isEmpty()) {
-            this.externalElements = Collections.EMPTY_LIST;
+            this.externalElements = Collections.emptyList();
         } else {
-            List otherCopy = new ArrayList(other);
-            for (int i = 0, size = otherCopy.size(); i < size; i++) {
-                if (!(otherCopy.get(i) instanceof XMLStructure)) {
+            this.externalElements =
+                Collections.unmodifiableList(new ArrayList<XMLStructure>(other));
+            for (int i = 0, size = this.externalElements.size(); i < size; i++) {
+                if (!(this.externalElements.get(i) instanceof XMLStructure)) {
                     throw new ClassCastException
                         ("other["+i+"] is not a valid PGPData type");
                 }
             }
-            this.externalElements = Collections.unmodifiableList(otherCopy);
         }
-        this.keyId = (byte []) keyId.clone();
-        this.keyPacket = keyPacket == null ? null : (byte []) keyPacket.clone();
+        this.keyId = (byte[])keyId.clone();
+        this.keyPacket = keyPacket == null ? null
+                                           : (byte[])keyPacket.clone();
         if (keyPacket != null) {
             checkKeyPacket(keyPacket);
         }
     }
 

@@ -144,15 +149,15 @@
         // get all children nodes
         byte[] keyId = null;
         byte[] keyPacket = null;
         NodeList nl = pdElem.getChildNodes();
         int length = nl.getLength();
-        List other = new ArrayList(length);
+        List<XMLStructure> other = new ArrayList<XMLStructure>(length);
         for (int x = 0; x < length; x++) {
             Node n = nl.item(x);
             if (n.getNodeType() == Node.ELEMENT_NODE) {
-                Element childElem = (Element) n;
+                Element childElem = (Element)n;
                 String localName = childElem.getLocalName();
                 try {
                     if (localName.equals("PGPKeyID")) {
                         keyId = Base64.decode(childElem);
                     } else if (localName.equals("PGPKeyPacket")){

@@ -170,50 +175,53 @@
         this.keyPacket = keyPacket;
         this.externalElements = Collections.unmodifiableList(other);
     }
 
     public byte[] getKeyId() {
-        return (keyId == null ? null : (byte []) keyId.clone());
+        return (keyId == null ? null : (byte[])keyId.clone());
     }
 
     public byte[] getKeyPacket() {
-        return (keyPacket == null ? null : (byte []) keyPacket.clone());
+        return (keyPacket == null ? null : (byte[])keyPacket.clone());
     }
 
     public List getExternalElements() {
         return externalElements;
     }
 
     public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
-        throws MarshalException {
+        throws MarshalException
+    {
         Document ownerDoc = DOMUtils.getOwnerDocument(parent);
-
-        Element pdElem = DOMUtils.createElement
-            (ownerDoc, "PGPData", XMLSignature.XMLNS, dsPrefix);
+        Element pdElem = DOMUtils.createElement(ownerDoc, "PGPData",
+                                                XMLSignature.XMLNS, dsPrefix);
 
         // create and append PGPKeyID element
         if (keyId != null) {
-            Element keyIdElem = DOMUtils.createElement
-                (ownerDoc, "PGPKeyID", XMLSignature.XMLNS, dsPrefix);
+            Element keyIdElem = DOMUtils.createElement(ownerDoc, "PGPKeyID",
+                                                       XMLSignature.XMLNS,
+                                                       dsPrefix);
             keyIdElem.appendChild
                 (ownerDoc.createTextNode(Base64.encode(keyId)));
             pdElem.appendChild(keyIdElem);
         }
 
         // create and append PGPKeyPacket element
         if (keyPacket != null) {
-            Element keyPktElem = DOMUtils.createElement
-                (ownerDoc, "PGPKeyPacket", XMLSignature.XMLNS, dsPrefix);
+            Element keyPktElem = DOMUtils.createElement(ownerDoc,
+                                                        "PGPKeyPacket",
+                                                        XMLSignature.XMLNS,
+                                                        dsPrefix);
             keyPktElem.appendChild
                 (ownerDoc.createTextNode(Base64.encode(keyPacket)));
             pdElem.appendChild(keyPktElem);
         }
 
         // create and append any elements
-        for (int i = 0, size = externalElements.size(); i < size; i++) {
+        for (XMLStructure extElem : externalElements) {
             DOMUtils.appendChild(pdElem, ((javax.xml.crypto.dom.DOMStructure)
-                externalElements.get(i)).getNode());
+                extElem).getNode());
         }
 
         parent.appendChild(pdElem);
     }