OSDN Git Service

2006-08-14 Mark Wielaard <mark@klomp.org>
[pf3gnuchains/gcc-fork.git] / libjava / classpath / gnu / javax / crypto / pad / PadFactory.java
index 913d69d..eaa7811 100644 (file)
@@ -45,16 +45,13 @@ import java.util.HashSet;
 import java.util.Set;
 
 /**
- * <p>A Factory to instantiate padding schemes.</p>
+ * A Factory to instantiate padding schemes.
  */
-public class PadFactory implements Registry
+public class PadFactory
+    implements Registry
 {
-
-  // Constants and variables
-  // -------------------------------------------------------------------------
-
-  // Constructor(s)
-  // -------------------------------------------------------------------------
+  /** Collection of padding algorithm names --cached for speed. */
+  private static Set names;
 
   /** Trivial constructor to enforce Singleton pattern. */
   private PadFactory()
@@ -62,76 +59,62 @@ public class PadFactory implements Registry
     super();
   }
 
-  // Class methods
-  // -------------------------------------------------------------------------
-
   /**
-   * <p>Returns an instance of a padding algorithm given its name.</p>
-   *
+   * Returns an instance of a padding algorithm given its name.
+   * 
    * @param pad the case-insensitive name of the padding algorithm.
-   * @return an instance of the padding algorithm, operating with a given
-   * block size, or <code>null</code> if none found.
+   * @return an instance of the padding algorithm, operating with a given block
+   *         size, or <code>null</code> if none found.
    * @throws InternalError if the implementation does not pass its self-test.
    */
   public static final IPad getInstance(String pad)
   {
     if (pad == null)
-      {
-        return null;
-      }
+      return null;
 
     pad = pad.trim().toLowerCase();
     if (pad.endsWith("padding"))
       pad = pad.substring(0, pad.length() - "padding".length());
     IPad result = null;
     if (pad.equals(PKCS7_PAD) || pad.equals(PKCS5_PAD))
-      {
-        result = new PKCS7();
-      }
+      result = new PKCS7();
     else if (pad.equals(TBC_PAD))
-      {
-        result = new TBC();
-      }
+      result = new TBC();
     else if (pad.equals(EME_PKCS1_V1_5_PAD))
-      {
-        result = new PKCS1_V1_5();
-      }
+      result = new PKCS1_V1_5();
     else if (pad.equals(SSL3_PAD))
-      {
-        result = new SSL3();
-      }
+      result = new SSL3();
     else if (pad.equals(TLS1_PAD))
-      {
-        result = new TLS1();
-      }
+      result = new TLS1();
+    else if (pad.equals(ISO10126_PAD))
+      result = new ISO10126();
 
-    if (result != null && !result.selfTest())
-      {
-        throw new InternalError(result.name());
-      }
+    if (result != null && ! result.selfTest())
+      throw new InternalError(result.name());
 
     return result;
   }
 
   /**
-   * <p>Returns a {@link java.util.Set} of names of padding algorithms
-   * supported by this <i>Factory</i>.</p>
-   *
+   * Returns a {@link Set} of names of padding algorithms supported by this
+   * <i>Factory</i>.
+   * 
    * @return a {@link Set} of padding algorithm names (Strings).
    */
   public static final Set getNames()
   {
-    HashSet hs = new HashSet();
-    hs.add(PKCS5_PAD);
-    hs.add(PKCS7_PAD);
-    hs.add(TBC_PAD);
-    hs.add(EME_PKCS1_V1_5_PAD);
-    hs.add(SSL3_PAD);
-    hs.add(TLS1_PAD);
-
-    return Collections.unmodifiableSet(hs);
+    if (names == null)
+      {
+        HashSet hs = new HashSet();
+        hs.add(PKCS5_PAD);
+        hs.add(PKCS7_PAD);
+        hs.add(TBC_PAD);
+        hs.add(EME_PKCS1_V1_5_PAD);
+        hs.add(SSL3_PAD);
+        hs.add(TLS1_PAD);
+        hs.add(ISO10126_PAD);
+        names = Collections.unmodifiableSet(hs);
+      }
+    return names;
   }
-
-  // Instance methods
-  // -------------------------------------------------------------------------
 }