diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-09-17 10:16:54 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-09-17 10:16:54 +0200 |
commit | a4c0083194606c969b5562d7ac4a8908d972d447 (patch) | |
tree | 55af3a0e6ce22a14e712e12be4690fe61cb104fd /container-core | |
parent | 4d31a75b8a249593d0a3503669d3399b980c8be1 (diff) |
Provide a (non-working) encoder by default
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/src/main/java/com/yahoo/language/provider/DefaultEncoderProvider.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/language/provider/DefaultEncoderProvider.java b/container-core/src/main/java/com/yahoo/language/provider/DefaultEncoderProvider.java new file mode 100644 index 00000000000..9b07ee55bd8 --- /dev/null +++ b/container-core/src/main/java/com/yahoo/language/provider/DefaultEncoderProvider.java @@ -0,0 +1,48 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.language.provider; + +import com.google.inject.Inject; +import com.yahoo.container.di.componentgraph.Provider; +import com.yahoo.language.Language; +import com.yahoo.language.process.Encoder; +import com.yahoo.tensor.Tensor; +import com.yahoo.tensor.TensorType; + +import java.util.List; + +/** + * Provides the default encoder implementation if no encoder component has been explicitly configured + * (dependency injection will fallback to providers if no components of the requested type is found). + * + * @author bratseth + */ +@SuppressWarnings("unused") // Injected +public class DefaultEncoderProvider implements Provider<Encoder> { + + // Use lazy initialization to avoid expensive (memory-wise) instantiation + private static final Encoder failingEncoder = new FailingEncoder(); + + @Inject + public DefaultEncoderProvider() { } + + @Override + public Encoder get() { return failingEncoder; } + + @Override + public void deconstruct() {} + + public static class FailingEncoder implements Encoder { + + @Override + public List<Integer> encode(String text, Language language) { + throw new IllegalStateException("No encoder has been configured"); + } + + @Override + public Tensor encode(String text, Language language, TensorType tensorType) { + throw new IllegalStateException("No encoder has been configured"); + } + + } + +} |