как я могу вызвать метод выражения синтаксического анализа в моем Jax-RS - PullRequest
0 голосов
/ 01 мая 2019

как мне вызвать метод выражения разбора в моем методе JAX-RS @post, который принимает строку от клиента. я понятия не имею, как это сделать, поэтому любая помощь или примеры, которые могут сработать, будут высоко оценены код, чтобы помочь с большим количеством операций

import java.util.regex.Matcher; import java.util.regex.Pattern;

открытый класс ExpressionParser {

public static final Pattern SPLIT_REGEX = Pattern.compile("(?:([-]?\\d+)([-+/*=])?)");

public long parseExpression(String expression) {
    long left = 0;
    char operator = '+';
    Matcher m = SPLIT_REGEX.matcher(expression);
    while (m.find()) {
        String operand = "";
        try {
            operand = m.group(1);
        } catch (IndexOutOfBoundsException e) {
            operand = "0";
        }
        left = calculate(left, operator, Long.valueOf(operand));

        String oper = m.group(2);
        if (oper != null)
            operator = oper.charAt(0);

    }
    return left;
}

private long calculate(long left, char operator, long right) {
    switch (operator) {
    case '+':
        return left + right;
    case '-':
        return left - right;
    case '*':
        return left * right;
    case '/':
        return left / right;
    case '=':
        return left;
    default:
        return 0L;
    }
}

}

мой код Jax-RS

@ Путь ( "вычислить") общедоступный калькулятор класса {

private final Long value;

public Calculator() {
    value = 0L;
}

public Calculator(Long initialValue) {
    this.value = initialValue;
}

@GET
public Long getValue() {
    return value;
}

@Path("add/{value1}/{value2}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Long add(@PathParam("value1") Long value, @PathParam("value2") Long value2) {
    return value + value2;
}
@Path("subtract/{value1}/{value2}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Long subtract(@PathParam("value1") Long value, @PathParam("value2") Long value2) {
    return value - value2;
}
@Path("multipli/{value1}/{value2}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Long multipli(@PathParam("value1") Long value, @PathParam("value2") Long value2) {
    return value * value2;
}
@Path("divide/{value1}/{value2}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Long divide(@PathParam("value1") Long value, @PathParam("value2") Long value2) {
    return value / value2;
}

}

...