public void serialize()

in nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java [46:167]


    public void serialize(final Query query, final JsonGenerator gen, final SerializerProvider provider)
            throws IOException {

        if (query instanceof TermQuery) {
            final TermQuery termQuery = (TermQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "term");
            gen.writeStringField("field", termQuery.getTerm().field());
            gen.writeStringField("term", termQuery.getTerm().text());
            gen.writeEndObject();
            return;
        }

        if (query instanceof BooleanQuery) {
            final BooleanQuery booleanQuery = (BooleanQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "boolean");
            gen.writeFieldName("clauses");
            gen.writeStartArray();
            for (final BooleanClause clause : booleanQuery.clauses()) {
                gen.writeStartObject();
                gen.writeFieldName("query");
                serialize(clause.getQuery(), gen, provider);
                gen.writeStringField("occur", clause.getOccur().name().toLowerCase());
                gen.writeEndObject();
            }
            gen.writeEndArray();
            gen.writeEndObject();
            return;
        }

        if (query instanceof WildcardQuery) {
            final WildcardQuery wildcardQuery = (WildcardQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "wildcard");
            gen.writeStringField("field", wildcardQuery.getField());
            gen.writeStringField("text", wildcardQuery.getTerm().text());
            gen.writeEndObject();
            return;
        }

        if (query instanceof PhraseQuery) {
            final PhraseQuery phraseQuery = (PhraseQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "phrase");
            gen.writeStringField("field", phraseQuery.getField());
            gen.writeFieldName("terms");
            gen.writeStartArray();
            for (final Term term : phraseQuery.getTerms()) {
                gen.writeString(term.text());
            }
            gen.writeEndArray();
            gen.writeNumberField("slop", phraseQuery.getSlop());
            gen.writeEndObject();
            return;
        }

        if (query instanceof PrefixQuery) {
            final PrefixQuery prefixQuery = (PrefixQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "prefix");
            gen.writeStringField("field", prefixQuery.getField());
            gen.writeStringField("text", prefixQuery.getPrefix().text());
            gen.writeEndObject();
            return;
        }

        if (query instanceof FuzzyQuery) {
            final FuzzyQuery fuzzyQuery = (FuzzyQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "fuzzy");
            gen.writeStringField("field", fuzzyQuery.getField());
            gen.writeStringField("text", fuzzyQuery.getTerm().text());
            gen.writeNumberField("max_edits", fuzzyQuery.getMaxEdits());
            gen.writeNumberField("prefix_length", fuzzyQuery.getPrefixLength());
            gen.writeEndObject();
            return;
        }

        if (query instanceof RegexpQuery) {
            final RegexpQuery regexpQuery = (RegexpQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "regexp");
            gen.writeStringField("field", regexpQuery.getField());
            gen.writeStringField("text", regexpQuery.getRegexp().text());
            gen.writeEndObject();
            return;
        }

        if (query instanceof TermRangeQuery) {
            final TermRangeQuery termRangeQuery = (TermRangeQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "term_range");
            gen.writeStringField("field", termRangeQuery.getField());
            gen.writeStringField("lower", termRangeQuery.getLowerTerm().utf8ToString());
            gen.writeBooleanField("includes_lower", termRangeQuery.includesLower());
            gen.writeStringField("upper", termRangeQuery.getUpperTerm().utf8ToString());
            gen.writeBooleanField("includes_upper", termRangeQuery.includesUpper());
            gen.writeEndObject();
            return;
        }

        if (query instanceof PointRangeQuery) {
            final PointRangeQuery pointRangeQuery = (PointRangeQuery) query;
            gen.writeStartObject();
            gen.writeStringField("@type", "point_range");
            gen.writeStringField("field", pointRangeQuery.getField());
            gen.writeBinaryField("lower", pointRangeQuery.getLowerPoint());
            gen.writeBinaryField("upper", pointRangeQuery.getUpperPoint());
            gen.writeNumberField("num_dims", pointRangeQuery.getNumDims());
            gen.writeEndObject();
        }

        if (query instanceof MatchAllDocsQuery) {
            gen.writeStartObject();
            gen.writeStringField("@type", "match_all");
            gen.writeEndObject();
            return;
        }

        throw new JsonGenerationException(query.getClass() + " not supported", gen);
    }