We are using Unqualified internally, require users to pass it down.
JIRA: NETCONF-1264
Change-Id: I273a384331c175a34621c634071e46bb6cd035ad
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
private final @Nullable String module;
private final Unqualified identifier;
+ @Deprecated(since = "7.0.4", forRemoval = true)
Step(final @Nullable String module, final String identifier) {
this.identifier = verifyNotNull(UnresolvedQName.tryLocalName(identifier),
"Unexpected invalid identifier %s", identifier);
this.module = module;
}
+ Step(final @Nullable String module, final Unqualified identifier) {
+ this.module = module;
+ this.identifier = requireNonNull(identifier);
+ }
+
public Unqualified identifier() {
return identifier;
}
}
void appendTo(final StringBuilder sb) {
- appendTo(sb, module, identifier.getLocalName());
+ appendTo(sb, module, identifier);
}
static final StringBuilder appendTo(final StringBuilder sb, final @Nullable String module,
- final String identifier) {
+ final Unqualified identifier) {
if (module != null) {
sb.append(module).append(':');
}
- return sb.append(identifier);
+ return sb.append(identifier.getLocalName());
}
}
* An {@code api-identifier} step in a {@link ApiPath}.
*/
public static final class ApiIdentifier extends Step {
+ @Deprecated(since = "7.0.4", forRemoval = true)
public ApiIdentifier(final @Nullable String module, final String identifier) {
super(module, identifier);
}
+ public ApiIdentifier(final @Nullable String module, final Unqualified identifier) {
+ super(module, identifier);
+ }
+
@Override
public int hashCode() {
return Objects.hash(module(), identifier());
public static final class ListInstance extends Step {
private final ImmutableList<String> keyValues;
- ListInstance(final @Nullable String module, final String identifier, final ImmutableList<String> keyValues) {
+ ListInstance(final @Nullable String module, final Unqualified identifier,
+ final ImmutableList<String> keyValues) {
super(module, identifier);
this.keyValues = requireNonNull(keyValues);
}
- public static ListInstance of(final @Nullable String module, final String identifier, final String value) {
+ public static ListInstance of(final @Nullable String module, final Unqualified identifier, final String value) {
return new ListInstance(module, identifier, ImmutableList.of(value));
}
- public static ListInstance of(final @Nullable String module, final String identifier, final String... values) {
+ public static ListInstance of(final @Nullable String module, final Unqualified identifier,
+ final String... values) {
return of(module, identifier, ImmutableList.copyOf(values));
}
- public static ListInstance of(final @Nullable String module, final String identifier,
+ public static ListInstance of(final @Nullable String module, final Unqualified identifier,
final List<String> values) {
return of(module, identifier, ImmutableList.copyOf(values));
}
- public static ListInstance of(final @Nullable String module, final String identifier,
+ public static ListInstance of(final @Nullable String module, final Unqualified identifier,
final ImmutableList<String> values) {
if (values.isEmpty()) {
throw new IllegalArgumentException(
import org.opendaylight.restconf.api.ApiPath.ApiIdentifier;
import org.opendaylight.restconf.api.ApiPath.ListInstance;
import org.opendaylight.restconf.api.ApiPath.Step;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.common.YangNames;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
if (ch == ':') {
return parseStep(endSub(str, idx), str, nextOffset, limit);
} else if (ch == '=') {
- return parseStep(null, endSub(str, idx), str, nextOffset, limit);
+ return parseStep(null, endUnqualified(str, idx), str, nextOffset, limit);
}
idx = continueIdentifer(idx, ch);
}
- steps.add(new ApiIdentifier(null, endSub(str, idx)));
+ steps.add(new ApiIdentifier(null, endUnqualified(str, idx)));
return idx;
}
while (idx < limit) {
final char ch = peekBasicLatin(str, idx, limit);
if (ch == '=') {
- return parseStep(module, endSub(str, idx), str, nextOffset, limit);
+ return parseStep(module, endUnqualified(str, idx), str, nextOffset, limit);
}
idx = continueIdentifer(idx, ch);
}
- steps.add(new ApiIdentifier(module, endSub(str, idx)));
+ steps.add(new ApiIdentifier(module, endUnqualified(str, idx)));
return idx;
}
// Starting at first key-value
- private int parseStep(final @Nullable String module, final @NonNull String identifier,
+ private int parseStep(final @Nullable String module, final @NonNull Unqualified identifier,
final String str, final int offset, final int limit) throws ParseException {
final var values = ImmutableList.<String>builder();
return sb;
}
+ private @NonNull Unqualified endUnqualified(final String str, final int idx) {
+ return Unqualified.of(endSub(str, idx));
+ }
+
private static byte parsePercent(final String str, final int offset, final int limit) throws ParseException {
if (limit - offset < 3) {
throw new ParseException("Incomplete escape '" + str.substring(offset, limit) + "'", offset);
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.restconf.api.ApiPath.ApiIdentifier;
import org.opendaylight.restconf.api.query.FieldsParam.NodeSelector;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.common.YangNames;
/**
int idx = offset + 1;
while (true) {
if (idx == str.length()) {
- path.add(new ApiIdentifier(null, str.substring(offset)));
+ path.add(new ApiIdentifier(null, Unqualified.of(str.substring(offset))));
return idx;
}
// We have complete first identifier, now switch to parsing the second identifier
return parsePathStepSecond(first, str, idx + 1);
}
- path.add(new ApiIdentifier(null, first));
+ path.add(new ApiIdentifier(null, Unqualified.of(first)));
return switch (ch) {
case ';', ')' -> /* End of this selector, return */ idx;
int idx = offset + 1;
while (true) {
if (idx == str.length()) {
- path.add(new ApiIdentifier(module, str.substring(offset)));
+ path.add(new ApiIdentifier(module, Unqualified.of(str.substring(offset))));
return idx;
}
idx++;
continue;
}
- path.add(new ApiIdentifier(module, str.substring(offset, idx)));
+ path.add(new ApiIdentifier(module, Unqualified.of(str.substring(offset, idx))));
return switch (ch) {
case ';', ')' -> /* End of this selector, return */ idx;
import org.opendaylight.restconf.api.ApiPath.ApiIdentifier;
import org.opendaylight.restconf.api.query.FieldsParam;
import org.opendaylight.restconf.api.query.FieldsParam.NodeSelector;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
class FieldsParamTest {
// https://www.rfc-editor.org/rfc/rfc8040#section-4.8.3:
assertEquals(2, selectors.size());
var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "genre")), selector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("genre"))), selector.path());
assertEquals(List.of(), selector.subSelectors());
selector = selectors.get(1);
- assertEquals(List.of(new ApiIdentifier(null, "year")), selector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("year"))), selector.path());
assertEquals(List.of(), selector.subSelectors());
}
assertEquals(1, selectors.size());
final var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "admin"), new ApiIdentifier(null, "label")), selector.path());
+ assertEquals(
+ List.of(new ApiIdentifier(null, Unqualified.of("admin")), new ApiIdentifier(null, Unqualified.of("label"))),
+ selector.path());
assertEquals(List.of(), selector.subSelectors());
}
assertEquals(1, selectors.size());
final var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "admin")), selector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("admin"))), selector.path());
final var subSelectors = selector.subSelectors();
assertEquals(2, subSelectors.size());
var subSelector = subSelectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "label")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("label"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
subSelector = subSelectors.get(1);
- assertEquals(List.of(new ApiIdentifier(null, "catalogue-number")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("catalogue-number"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
}
final var selector = selectors.get(0);
assertEquals(
- List.of(new ApiIdentifier("ietf-yang-library", "modules-state"), new ApiIdentifier(null, "module")),
+ List.of(
+ new ApiIdentifier("ietf-yang-library", Unqualified.of("modules-state")),
+ new ApiIdentifier(null, Unqualified.of("module"))),
selector.path());
final var subSelectors = selector.subSelectors();
assertEquals(2, subSelectors.size());
var subSelector = subSelectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "name")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("name"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
subSelector = subSelectors.get(1);
- assertEquals(List.of(new ApiIdentifier(null, "revision")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("revision"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
}
assertEquals(1, selectors.size());
final var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier("ietf-yang-library", "modules-state")), selector.path());
+ assertEquals(List.of(new ApiIdentifier("ietf-yang-library", Unqualified.of("modules-state"))), selector.path());
assertEquals(List.of(), selector.subSelectors());
}
assertEquals(1, selectors.size());
final var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "a")), selector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("a"))), selector.path());
final var subSelectors = selector.subSelectors();
assertEquals(1, subSelectors.size());
final var subSelector = subSelectors.get(0);
- assertEquals(List.of(new ApiIdentifier("b", "c")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier("b", Unqualified.of("c"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
}
assertEquals(1, selectors.size());
final var selector = selectors.get(0);
- assertEquals(List.of(new ApiIdentifier("a", "b")), selector.path());
+ assertEquals(List.of(new ApiIdentifier("a", Unqualified.of("b"))), selector.path());
final var subSelectors = selector.subSelectors();
assertEquals(1, subSelectors.size());
final var subSelector = subSelectors.get(0);
- assertEquals(List.of(new ApiIdentifier(null, "c")), subSelector.path());
+ assertEquals(List.of(new ApiIdentifier(null, Unqualified.of("c"))), subSelector.path());
assertEquals(List.of(), subSelector.subSelectors());
}