public FieldExpression(String expression, Config config) { Preconditions.checkNotNull(expression); int from = 0; int start; while (from < expression.length() && (start = expression.indexOf(START_TOKEN, from)) >= 0) { if (from != start) { fields.add(expression.substring(from, start)); } int end = expression.indexOf(END_TOKEN, start + START_TOKEN.length()); if (end < 0) { throw new IllegalArgumentException("Missing closing token: " + END_TOKEN); } String ref = expression.substring(start + START_TOKEN.length(), end); fields.add(new Field(ref)); from = end + 1; } assert from <= expression.length(); if (from < expression.length() || fields.size() == 0) { fields.add(expression.substring(from, expression.length())); } assert fields.size() > 0; }
public FieldExpression(String expression, Config config) { Preconditions.checkNotNull(expression); int from = 0; int start; while (from < expression.length() && (start = expression.indexOf(START_TOKEN, from)) >= 0) { if (from != start) { fields.add(expression.substring(from, start)); } int end = expression.indexOf(END_TOKEN, start + START_TOKEN.length()); if (end < 0) { throw new IllegalArgumentException("Missing closing token: " + END_TOKEN); } String ref = expression.substring(start + START_TOKEN.length(), end); fields.add(new Field(ref)); from = end + 1; } assert from <= expression.length(); if (from < expression.length() || fields.size() == 0) { fields.add(expression.substring(from, expression.length())); } assert fields.size() > 0; }