aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/derived/Derived.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/derived/Derived.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/Derived.java50
1 files changed, 9 insertions, 41 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Derived.java b/config-model/src/main/java/com/yahoo/schema/derived/Derived.java
index 3ed9807b8f1..f4311912584 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/Derived.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/Derived.java
@@ -2,7 +2,6 @@
package com.yahoo.schema.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.schema.Index;
@@ -14,7 +13,6 @@ import com.yahoo.text.StringUtilities;
import java.io.IOException;
import java.io.Writer;
-import java.lang.reflect.Method;
import java.util.List;
/**
@@ -22,7 +20,7 @@ import java.util.List;
*
* @author bratseth
*/
-public abstract class Derived implements Exportable {
+public abstract class Derived {
private String name;
@@ -88,23 +86,13 @@ public abstract class Derived implements Exportable {
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 void export(String toDirectory) throws IOException {
+ protected void export(String toDirectory, ConfigInstance cfg) 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);
+ if (toDirectory != null) {
+ writer = IOUtils.createWriter(toDirectory + "/" + fileName, false);
+ exportConfig(writer, cfg);
}
}
finally {
@@ -112,30 +100,10 @@ public abstract class Derived implements Exportable {
}
}
- /**
- * 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";
+ private void exportConfig(Writer writer, ConfigInstance cfg) throws IOException {
+ List<String> payloadL = ConfigInstance.serialize(cfg);
+ String payload = StringUtilities.implodeMultiline(payloadL);
+ writer.write(payload);
}
}