test_class.file: java_src/src/test/java/com/google/crypto/tink/subtle/EngineFactoryTest.java
test_class.identifier: EngineFactoryTest
test_case.body: @Test
    public void testAtLeastGetsACipherByDefault() throws Exception {
      EngineFactory.CIPHER.getInstance("AES");
      // didn't throw
    }
test_case.class_method_signature: EngineFactoryTest.testAtLeastGetsACipherByDefault()
test_case.full_signature: @Test public void testAtLeastGetsACipherByDefault()
test_case.identifier: testAtLeastGetsACipherByDefault
test_case.invocations: getInstance
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testAtLeastGetsACipherByDefault()
focal_class.declarator: logger = Logger.getLogger(EngineFactory.class.getName())
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = Logger.getLogger(EngineFactory.class.getName());
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: defaultPolicy
focal_class.modifier: private static final
focal_class.original_string: private static final List<Provider> defaultPolicy;
focal_class.type: List<Provider>
focal_class.var_name: defaultPolicy
focal_class.declarator: DEFAULT_LET_FALLBACK = true
focal_class.modifier: private static final
focal_class.original_string: private static final boolean DEFAULT_LET_FALLBACK = true;
focal_class.type: boolean
focal_class.var_name: DEFAULT_LET_FALLBACK
focal_class.declarator: CIPHER =
        new EngineFactory<>(new EngineWrapper.TCipher())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TCipher, Cipher> CIPHER =
        new EngineFactory<>(new EngineWrapper.TCipher());
focal_class.type: EngineFactory<EngineWrapper.TCipher, Cipher>
focal_class.var_name: CIPHER
focal_class.declarator: MAC =
        new EngineFactory<>(new EngineWrapper.TMac())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TMac, Mac> MAC =
        new EngineFactory<>(new EngineWrapper.TMac());
focal_class.type: EngineFactory<EngineWrapper.TMac, Mac>
focal_class.var_name: MAC
focal_class.declarator: SIGNATURE =
        new EngineFactory<>(new EngineWrapper.TSignature())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TSignature, Signature> SIGNATURE =
        new EngineFactory<>(new EngineWrapper.TSignature());
focal_class.type: EngineFactory<EngineWrapper.TSignature, Signature>
focal_class.var_name: SIGNATURE
focal_class.declarator: MESSAGE_DIGEST =
        new EngineFactory<>(new EngineWrapper.TMessageDigest())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TMessageDigest, MessageDigest> MESSAGE_DIGEST =
        new EngineFactory<>(new EngineWrapper.TMessageDigest());
focal_class.type: EngineFactory<EngineWrapper.TMessageDigest, MessageDigest>
focal_class.var_name: MESSAGE_DIGEST
focal_class.declarator: KEY_AGREEMENT =
        new EngineFactory<>(new EngineWrapper.TKeyAgreement())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TKeyAgreement, KeyAgreement> KEY_AGREEMENT =
        new EngineFactory<>(new EngineWrapper.TKeyAgreement());
focal_class.type: EngineFactory<EngineWrapper.TKeyAgreement, KeyAgreement>
focal_class.var_name: KEY_AGREEMENT
focal_class.declarator: KEY_PAIR_GENERATOR = new EngineFactory<>(new EngineWrapper.TKeyPairGenerator())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TKeyPairGenerator, KeyPairGenerator>
        KEY_PAIR_GENERATOR = new EngineFactory<>(new EngineWrapper.TKeyPairGenerator());
focal_class.type: EngineFactory<EngineWrapper.TKeyPairGenerator, KeyPairGenerator>
focal_class.var_name: KEY_PAIR_GENERATOR
focal_class.declarator: KEY_FACTORY =
        new EngineFactory<>(new EngineWrapper.TKeyFactory())
focal_class.modifier: public static final
focal_class.original_string: public static final EngineFactory<EngineWrapper.TKeyFactory, KeyFactory> KEY_FACTORY =
        new EngineFactory<>(new EngineWrapper.TKeyFactory());
focal_class.type: EngineFactory<EngineWrapper.TKeyFactory, KeyFactory>
focal_class.var_name: KEY_FACTORY
focal_class.declarator: instanceBuilder
focal_class.modifier: private
focal_class.original_string: private T_WRAPPER instanceBuilder;
focal_class.type: T_WRAPPER
focal_class.var_name: instanceBuilder
focal_class.declarator: policy
focal_class.modifier: private
focal_class.original_string: private List<Provider> policy;
focal_class.type: List<Provider>
focal_class.var_name: policy
focal_class.declarator: letFallback
focal_class.modifier: private
focal_class.original_string: private boolean letFallback;
focal_class.type: boolean
focal_class.var_name: letFallback
focal_class.file: java_src/src/main/java/com/google/crypto/tink/subtle/EngineFactory.java
focal_class.identifier: EngineFactory
focal_class.class_method_signature: EngineFactory.getCustomCipherProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TCipher, Cipher> getCustomCipherProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomCipherProvider
focal_class.modifiers: public static final
focal_class.parameters: (
        boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TCipher, Cipher>
focal_class.signature: EngineFactory<EngineWrapper.TCipher, Cipher> getCustomCipherProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomMacProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TMac, Mac> getCustomMacProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomMacProvider
focal_class.modifiers: public static final
focal_class.parameters: (
        boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TMac, Mac>
focal_class.signature: EngineFactory<EngineWrapper.TMac, Mac> getCustomMacProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomSignatureProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TSignature, Signature> getCustomSignatureProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomSignatureProvider
focal_class.modifiers: public static final
focal_class.parameters: (
        boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TSignature, Signature>
focal_class.signature: EngineFactory<EngineWrapper.TSignature, Signature> getCustomSignatureProvider(
        boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomMessageDigestProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TMessageDigest, MessageDigest> getCustomMessageDigestProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomMessageDigestProvider
focal_class.modifiers: public static final
focal_class.parameters: (boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TMessageDigest, MessageDigest>
focal_class.signature: EngineFactory<EngineWrapper.TMessageDigest, MessageDigest> getCustomMessageDigestProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomKeyAgreementProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TKeyAgreement, KeyAgreement> getCustomKeyAgreementProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomKeyAgreementProvider
focal_class.modifiers: public static final
focal_class.parameters: (boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TKeyAgreement, KeyAgreement>
focal_class.signature: EngineFactory<EngineWrapper.TKeyAgreement, KeyAgreement> getCustomKeyAgreementProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomKeyPairGeneratorProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TKeyPairGenerator, KeyPairGenerator> getCustomKeyPairGeneratorProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomKeyPairGeneratorProvider
focal_class.modifiers: public static final
focal_class.parameters: (boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TKeyPairGenerator, KeyPairGenerator>
focal_class.signature: EngineFactory<EngineWrapper.TKeyPairGenerator, KeyPairGenerator> getCustomKeyPairGeneratorProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.getCustomKeyFactoryProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.full_signature: public static final EngineFactory<EngineWrapper.TKeyFactory, KeyFactory> getCustomKeyFactoryProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.identifier: getCustomKeyFactoryProvider
focal_class.modifiers: public static final
focal_class.parameters: (boolean letFallbackToDefault, String... providerNames)
focal_class.return: EngineFactory<EngineWrapper.TKeyFactory, KeyFactory>
focal_class.signature: EngineFactory<EngineWrapper.TKeyFactory, KeyFactory> getCustomKeyFactoryProvider(boolean letFallbackToDefault, String... providerNames)
focal_class.class_method_signature: EngineFactory.toProviderList(String... providerNames)
focal_class.full_signature: public static List<Provider> toProviderList(String... providerNames)
focal_class.identifier: toProviderList
focal_class.modifiers: public static
focal_class.parameters: (String... providerNames)
focal_class.return: List<Provider>
focal_class.signature: List<Provider> toProviderList(String... providerNames)
focal_class.class_method_signature: EngineFactory.EngineFactory(T_WRAPPER instanceBuilder)
focal_class.full_signature: public  EngineFactory(T_WRAPPER instanceBuilder)
focal_class.identifier: EngineFactory
focal_class.modifiers: public
focal_class.parameters: (T_WRAPPER instanceBuilder)
focal_class.signature:  EngineFactory(T_WRAPPER instanceBuilder)
focal_class.class_method_signature: EngineFactory.EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy)
focal_class.full_signature: public  EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy)
focal_class.identifier: EngineFactory
focal_class.modifiers: public
focal_class.parameters: (T_WRAPPER instanceBuilder, List<Provider> policy)
focal_class.signature:  EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy)
focal_class.class_method_signature: EngineFactory.EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy, boolean letFallback)
focal_class.full_signature: public  EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy, boolean letFallback)
focal_class.identifier: EngineFactory
focal_class.modifiers: public
focal_class.parameters: (T_WRAPPER instanceBuilder, List<Provider> policy, boolean letFallback)
focal_class.signature:  EngineFactory(T_WRAPPER instanceBuilder, List<Provider> policy, boolean letFallback)
focal_class.class_method_signature: EngineFactory.getInstance(String algorithm)
focal_class.full_signature: public T_ENGINE getInstance(String algorithm)
focal_class.identifier: getInstance
focal_class.modifiers: public
focal_class.parameters: (String algorithm)
focal_class.return: T_ENGINE
focal_class.signature: T_ENGINE getInstance(String algorithm)
focal_method.body: public T_ENGINE getInstance(String algorithm) throws GeneralSecurityException {
      Exception cause = null;
      for (Provider provider : this.policy) {
        try {
          return this.instanceBuilder.getInstance(algorithm, provider);
        } catch (Exception e) {
          if (cause == null) {
            cause = e;
          }
        }
      }
      if (letFallback) {
        return this.instanceBuilder.getInstance(algorithm, null);
      }
      throw new GeneralSecurityException("No good Provider found.", cause);
    }
focal_method.class_method_signature: EngineFactory.getInstance(String algorithm)
focal_method.full_signature: public T_ENGINE getInstance(String algorithm)
focal_method.identifier: getInstance
focal_method.invocations: getInstance getInstance
focal_method.modifiers: public
focal_method.parameters: (String algorithm)
focal_method.return: T_ENGINE
focal_method.signature: T_ENGINE getInstance(String algorithm)