2 * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.binding.impl;
10 import org.opendaylight.yangtools.binding.DataObject;
11 import org.opendaylight.yangtools.binding.DataObjectReference;
12 import org.opendaylight.yangtools.binding.DataObjectStep;
13 import org.opendaylight.yangtools.binding.Key;
14 import org.opendaylight.yangtools.binding.KeyAware;
15 import org.opendaylight.yangtools.binding.KeyStep;
17 final class DataObjectReferenceBuilder<T extends DataObject> extends AbstractDataObjectReferenceBuilder<T> {
18 DataObjectReferenceBuilder(final AbstractDataObjectReferenceBuilder<?> prev, final DataObjectStep<?> item) {
22 DataObjectReferenceBuilder(final DataObjectReference<T> base) {
26 DataObjectReferenceBuilder(final DataObjectStep<?> item, final boolean wildcard) {
27 super(item, wildcard);
31 public DataObjectReference<T> build() {
32 final var steps = buildSteps();
33 return wildcard() ? new DataObjectReferenceImpl<>(steps) : new DataObjectIdentifierImpl<>(null, steps);
37 @SuppressWarnings("unchecked")
38 protected <X extends DataObject> DataObjectReferenceBuilder<X> append(final DataObjectStep<X> step) {
40 return (DataObjectReferenceBuilder<X>) this;
44 protected <X extends DataObject & KeyAware<Y>, Y extends Key<X>> DataObjectReferenceBuilderWithKey<X, Y> append(
45 final KeyStep<Y, X> step) {
46 return new DataObjectReferenceBuilderWithKey<>(this, step);