summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java141
1 files changed, 0 insertions, 141 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
deleted file mode 100644
index 99c40c2700f..00000000000
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.searchdefinition.derived;
-
-import com.yahoo.config.ConfigInstance;
-import com.yahoo.config.ConfigInstance.Builder;
-import com.yahoo.document.Field;
-import com.yahoo.io.IOUtils;
-import com.yahoo.searchdefinition.Index;
-import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.document.ImmutableSDField;
-import com.yahoo.searchdefinition.document.SDDocumentType;
-import com.yahoo.searchdefinition.document.SDField;
-import com.yahoo.text.StringUtilities;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.lang.reflect.Method;
-import java.util.List;
-
-/**
- * Superclass of all derived configurations
- *
- * @author bratseth
- */
-public abstract class Derived implements Exportable {
-
- private String name;
-
- public Derived() {
- this("");
- }
-
- public Derived(String name) {
- this.name = name;
- }
-
- public String getName() { return name; }
-
- protected final void setName(String name) { this.name = name; }
-
- /**
- * Derives the content of this configuration. This
- * default calls derive(Document) for each document
- * and derive(SDField) for each search definition level field
- * AND sets the name of this to the name of the input search definition
- */
- protected void derive(Schema schema) {
- setName(schema.getName());
- derive(schema.getDocument(), schema);
- for (Index index : schema.getExplicitIndices())
- derive(index, schema);
- for (SDField field : schema.allExtraFields())
- derive(field, schema);
- schema.allImportedFields().forEach(importedField -> derive(importedField, schema));
- }
-
-
- /**
- * Derives the content of this configuration. This
- * default calls derive(SDField) for each document field
- */
- protected void derive(SDDocumentType document, Schema schema) {
- for (Field field : document.fieldSet()) {
- SDField sdField = (SDField) field;
- if ( ! sdField.isExtraField()) {
- derive(sdField, schema);
- }
- }
- }
-
- /**
- * Derives the content of this configuration. This
- * default does nothing.
- */
- protected void derive(ImmutableSDField field, Schema schema) {}
-
- /**
- * Derives the content of this configuration. This
- * default does nothing.
- */
- protected void derive(Index index, Schema schema) {
- }
-
- protected abstract String getDerivedName();
-
- /** Returns the value of getName if true, the given number as a string otherwise */
- protected String getIndex(int number, boolean labels) {
- return labels ? getName() : String.valueOf(number);
- }
-
- /**
- * Exports this derived configuration to its .cfg file
- * in toDirectory
- *
- * @param toDirectory the directory to export to, or null
- *
- */
- public final void export(String toDirectory) throws IOException {
- Writer writer = null;
- try {
- String fileName = getDerivedName() + ".cfg";
- if (toDirectory != null)
- writer = IOUtils.createWriter(toDirectory + "/" + fileName,false);
- try {
- exportBuilderConfig(writer);
- } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) {
- throw new RuntimeException(e);
- }
- }
- finally {
- if (writer != null) IOUtils.closeWriter(writer);
- }
- }
-
- /**
- * Checks what this is a producer of, instantiate that and export to writer
- */
- // TODO move to ReflectionUtil, and move that to unexported pkg
- private void exportBuilderConfig(Writer writer) throws ReflectiveOperationException, SecurityException, IllegalArgumentException, IOException {
- for (Class<?> intf : getClass().getInterfaces()) {
- if (ConfigInstance.Producer.class.isAssignableFrom(intf)) {
- Class<?> configClass = intf.getEnclosingClass();
- String builderClassName = configClass.getCanonicalName()+"$Builder";
- Class<?> builderClass = Class.forName(builderClassName);
- ConfigInstance.Builder builder = (Builder) builderClass.getDeclaredConstructor().newInstance();
- Method getConfig = getClass().getMethod("getConfig", builderClass);
- getConfig.invoke(this, builder);
- ConfigInstance inst = (ConfigInstance) configClass.getConstructor(builderClass).newInstance(builder);
- List<String> payloadL = ConfigInstance.serialize(inst);
- String payload = StringUtilities.implodeMultiline(payloadL);
- writer.write(payload);
- }
- }
- }
-
- @Override
- public String getFileName() {
- return getDerivedName() + ".cfg";
- }
-
-}