samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java
1.1 --- a/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:26 2008 +0200
1.2 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:26 2008 +0200
1.3 @@ -19,23 +19,37 @@
1.4 *
1.5 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.6 */
1.7 -public class BridgeToOld extends Provider {
1.8 +// BEGIN: day.end.bridges.BridgeToOld
1.9 +public final class BridgeToOld extends Provider {
1.10
1.11 public BridgeToOld() {
1.12 super("spi.Digestor", 1.0, "");
1.13 Security.addProvider(this);
1.14 }
1.15 +
1.16 + // BEGIN: day.end.bridges.cycle
1.17 + private ThreadLocal<Boolean> searching = new ThreadLocal<Boolean>();
1.18 + final boolean isSearching() {
1.19 + return Boolean.TRUE.equals(searching.get());
1.20 + }
1.21
1.22 @Override
1.23 public synchronized Service getService(String type, String algorithm) {
1.24 - if ("MessageDigest".equals(type)) {
1.25 - Digest dig = Digest.getInstance(algorithm);
1.26 - if (dig != null) {
1.27 - return new ServiceImpl(dig, this, type, algorithm, "", Collections.<String>emptyList(), Collections.<String,String>emptyMap());
1.28 + Boolean prev = searching.get();
1.29 + try {
1.30 + searching.set(Boolean.TRUE);
1.31 + if ("MessageDigest".equals(type)) {
1.32 + Digest dig = Digest.getInstance(algorithm);
1.33 + if (dig != null) {
1.34 + return new ServiceImpl(dig, this, type, algorithm, "", Collections.<String>emptyList(), Collections.<String,String>emptyMap());
1.35 + }
1.36 }
1.37 + return null;
1.38 + } finally {
1.39 + searching.set(prev);
1.40 }
1.41 - return null;
1.42 }
1.43 + // END: day.end.bridges.cycle
1.44
1.45 private static class ServiceImpl<Data> extends Service {
1.46 Digest dig;
1.47 @@ -80,3 +94,4 @@
1.48 }
1.49
1.50 }
1.51 +// END: day.end.bridges.BridgeToOld