*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
+import static com.google.common.base.Verify.verifyNotNull;
import static java.util.Objects.requireNonNull;
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Empty;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
}
public abstract static class WithRawArgument<A> extends AbstractDeclaredStatement<A> {
+ public abstract static class WithSubstatements<A> extends WithRawArgument<A> {
+ private final @NonNull Object substatements;
+
+ protected WithSubstatements(final String rawArgument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(rawArgument);
+ this.substatements = maskList(substatements);
+ }
+
+ @Override
+ public final Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
+ return unmaskList(substatements);
+ }
+ }
+
private final String rawArgument;
protected WithRawArgument(final String rawArgument) {
}
@Override
- public final @NonNull QName argument() {
+ public final QName argument() {
return argument;
}
}
protected WithRawStringArgument(final String rawArgument) {
- super(rawArgument);
+ super(verifyNotNull(rawArgument));
}
@Override
public final String argument() {
- return rawArgument();
+ return verifyNotNull(rawArgument());
}
}
}
}
- private final A argument;
+ private final @NonNull A argument;
protected WithArgument(final String rawArgument, final A argument) {
super(rawArgument);
- this.argument = argument;
+ this.argument = requireNonNull(argument);
}
@Override
private final @NonNull A argument;
- protected ArgumentToString(final A argument) {
+ protected ArgumentToString(final @NonNull A argument) {
this.argument = requireNonNull(argument);
}
@Override
- public final @NonNull A argument() {
+ public final A argument() {
return argument;
}
}
}
- public abstract static class WithoutArgument extends AbstractDeclaredStatement<Void> {
+ public abstract static class WithoutArgument extends AbstractDeclaredStatement<Empty> {
public abstract static class WithSubstatements extends WithoutArgument {
private final @NonNull Object substatements;
}
@Override
- public final Void argument() {
- return null;
+ public final Empty argument() {
+ return Empty.getInstance();
}
@Override