Search in sources :

Example 21 with OpenSearchParseException

use of org.opensearch.OpenSearchParseException in project OpenSearch by opensearch-project.

the class TermVectorsRequest method parseRequest.

/**
 * populates a request object (pre-populated with defaults) based on a parser.
 */
public static void parseRequest(TermVectorsRequest termVectorsRequest, XContentParser parser) throws IOException {
    XContentParser.Token token;
    String currentFieldName = null;
    List<String> fields = new ArrayList<>();
    while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
        if (token == XContentParser.Token.FIELD_NAME) {
            currentFieldName = parser.currentName();
        } else if (currentFieldName != null) {
            if (FIELDS.match(currentFieldName, parser.getDeprecationHandler())) {
                if (token == XContentParser.Token.START_ARRAY) {
                    while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
                        fields.add(parser.text());
                    }
                } else {
                    throw new OpenSearchParseException("failed to parse term vectors request. field [fields] must be an array");
                }
            } else if (OFFSETS.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.offsets(parser.booleanValue());
            } else if (POSITIONS.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.positions(parser.booleanValue());
            } else if (PAYLOADS.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.payloads(parser.booleanValue());
            } else if (currentFieldName.equals("term_statistics") || currentFieldName.equals("termStatistics")) {
                termVectorsRequest.termStatistics(parser.booleanValue());
            } else if (currentFieldName.equals("field_statistics") || currentFieldName.equals("fieldStatistics")) {
                termVectorsRequest.fieldStatistics(parser.booleanValue());
            } else if (DFS.match(currentFieldName, parser.getDeprecationHandler())) {
                throw new IllegalArgumentException("distributed frequencies is not supported anymore for term vectors");
            } else if (currentFieldName.equals("per_field_analyzer") || currentFieldName.equals("perFieldAnalyzer")) {
                termVectorsRequest.perFieldAnalyzer(readPerFieldAnalyzer(parser.map()));
            } else if (FILTER.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.filterSettings(readFilterSettings(parser));
            } else if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) {
                // the following is important for multi request parsing.
                termVectorsRequest.index = parser.text();
            } else if (ID.match(currentFieldName, parser.getDeprecationHandler())) {
                if (termVectorsRequest.doc != null) {
                    throw new OpenSearchParseException("failed to parse term vectors request. " + "either [id] or [doc] can be specified, but not both!");
                }
                termVectorsRequest.id = parser.text();
            } else if (DOC.match(currentFieldName, parser.getDeprecationHandler())) {
                if (termVectorsRequest.id != null) {
                    throw new OpenSearchParseException("failed to parse term vectors request. " + "either [id] or [doc] can be specified, but not both!");
                }
                termVectorsRequest.doc(jsonBuilder().copyCurrentStructure(parser));
            } else if (ROUTING.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.routing = parser.text();
            } else if (VERSION.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.version = parser.longValue();
            } else if (VERSION_TYPE.match(currentFieldName, parser.getDeprecationHandler())) {
                termVectorsRequest.versionType = VersionType.fromString(parser.text());
            } else {
                throw new OpenSearchParseException("failed to parse term vectors request. unknown field [{}]", currentFieldName);
            }
        }
    }
    if (fields.size() > 0) {
        String[] fieldsAsArray = new String[fields.size()];
        termVectorsRequest.selectedFields(fields.toArray(fieldsAsArray));
    }
}
Also used : OpenSearchParseException(org.opensearch.OpenSearchParseException) ArrayList(java.util.ArrayList) XContentParser(org.opensearch.common.xcontent.XContentParser)

Example 22 with OpenSearchParseException

use of org.opensearch.OpenSearchParseException in project OpenSearch by opensearch-project.

the class CancelAllocationCommand method fromXContent.

public static CancelAllocationCommand fromXContent(XContentParser parser) throws IOException {
    String index = null;
    int shardId = -1;
    String nodeId = null;
    boolean allowPrimary = false;
    String currentFieldName = null;
    XContentParser.Token token;
    while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
        if (token == XContentParser.Token.FIELD_NAME) {
            currentFieldName = parser.currentName();
        } else if (token.isValue()) {
            if ("index".equals(currentFieldName)) {
                index = parser.text();
            } else if ("shard".equals(currentFieldName)) {
                shardId = parser.intValue();
            } else if ("node".equals(currentFieldName)) {
                nodeId = parser.text();
            } else if ("allow_primary".equals(currentFieldName) || "allowPrimary".equals(currentFieldName)) {
                allowPrimary = parser.booleanValue();
            } else {
                throw new OpenSearchParseException("[{}] command does not support field [{}]", NAME, currentFieldName);
            }
        } else {
            throw new OpenSearchParseException("[{}] command does not support complex json tokens [{}]", NAME, token);
        }
    }
    if (index == null) {
        throw new OpenSearchParseException("[{}] command missing the index parameter", NAME);
    }
    if (shardId == -1) {
        throw new OpenSearchParseException("[{}] command missing the shard parameter", NAME);
    }
    if (nodeId == null) {
        throw new OpenSearchParseException("[{}] command missing the node parameter", NAME);
    }
    return new CancelAllocationCommand(index, shardId, nodeId, allowPrimary);
}
Also used : OpenSearchParseException(org.opensearch.OpenSearchParseException) XContentParser(org.opensearch.common.xcontent.XContentParser)

Example 23 with OpenSearchParseException

use of org.opensearch.OpenSearchParseException in project OpenSearch by opensearch-project.

the class MoveAllocationCommand method fromXContent.

public static MoveAllocationCommand fromXContent(XContentParser parser) throws IOException {
    String index = null;
    int shardId = -1;
    String fromNode = null;
    String toNode = null;
    String currentFieldName = null;
    XContentParser.Token token;
    while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
        if (token == XContentParser.Token.FIELD_NAME) {
            currentFieldName = parser.currentName();
        } else if (token.isValue()) {
            if ("index".equals(currentFieldName)) {
                index = parser.text();
            } else if ("shard".equals(currentFieldName)) {
                shardId = parser.intValue();
            } else if ("from_node".equals(currentFieldName) || "fromNode".equals(currentFieldName)) {
                fromNode = parser.text();
            } else if ("to_node".equals(currentFieldName) || "toNode".equals(currentFieldName)) {
                toNode = parser.text();
            } else {
                throw new OpenSearchParseException("[{}] command does not support field [{}]", NAME, currentFieldName);
            }
        } else {
            throw new OpenSearchParseException("[{}] command does not support complex json tokens [{}]", NAME, token);
        }
    }
    if (index == null) {
        throw new OpenSearchParseException("[{}] command missing the index parameter", NAME);
    }
    if (shardId == -1) {
        throw new OpenSearchParseException("[{}] command missing the shard parameter", NAME);
    }
    if (fromNode == null) {
        throw new OpenSearchParseException("[{}] command missing the from_node parameter", NAME);
    }
    if (toNode == null) {
        throw new OpenSearchParseException("[{}] command missing the to_node parameter", NAME);
    }
    return new MoveAllocationCommand(index, shardId, fromNode, toNode);
}
Also used : OpenSearchParseException(org.opensearch.OpenSearchParseException) XContentParser(org.opensearch.common.xcontent.XContentParser)

Example 24 with OpenSearchParseException

use of org.opensearch.OpenSearchParseException in project OpenSearch by opensearch-project.

the class JodaDateMathParser method parseDateTime.

private long parseDateTime(String value, DateTimeZone timeZone, boolean roundUpIfNoTime) {
    DateTimeFormatter parser = dateTimeFormatter.parser;
    if (timeZone != null) {
        parser = parser.withZone(timeZone);
    }
    try {
        MutableDateTime date;
        // fields that are filled with times without dates
        if (roundUpIfNoTime) {
            date = new MutableDateTime(1970, 1, 1, 23, 59, 59, 999, DateTimeZone.UTC);
        } else {
            date = new MutableDateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeZone.UTC);
        }
        final int end = parser.parseInto(date, value, 0);
        if (end < 0) {
            int position = ~end;
            throw new IllegalArgumentException("Parse failure at index [" + position + "] of [" + value + "]");
        } else if (end != value.length()) {
            throw new IllegalArgumentException("Unrecognized chars at the end of [" + value + "]: [" + value.substring(end) + "]");
        }
        return date.getMillis();
    } catch (IllegalArgumentException e) {
        throw new OpenSearchParseException("failed to parse date field [{}] with format [{}]", e, value, dateTimeFormatter.pattern());
    }
}
Also used : OpenSearchParseException(org.opensearch.OpenSearchParseException) MutableDateTime(org.joda.time.MutableDateTime) DateTimeFormatter(org.joda.time.format.DateTimeFormatter)

Example 25 with OpenSearchParseException

use of org.opensearch.OpenSearchParseException in project OpenSearch by opensearch-project.

the class IngestProcessorNotInstalledOnAllNodesIT method testFailPipelineCreation.

public void testFailPipelineCreation() throws Exception {
    installPlugin = true;
    String node1 = internalCluster().startNode();
    installPlugin = false;
    String node2 = internalCluster().startNode();
    ensureStableCluster(2, node1);
    ensureStableCluster(2, node2);
    try {
        client().admin().cluster().preparePutPipeline("_id", pipelineSource, XContentType.JSON).get();
        fail("exception expected");
    } catch (OpenSearchParseException e) {
        assertThat(e.getMessage(), containsString("Processor type [test] is not installed on node"));
    }
}
Also used : OpenSearchParseException(org.opensearch.OpenSearchParseException) Matchers.containsString(org.hamcrest.Matchers.containsString)

Aggregations

OpenSearchParseException (org.opensearch.OpenSearchParseException)105 XContentParser (org.opensearch.common.xcontent.XContentParser)34 HashMap (java.util.HashMap)27 XContentBuilder (org.opensearch.common.xcontent.XContentBuilder)15 ArrayList (java.util.ArrayList)14 Matchers.containsString (org.hamcrest.Matchers.containsString)12 Map (java.util.Map)11 IOException (java.io.IOException)10 List (java.util.List)7 ParsingException (org.opensearch.common.ParsingException)5 GeoPoint (org.opensearch.common.geo.GeoPoint)5 Token (org.opensearch.common.xcontent.XContentParser.Token)5 MappedFieldType (org.opensearch.index.mapper.MappedFieldType)5 GeometryCollectionBuilder (org.opensearch.common.geo.builders.GeometryCollectionBuilder)4 UncheckedIOException (java.io.UncheckedIOException)3 DateTimeParseException (java.time.format.DateTimeParseException)3 HashSet (java.util.HashSet)3 CoordinatesBuilder (org.opensearch.common.geo.builders.CoordinatesBuilder)3 MultiPointBuilder (org.opensearch.common.geo.builders.MultiPointBuilder)3 PointBuilder (org.opensearch.common.geo.builders.PointBuilder)3