1.1 --- a/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToNew.java Sat Jun 14 09:52:25 2008 +0200
1.2 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToNew.java Sat Jun 14 09:52:25 2008 +0200
1.3 @@ -23,9 +23,13 @@
1.4
1.5 @Override
1.6 protected MessageDigest create(String algorithm) {
1.7 + // BEGIN: day.end.bridges.cyclecheck
1.8 if (oldBridge.isSearching()) {
1.9 + // if the call is initiated from the other bridge, do not do
1.10 + // any delegation
1.11 return null;
1.12 }
1.13 + // END: day.end.bridges.cyclecheck
1.14
1.15 try {
1.16 return MessageDigest.getInstance(algorithm);
2.1 --- a/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:25 2008 +0200
2.2 +++ b/samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java Sat Jun 14 09:52:25 2008 +0200
2.3 @@ -20,13 +20,18 @@
2.4 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
2.5 */
2.6 // BEGIN: day.end.bridges.BridgeToOld
2.7 -public class BridgeToOld extends Provider {
2.8 - private ThreadLocal<Boolean> searching = new ThreadLocal<Boolean>();
2.9 +public final class BridgeToOld extends Provider {
2.10
2.11 public BridgeToOld() {
2.12 super("spi.Digestor", 1.0, "");
2.13 Security.addProvider(this);
2.14 }
2.15 +
2.16 + // BEGIN: day.end.bridges.cycle
2.17 + private ThreadLocal<Boolean> searching = new ThreadLocal<Boolean>();
2.18 + final boolean isSearching() {
2.19 + return Boolean.TRUE.equals(searching.get());
2.20 + }
2.21
2.22 @Override
2.23 public synchronized Service getService(String type, String algorithm) {
2.24 @@ -44,6 +49,7 @@
2.25 searching.set(prev);
2.26 }
2.27 }
2.28 + // END: day.end.bridges.cycle
2.29
2.30 private static class ServiceImpl<Data> extends Service {
2.31 Digest dig;
2.32 @@ -87,9 +93,5 @@
2.33
2.34 }
2.35
2.36 - boolean isSearching() {
2.37 - return Boolean.TRUE.equals(searching.get());
2.38 - }
2.39 -
2.40 }
2.41 // END: day.end.bridges.BridgeToOld