# HG changeset patch # User Jaroslav Tulach # Date 1213429943 -7200 # Node ID c75861f07646661e45f2d195b6f75d4c7e5d0970 # Parent a136893a92141fbea90bc62882aab865976301c9 Using real pieces of code the talk about bridges diff -r a136893a9214 -r c75861f07646 samples/messagedigest/nbproject/project.xml --- a/samples/messagedigest/nbproject/project.xml Sat Jun 14 09:52:23 2008 +0200 +++ b/samples/messagedigest/nbproject/project.xml Sat Jun 14 09:52:23 2008 +0200 @@ -97,7 +97,7 @@ src-test - src-api1.0:../libs/dist/junit-4.4.jar + src-new-api:src-new-spi:../libs/dist/junit-4.4.jar 1.5 diff -r a136893a9214 -r c75861f07646 samples/messagedigest/src-bridge/META-INF/services/org.apidesign.impl.security.friendapi.DigestProvider --- a/samples/messagedigest/src-bridge/META-INF/services/org.apidesign.impl.security.friendapi.DigestProvider Sat Jun 14 09:52:23 2008 +0200 +++ b/samples/messagedigest/src-bridge/META-INF/services/org.apidesign.impl.security.friendapi.DigestProvider Sat Jun 14 09:52:23 2008 +0200 @@ -1,3 +1,4 @@ -# this shall be in a separate module that provides the "bridge" -org.apidesign.impl.security.extension.BridgeToOldAlgorithmsProvider - +# BEGIN: day.end.bridges.FriendMetaInf +# registration in bridge's META-INF/services/friendapi.DigestProvider +org.apidesign.impl.security.extension.BridgeToNew +# END: day.end.bridges.FriendMetaInf diff -r a136893a9214 -r c75861f07646 samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToNew.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToNew.java Sat Jun 14 09:52:23 2008 +0200 @@ -0,0 +1,44 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.apidesign.impl.security.extension; + +import org.apidesign.impl.security.friendapi.DigestImplementation; +import org.apidesign.impl.security.friendapi.DigestProvider; +import java.nio.ByteBuffer; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author Jaroslav Tulach + */ +// BEGIN: day.end.bridges.BridgeToNew +public class BridgeToNew implements DigestProvider { + + public DigestImplementation create(String algorithm) { + try { + final MessageDigest md = MessageDigest.getInstance(algorithm); + return new DigestImplementation(algorithm) { + + @Override + public void update(ByteBuffer bb) { + md.update(bb); + } + + @Override + public byte[] digest() { + return md.digest(); + } + }; + } catch (NoSuchAlgorithmException ex) { + Logger.getLogger(BridgeToNew.class.getName()).log(Level.INFO, null, ex); + return null; + } + } +} +// END: day.end.bridges.BridgeToNew diff -r a136893a9214 -r c75861f07646 samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java --- a/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:23 2008 +0200 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:23 2008 +0200 @@ -19,6 +19,7 @@ * * @author Jaroslav Tulach */ +// BEGIN: day.end.bridges.BridgeToOld public class BridgeToOld extends Provider { public BridgeToOld() { @@ -80,3 +81,4 @@ } } +// END: day.end.bridges.BridgeToOld diff -r a136893a9214 -r c75861f07646 samples/messagedigest/src-test/test/CountingDigestor.java --- a/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:23 2008 +0200 +++ b/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:23 2008 +0200 @@ -10,10 +10,10 @@ /** * - * @author jarda + * @author Jaroslav Tulach */ +// BEGIN: day.end.bridges.CountingDigestor public final class CountingDigestor extends Digestor { - @Override protected byte[] digest(int[] data) { int i = data[0]; @@ -31,5 +31,5 @@ data[0] += input.remaining(); input.position(input.position() + input.remaining()); } - } +// END: day.end.bridges.CountingDigestor \ No newline at end of file diff -r a136893a9214 -r c75861f07646 samples/messagedigest/src-test/test/OldAPIToNewAPITest.java --- a/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:23 2008 +0200 +++ b/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:23 2008 +0200 @@ -43,6 +43,7 @@ @Test public void generateHashUsingMessageDigest() throws Exception { + // BEGIN: day.end.bridges.BridgeToOldRegister // The java.security.Providers cannot be registered in META-INF/services // that is why one needs to either configure various properties or // make some dummy call that will initialize our bridge class. @@ -51,6 +52,7 @@ // // This is the call: Digest initialize = Digest.getInstance("MD5"); + // END: day.end.bridges.BridgeToOldRegister MessageDigest md = MessageDigest.getInstance("cnt"); byte[] res = md.digest(arr);