public CDR31Document build() {

            if (this.url == null)
                throw new IllegalArgumentException("Field 'url' is mandatory");
            if (this.rawContent == null)
                throw new IllegalArgumentException("Field 'raw_content' is mandatory");
            if (this.crawler == null)
                throw new IllegalArgumentException("Field 'crawler' is mandatory");
//            if (this.team == null)
//                throw new IllegalArgumentException("Field 'team' is mandatory");
            if (this.timestampIndex == null)
                throw new IllegalArgumentException("Field 'timestampIndex' is mandatory");

            if (this.contentType == null) {
                MediaType mediaType = extractor.detect(this.rawContent, this.url, this.contentType);
                this.contentType = mediaType.getBaseType().toString();
            }

            if (this.responseHeaders == null) {
                this.responseHeaders = new HashMap<>();
            }

            if (this.objects == null) {
                this.objects = new ArrayList<>();
            }

            if (this._id == null) {
                // auto-generate _id field
                this._id = computeId();
            }

            return new CDR31Document(this);
        }
Represents a web page according the CDRv3.1 schema.
ache-tools/src/main/java/achecrawler/memex/cdr/CDR31Document.java