@Override public Field getField(String fieldName) { Field field = header.getField(fieldName); if (field == null) { field = body.getField(fieldName); } if (field == null) { for(DocumentType parent : getDataType().getInheritedTypes()) { field = parent.getField(fieldName); if (field != null) { break; } } } return field; }
if (docType.getInheritedTypes().size() == 0) { docType.inherit(documentTypes.get(new DataTypeName("document")));
@Override @SuppressWarnings("deprecation") protected void register(DocumentTypeManager manager, List<DataType> seenTypes) { seenTypes.add(this); for (DocumentType type : getInheritedTypes()) { if (!seenTypes.contains(type)) { type.register(manager, seenTypes); } } // Get parent fields into fields specified in this type StructDataType header = headerType.clone(); StructDataType body = bodyType.clone(); header.clearFields(); body.clearFields(); for (Field field : fieldSet()) { (field.isHeader() ? header : body).addField(field); } headerType.assign(header); bodyType.assign(body); if (!seenTypes.contains(headerType)) { headerType.register(manager, seenTypes); } if (!seenTypes.contains(bodyType)) { bodyType.register(manager, seenTypes); } manager.registerSingleType(this); }
headerstruct(dt.contentStruct().getId()). bodystruct(dt.getBodyType().getId()); for (DocumentType inherited : dt.getInheritedTypes()) { doc.inherits(new Datatype.Documenttype.Inherits.Builder().name(inherited.getName()));