summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-09-17 10:16:54 +0200
committerJon Bratseth <bratseth@gmail.com>2021-09-17 10:16:54 +0200
commita4c0083194606c969b5562d7ac4a8908d972d447 (patch)
tree55af3a0e6ce22a14e712e12be4690fe61cb104fd /container-core
parent4d31a75b8a249593d0a3503669d3399b980c8be1 (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.java48
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");
+ }
+
+ }
+
+}