samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java
changeset 51 130e099942d8
parent 50 019f1e9f7741
child 132 3bc4c54f4bcc
     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