# HG changeset patch # User Jaroslav Tulach # Date 1213429946 -7200 # Node ID 019f1e9f7741cc72010a30b1f88f0e688fd5c08e # Parent 294a39765b0b31a06e4e8582cf9989f3f9e398d5 up to line 4500 diff -r 294a39765b0b -r 019f1e9f7741 samples/messagedigest/build.xml --- a/samples/messagedigest/build.xml Sat Jun 14 09:52:25 2008 +0200 +++ b/samples/messagedigest/build.xml Sat Jun 14 09:52:26 2008 +0200 @@ -9,30 +9,28 @@ + + + + - + - + - - - - - - - + - + - + @@ -43,25 +41,13 @@ - - - - - - - - - - - - - + - + @@ -71,8 +57,6 @@ - - @@ -86,7 +70,6 @@ destdir="build/${version}/classes" source="1.5" target="1.5" classpath="${cp}" - debug="true" debuglevel="lines,vars,source" /> diff -r 294a39765b0b -r 019f1e9f7741 samples/messagedigest/nbproject/project.xml --- a/samples/messagedigest/nbproject/project.xml Sat Jun 14 09:52:25 2008 +0200 +++ b/samples/messagedigest/nbproject/project.xml Sat Jun 14 09:52:26 2008 +0200 @@ -3,7 +3,7 @@ org.netbeans.modules.ant.freeform - MessageDigest and Bridges + bridges @@ -17,6 +17,12 @@ UTF-8 + + java + src-new-spi + UTF-8 + + java src-bridge @@ -28,11 +34,6 @@ src-test UTF-8 - - - . - UTF-8 - @@ -48,45 +49,23 @@ clean build - - -do-test - - include - src-test - relative-path-noext - - - - - - - folder - build/bridge/classes - build - - - folder - build/new-api/classes - build - - - folder - build/test/classes - build - - + src-new-api - + + src-new-spi + + + src-bridge - + src-test @@ -98,27 +77,27 @@ - - src-new-api - build/bridge/classes - build/new-api/classes - build/test/classes + 1.5 + + + src-new-spi + src-new-api 1.5 src-bridge - src-new-api + src-new-api:src-new-spi 1.5 src-test - src-new-api:../libs/dist/junit-4.4.jar + src-api1.0:../libs/dist/junit-4.4.jar 1.5 diff -r 294a39765b0b -r 019f1e9f7741 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:25 2008 +0200 +++ b/samples/messagedigest/src-bridge/META-INF/services/org.apidesign.impl.security.friendapi.DigestProvider Sat Jun 14 09:52:26 2008 +0200 @@ -1,4 +1,3 @@ -# 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 +# this shall be in a separate module that provides the "bridge" +org.apidesign.impl.security.extension.BridgeToOldAlgorithmsProvider + diff -r 294a39765b0b -r 019f1e9f7741 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:25 2008 +0200 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:26 2008 +0200 @@ -19,37 +19,23 @@ * * @author Jaroslav Tulach */ -// BEGIN: day.end.bridges.BridgeToOld -public final class BridgeToOld extends Provider { +public class BridgeToOld extends Provider { public BridgeToOld() { super("spi.Digestor", 1.0, ""); Security.addProvider(this); } - - // BEGIN: day.end.bridges.cycle - private ThreadLocal searching = new ThreadLocal(); - final boolean isSearching() { - return Boolean.TRUE.equals(searching.get()); - } @Override public synchronized Service getService(String type, String algorithm) { - Boolean prev = searching.get(); - try { - searching.set(Boolean.TRUE); - if ("MessageDigest".equals(type)) { - Digest dig = Digest.getInstance(algorithm); - if (dig != null) { - return new ServiceImpl(dig, this, type, algorithm, "", Collections.emptyList(), Collections.emptyMap()); - } + if ("MessageDigest".equals(type)) { + Digest dig = Digest.getInstance(algorithm); + if (dig != null) { + return new ServiceImpl(dig, this, type, algorithm, "", Collections.emptyList(), Collections.emptyMap()); } - return null; - } finally { - searching.set(prev); } + return null; } - // END: day.end.bridges.cycle private static class ServiceImpl extends Service { Digest dig; @@ -94,4 +80,3 @@ } } -// END: day.end.bridges.BridgeToOld diff -r 294a39765b0b -r 019f1e9f7741 samples/messagedigest/src-new-api/org/apidesign/api/security/Digest.java --- a/samples/messagedigest/src-new-api/org/apidesign/api/security/Digest.java Sat Jun 14 09:52:25 2008 +0200 +++ b/samples/messagedigest/src-new-api/org/apidesign/api/security/Digest.java Sat Jun 14 09:52:26 2008 +0200 @@ -2,28 +2,28 @@ package org.apidesign.api.security; import java.nio.ByteBuffer; +import org.apidesign.impl.security.friendapi.DigestImplementation; +import org.apidesign.impl.security.friendapi.DigestProvider; import java.util.ServiceLoader; -import org.apidesign.spi.security.Digestor; -/** Simplified version of a Digest class that allows to compute a fingerprint - * for buffer of data. +/** MessageDigest extends MessageDigestSpi, that means the javadoc * - * @author Jaroslav Tulach + * @author Jaroslav Tulach */ // BEGIN: day.end.bridges.Digest public final class Digest { - private final DigestImplementation impl; + private final DigestImplementation impl; /** Factory method is better than constructor */ - private Digest(DigestImplementation impl) { + private Digest(DigestImplementation impl) { this.impl = impl; } /** Factory method to create digest for an algorithm. */ public static Digest getInstance(String algorithm) { - for (Digestor digestor : ServiceLoader.load(Digestor.class)) { - DigestImplementation impl = DigestImplementation.create(digestor, algorithm); + for (DigestProvider dp : ServiceLoader.load(DigestProvider.class)) { + DigestImplementation impl = dp.create(algorithm); if (impl != null) { return new Digest(impl); } @@ -37,7 +37,8 @@ // public byte[] digest(ByteBuffer bb) { - return impl.digest(bb); + impl.update(bb); + return impl.digest(); } } // END: day.end.bridges.Digest diff -r 294a39765b0b -r 019f1e9f7741 samples/messagedigest/src-test/test/CountingDigestor.java --- a/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:25 2008 +0200 +++ b/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:26 2008 +0200 @@ -10,10 +10,10 @@ /** * - * @author Jaroslav Tulach + * @author jarda */ -// 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 294a39765b0b -r 019f1e9f7741 samples/messagedigest/src-test/test/OldAPIToNewAPITest.java --- a/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:25 2008 +0200 +++ b/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:26 2008 +0200 @@ -43,7 +43,6 @@ @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. @@ -52,7 +51,6 @@ // // This is the call: Digest initialize = Digest.getInstance("MD5"); - // END: day.end.bridges.BridgeToOldRegister MessageDigest md = MessageDigest.getInstance("cnt"); byte[] res = md.digest(arr);