# HG changeset patch # User Jaroslav Tulach # Date 1213429946 -7200 # Node ID 130e099942d8edaccc2510e62e6d74f840200069 # Parent 019f1e9f7741cc72010a30b1f88f0e688fd5c08e Merge: Geertjan's changes up to 4500 diff -r 019f1e9f7741 -r 130e099942d8 samples/messagedigest/build.xml --- a/samples/messagedigest/build.xml Sat Jun 14 09:52:26 2008 +0200 +++ b/samples/messagedigest/build.xml Sat Jun 14 09:52:26 2008 +0200 @@ -9,28 +9,30 @@ - + - - - - - + - + + + + + + + - + - + @@ -41,13 +43,25 @@ + + + + + + + + + - + + + + - + @@ -57,6 +71,8 @@ + + @@ -70,6 +86,7 @@ destdir="build/${version}/classes" source="1.5" target="1.5" classpath="${cp}" + debug="true" debuglevel="lines,vars,source" /> diff -r 019f1e9f7741 -r 130e099942d8 samples/messagedigest/nbproject/project.xml --- a/samples/messagedigest/nbproject/project.xml Sat Jun 14 09:52:26 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 - bridges + MessageDigest and Bridges @@ -17,12 +17,6 @@ UTF-8 - - java - src-new-spi - UTF-8 - - java src-bridge @@ -34,6 +28,11 @@ src-test UTF-8 + + + . + UTF-8 + @@ -49,23 +48,45 @@ 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 @@ -77,27 +98,27 @@ + + src-new-api + build/bridge/classes + build/new-api/classes + build/test/classes 1.5 - src-new-spi + src-bridge src-new-api 1.5 - src-bridge - src-new-api:src-new-spi - 1.5 - - src-test - src-api1.0:../libs/dist/junit-4.4.jar + src-new-api:../libs/dist/junit-4.4.jar 1.5 diff -r 019f1e9f7741 -r 130e099942d8 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:26 2008 +0200 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:26 2008 +0200 @@ -19,23 +19,37 @@ * * @author Jaroslav Tulach */ -public class BridgeToOld extends Provider { +// BEGIN: day.end.bridges.BridgeToOld +public final 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) { - if ("MessageDigest".equals(type)) { - Digest dig = Digest.getInstance(algorithm); - if (dig != null) { - return new ServiceImpl(dig, this, type, algorithm, "", Collections.emptyList(), Collections.emptyMap()); + 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()); + } } + return null; + } finally { + searching.set(prev); } - return null; } + // END: day.end.bridges.cycle private static class ServiceImpl extends Service { Digest dig; @@ -80,3 +94,4 @@ } } +// END: day.end.bridges.BridgeToOld diff -r 019f1e9f7741 -r 130e099942d8 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:26 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; -/** MessageDigest extends MessageDigestSpi, that means the javadoc +/** Simplified version of a Digest class that allows to compute a fingerprint + * for buffer of data. * - * @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 (DigestProvider dp : ServiceLoader.load(DigestProvider.class)) { - DigestImplementation impl = dp.create(algorithm); + for (Digestor digestor : ServiceLoader.load(Digestor.class)) { + DigestImplementation impl = DigestImplementation.create(digestor, algorithm); if (impl != null) { return new Digest(impl); } @@ -37,8 +37,7 @@ // public byte[] digest(ByteBuffer bb) { - impl.update(bb); - return impl.digest(); + return impl.digest(bb); } } // END: day.end.bridges.Digest diff -r 019f1e9f7741 -r 130e099942d8 samples/messagedigest/src-test/test/CountingDigestor.java --- a/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:26 2008 +0200 +++ b/samples/messagedigest/src-test/test/CountingDigestor.java Sat Jun 14 09:52:26 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 019f1e9f7741 -r 130e099942d8 samples/messagedigest/src-test/test/OldAPIToNewAPITest.java --- a/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:26 2008 +0200 +++ b/samples/messagedigest/src-test/test/OldAPIToNewAPITest.java Sat Jun 14 09:52:26 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);