samples/messagedigest/src/spi/Digestor.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:52:21 +0200
changeset 40 4a29f9676618
permissions -rw-r--r--
Defining also the SPI and providing a test. The integration with java.security is still missing
jtulach@40
     1
/*
jtulach@40
     2
 * To change this template, choose Tools | Templates
jtulach@40
     3
 * and open the template in the editor.
jtulach@40
     4
 */
jtulach@40
     5
jtulach@40
     6
package spi;
jtulach@40
     7
jtulach@40
     8
import impl.spi.DigestorAccessor;
jtulach@40
     9
import java.nio.ByteBuffer;
jtulach@40
    10
jtulach@40
    11
/**
jtulach@40
    12
 *
jtulach@40
    13
 * @author  Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jtulach@40
    14
 */
jtulach@40
    15
public abstract class Digestor<Data> {
jtulach@40
    16
   protected abstract byte[] digest(Data data);
jtulach@40
    17
   protected abstract Data create(String algorithm); 
jtulach@40
    18
   protected abstract void update(Data data, ByteBuffer input);
jtulach@40
    19
   
jtulach@40
    20
   
jtulach@40
    21
   static {
jtulach@40
    22
       new DigestorAccessor() {
jtulach@40
    23
            @Override
jtulach@40
    24
            protected <Data> byte[] digest(Digestor<Data> dig, Data data) {
jtulach@40
    25
                return dig.digest(data);
jtulach@40
    26
            }
jtulach@40
    27
jtulach@40
    28
            @Override
jtulach@40
    29
            protected <Data> Data create(Digestor<Data> dig, String algorithm) {
jtulach@40
    30
                return dig.create(algorithm);
jtulach@40
    31
            }
jtulach@40
    32
jtulach@40
    33
            @Override
jtulach@40
    34
            protected <Data> void update(Digestor<Data> dig, Data data, ByteBuffer input) {
jtulach@40
    35
                dig.update(data, input);
jtulach@40
    36
            }
jtulach@40
    37
        };
jtulach@40
    38
   }
jtulach@40
    39
}