samples/messagedigest/src-new-api/org/apidesign/api/security/DigestImpl.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
parent 302 fb84830aacc2
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
     1 /*
     2  * To change this template, choose Tools | Templates
     3  * and open the template in the editor.
     4  */
     5 
     6 package org.apidesign.api.security;
     7 
     8 import java.nio.ByteBuffer;
     9 import org.apidesign.spi.security.Digestor;
    10 
    11 /**
    12  *
    13  * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    14  */
    15 // BEGIN: day.end.bridges.DigestImpl
    16 final class DigestImpl<Data> {
    17     private static final DigestorAccessorImpl ACCESSOR;
    18     static {
    19         ACCESSOR = new DigestorAccessorImpl();
    20     }
    21     
    22     private final Digestor<Data> digestor;
    23     private final String algorithm;
    24     private Data data;
    25     
    26     private DigestImpl(Digestor<Data> digestor, String algorithm, Data d) {
    27         this.digestor = digestor;
    28         this.algorithm = algorithm;
    29         this.data = d;
    30     }
    31     
    32     static <Data> DigestImpl create(
    33         Digestor<Data> digestor, String algorithm
    34     ) {
    35         // indirectly calls digestor.create(algorithm)
    36         Data d = ACCESSOR.create(digestor, algorithm);
    37         if (d == null) {
    38             return null;
    39         } else {
    40             return new DigestImpl(digestor, algorithm, d);
    41         }
    42     }
    43 
    44     byte[] digest(ByteBuffer bb) {
    45         // indirectly calls digestor.update(data, bb)
    46         ACCESSOR.update(digestor, data, bb);
    47         // indirectly calls digestor.digest(data)
    48         return ACCESSOR.digest(digestor, data);
    49     }
    50 }
    51 // END: day.end.bridges.DigestImpl