aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/configmodel
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahoo-inc.com>2017-02-02 13:08:43 +0100
committerGeir Storli <geirst@yahoo-inc.com>2017-02-02 13:08:43 +0100
commit5bfb3aaf39e4ddfc3d8437891075928027d92e06 (patch)
treebe63ce11a189703b98ea3d06a9ff8515cb05e7e5 /config-model/src/main/java/com/yahoo/vespa/configmodel
parent5814d23208b3f60c6862a39d018a544716c7b96c (diff)
Refactor buildConfig().
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/configmodel')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java175
1 files changed, 106 insertions, 69 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
index ad140be75ed..c09036b53ef 100644
--- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
+++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
@@ -18,14 +18,14 @@ public class DocumentTypes {
public DocumenttypesConfig.Builder produce(DocumentModel model, DocumenttypesConfig.Builder builder) {
Map<NewDocumentType.Name, NewDocumentType> produced = new HashMap<>();
- for(NewDocumentType documentType : model.getDocumentManager().getTypes()) {
+ for (NewDocumentType documentType : model.getDocumentManager().getTypes()) {
produceInheritOrder(documentType, builder, produced);
}
return builder;
}
private void produceInheritOrder(NewDocumentType documentType, DocumenttypesConfig.Builder builder, Map<NewDocumentType.Name, NewDocumentType> produced) {
- if ( ! produced.containsKey(documentType.getFullName())) {
+ if (!produced.containsKey(documentType.getFullName())) {
for (NewDocumentType inherited : documentType.getInherited()) {
produceInheritOrder(inherited, builder, produced);
}
@@ -40,10 +40,10 @@ public class DocumentTypes {
}
DocumenttypesConfig.Documenttype.Builder db = new DocumenttypesConfig.Documenttype.Builder();
db.
- id(documentType.getId()).
- name(documentType.getName()).
- headerstruct(documentType.getHeader().getId()).
- bodystruct(documentType.getBody().getId());
+ id(documentType.getId()).
+ name(documentType.getName()).
+ headerstruct(documentType.getHeader().getId()).
+ bodystruct(documentType.getBody().getId());
Set<Integer> built = new HashSet<>();
for (NewDocumentType inherited : documentType.getInherited()) {
db.inherits(new DocumenttypesConfig.Documenttype.Inherits.Builder().id(inherited.getId()));
@@ -52,7 +52,7 @@ public class DocumentTypes {
for (DataType dt : documentType.getTypes()) {
buildConfig(dt, db, built);
}
- for(AnnotationType annotation : documentType.getAnnotations()) {
+ for (AnnotationType annotation : documentType.getAnnotations()) {
DocumenttypesConfig.Documenttype.Annotationtype.Builder atb = new DocumenttypesConfig.Documenttype.Annotationtype.Builder();
db.annotationtype(atb);
buildConfig(annotation, atb);
@@ -64,7 +64,7 @@ public class DocumentTypes {
private void buildConfig(Set<FieldSet> fieldSets, com.yahoo.document.DocumenttypesConfig.Documenttype.Builder db) {
for (FieldSet fs : fieldSets) {
buildConfig(fs, db);
- }
+ }
}
private void buildConfig(FieldSet fs, DocumenttypesConfig.Documenttype.Builder db) {
@@ -79,10 +79,10 @@ public class DocumentTypes {
private void buildConfig(AnnotationType annotation, DocumenttypesConfig.Documenttype.Annotationtype.Builder builder) {
builder.
- id(annotation.getId()).
- name(annotation.getName());
+ id(annotation.getId()).
+ name(annotation.getName());
DataType dt = annotation.getDataType();
- if (dt!=null) {
+ if (dt != null) {
builder.datatype(dt.getId());
}
for (AnnotationType inherited : annotation.getInheritedTypes()) {
@@ -91,77 +91,27 @@ public class DocumentTypes {
}
private void buildConfig(DataType type, DocumenttypesConfig.Documenttype.Builder documentBuilder, Set<Integer> built) {
- if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && ! built.contains(type.getId())) {
+ if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && !built.contains(type.getId())) {
built.add(type.getId());
DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder = new DocumenttypesConfig.Documenttype.Datatype.Builder();
dataTypeBuilder.id(type.getId());
if (type instanceof StructDataType) {
- dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.STRUCT);
- StructDataType dt = (StructDataType) type;
- DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder structBuilder = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder();
- dataTypeBuilder.sstruct(structBuilder);
- structBuilder.name(dt.getName());
- if (dt.getCompressionConfig().type.getCode() != 0) {
- structBuilder.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder().
- type(DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Type.Enum.valueOf(dt.getCompressionConfig().type.toString())).
- level(dt.getCompressionConfig().compressionLevel).
- threshold((int)dt.getCompressionConfig().threshold).
- minsize((int)dt.getCompressionConfig().minsize));
- }
- for (com.yahoo.document.Field field : dt.getFields()) {
- DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder builder =
- new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder();
- builder.name(field.getName()).
- id(field.getId()).
- id_v6(field.getIdV6()).
- datatype(field.getDataType().getId());
- if (field.getDataType() instanceof TensorDataType)
- builder.detailedtype(((TensorDataType)field.getDataType()).getTensorType().toString());
- structBuilder.field(builder);
- buildConfig(field.getDataType(), documentBuilder, built);
- }
+ buildConfig((StructDataType) type, dataTypeBuilder, documentBuilder, built);
} else if (type instanceof ArrayDataType) {
- dataTypeBuilder.
- type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ARRAY).
- array(new DocumenttypesConfig.Documenttype.Datatype.Array.Builder().
- element(new DocumenttypesConfig.Documenttype.Datatype.Array.Element.Builder().id(((ArrayDataType)type).getNestedType().getId())));
- buildConfig(((ArrayDataType)type).getNestedType(), documentBuilder, built);
+ buildConfig((ArrayDataType) type, dataTypeBuilder, documentBuilder, built);
} else if (type instanceof WeightedSetDataType) {
- dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.WSET).
- wset(new DocumenttypesConfig.Documenttype.Datatype.Wset.Builder().
- key(new DocumenttypesConfig.Documenttype.Datatype.Wset.Key.Builder().
- id(((WeightedSetDataType)type).getNestedType().getId())).
- createifnonexistent(((WeightedSetDataType)type).createIfNonExistent()).
- removeifzero(((WeightedSetDataType)type).removeIfZero()));
- buildConfig(((WeightedSetDataType)type).getNestedType(), documentBuilder, built);
+ buildConfig((WeightedSetDataType) type, dataTypeBuilder, documentBuilder, built);
} else if (type instanceof MapDataType) {
- dataTypeBuilder.
- type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.MAP).
- map(new DocumenttypesConfig.Documenttype.Datatype.Map.Builder().
- key(new DocumenttypesConfig.Documenttype.Datatype.Map.Key.Builder().
- id(((MapDataType)type).getKeyType().getId())).
- value(new DocumenttypesConfig.Documenttype.Datatype.Map.Value.Builder().
- id(((MapDataType)type).getValueType().getId())));
- buildConfig(((MapDataType)type).getKeyType(), documentBuilder, built);
- buildConfig(((MapDataType)type).getValueType(), documentBuilder, built);
+ buildConfig((MapDataType) type, dataTypeBuilder, documentBuilder, built);
} else if (type instanceof AnnotationReferenceDataType) {
- dataTypeBuilder.
- type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ANNOTATIONREF).
- annotationref(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Builder().
- annotation(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Annotation.Builder().
- id(((AnnotationReferenceDataType)type).getAnnotationType().getId())));
+ buildConfig((AnnotationReferenceDataType) type, dataTypeBuilder);
} else if (type instanceof TensorDataType) {
// The type of the tensor is not stored here but instead in each field as detailed type information
// to provide better compatibility. A tensor field can have its tensorType changed (in compatible ways)
// without changing the field type and thus requiring data refeed
return;
} else if (type instanceof ReferenceDataType) {
- ReferenceDataType refType = (ReferenceDataType) type;
- DocumenttypesConfig.Documenttype.Referencetype.Builder refBuilder =
- new DocumenttypesConfig.Documenttype.Referencetype.Builder();
- refBuilder.id(refType.getId());
- refBuilder.target_type_id(((ReferenceDataType) type).getTargetType().getId());
- documentBuilder.referencetype(refBuilder);
+ buildConfig((ReferenceDataType) type, documentBuilder);
return;
} else {
return;
@@ -170,5 +120,92 @@ public class DocumentTypes {
}
}
-}
+ private void buildConfig(StructDataType type,
+ DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder,
+ DocumenttypesConfig.Documenttype.Builder documentBuilder,
+ Set<Integer> built) {
+ dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.STRUCT);
+ DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder structBuilder = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder();
+ dataTypeBuilder.sstruct(structBuilder);
+ structBuilder.name(type.getName());
+ if (type.getCompressionConfig().type.getCode() != 0) {
+ structBuilder.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder().
+ type(DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Type.Enum.valueOf(type.getCompressionConfig().type.toString())).
+ level(type.getCompressionConfig().compressionLevel).
+ threshold((int) type.getCompressionConfig().threshold).
+ minsize((int) type.getCompressionConfig().minsize));
+ }
+ for (com.yahoo.document.Field field : type.getFields()) {
+ DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder builder =
+ new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder();
+ builder.name(field.getName()).
+ id(field.getId()).
+ id_v6(field.getIdV6()).
+ datatype(field.getDataType().getId());
+ if (field.getDataType() instanceof TensorDataType) {
+ builder.detailedtype(((TensorDataType) field.getDataType()).getTensorType().toString());
+ }
+ structBuilder.field(builder);
+ buildConfig(field.getDataType(), documentBuilder, built);
+ }
+ }
+ private void buildConfig(ArrayDataType type,
+ DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder,
+ DocumenttypesConfig.Documenttype.Builder documentBuilder,
+ Set<Integer> built) {
+ dataTypeBuilder.
+ type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ARRAY).
+ array(new DocumenttypesConfig.Documenttype.Datatype.Array.Builder().
+ element(new DocumenttypesConfig.Documenttype.Datatype.Array.Element.Builder().id(((ArrayDataType) type).getNestedType().getId())));
+ buildConfig(((ArrayDataType) type).getNestedType(), documentBuilder, built);
+ }
+
+ private void buildConfig(WeightedSetDataType type,
+ DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder,
+ DocumenttypesConfig.Documenttype.Builder documentBuilder,
+ Set<Integer> built) {
+ dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.WSET).
+ wset(new DocumenttypesConfig.Documenttype.Datatype.Wset.Builder().
+ key(new DocumenttypesConfig.Documenttype.Datatype.Wset.Key.Builder().
+ id(((WeightedSetDataType) type).getNestedType().getId())).
+ createifnonexistent(((WeightedSetDataType) type).createIfNonExistent()).
+ removeifzero(((WeightedSetDataType) type).removeIfZero()));
+ buildConfig(((WeightedSetDataType) type).getNestedType(), documentBuilder, built);
+ }
+
+ private void buildConfig(MapDataType type,
+ DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder,
+ DocumenttypesConfig.Documenttype.Builder documentBuilder,
+ Set<Integer> built) {
+ dataTypeBuilder.
+ type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.MAP).
+ map(new DocumenttypesConfig.Documenttype.Datatype.Map.Builder().
+ key(new DocumenttypesConfig.Documenttype.Datatype.Map.Key.Builder().
+ id(((MapDataType) type).getKeyType().getId())).
+ value(new DocumenttypesConfig.Documenttype.Datatype.Map.Value.Builder().
+ id(((MapDataType) type).getValueType().getId())));
+ buildConfig(((MapDataType) type).getKeyType(), documentBuilder, built);
+ buildConfig(((MapDataType) type).getValueType(), documentBuilder, built);
+ }
+
+ private void buildConfig(AnnotationReferenceDataType type,
+ DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder) {
+ dataTypeBuilder.
+ type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ANNOTATIONREF).
+ annotationref(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Builder().
+ annotation(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Annotation.Builder().
+ id(((AnnotationReferenceDataType) type).getAnnotationType().getId())));
+ }
+
+ private void buildConfig(ReferenceDataType type,
+ DocumenttypesConfig.Documenttype.Builder documentBuilder) {
+ ReferenceDataType refType = (ReferenceDataType) type;
+ DocumenttypesConfig.Documenttype.Referencetype.Builder refBuilder =
+ new DocumenttypesConfig.Documenttype.Referencetype.Builder();
+ refBuilder.id(refType.getId());
+ refBuilder.target_type_id(((ReferenceDataType) type).getTargetType().getId());
+ documentBuilder.referencetype(refBuilder);
+ }
+
+}