*/
package org.opendaylight.yangtools.yang.model.api.stmt;
+import com.google.common.base.VerifyException;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
*/
public interface BelongsToEffectiveStatement extends EffectiveStatement<Unqualified, BelongsToStatement> {
@Override
- default StatementDefinition statementDefinition() {
+ default StatementDefinition statementDefinition() {
return YangStmtMapping.BELONGS_TO;
}
+
+ /**
+ * Return this statement's {@code prefix} substatement.
+ *
+ * @implSpec
+ * Default implementation uses {@link #findFirstEffectiveSubstatement(Class)} and throws a
+ * {@link VerifyException} if a matching substatement is not found.
+ * @return A {@link PrefixEffectiveStatement}
+ */
+ default @NonNull PrefixEffectiveStatement prefix() {
+ return DefaultMethodHelpers.verifyPrefixSubstatement(this);
+ }
}
return verifySubstatement(stmt, OutputEffectiveStatement.class);
}
+ static @NonNull PrefixEffectiveStatement verifyPrefixSubstatement(final EffectiveStatement<?, ?> stmt) {
+ return verifySubstatement(stmt, PrefixEffectiveStatement.class);
+ }
+
private static <T extends EffectiveStatement<?, ?>> @NonNull T verifySubstatement(
final EffectiveStatement<?, ?> stmt, final Class<T> type) {
return stmt.findFirstEffectiveSubstatement(type).orElseThrow(
*/
package org.opendaylight.yangtools.yang.model.api.stmt;
+import com.google.common.base.VerifyException;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
default StatementDefinition statementDefinition() {
return YangStmtMapping.IMPORT;
}
+
+ /**
+ * Return this statement's {@code prefix} substatement.
+ *
+ * @implSpec
+ * Default implementation uses {@link #findFirstEffectiveSubstatement(Class)} and throws a
+ * {@link VerifyException} if a matching substatement is not found.
+ * @return A {@link PrefixEffectiveStatement}
+ */
+ default @NonNull PrefixEffectiveStatement prefix() {
+ return DefaultMethodHelpers.verifyPrefixSubstatement(this);
+ }
}
*/
package org.opendaylight.yangtools.yang.model.api.stmt;
+import com.google.common.base.VerifyException;
import java.util.Collection;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
return YangStmtMapping.MODULE;
}
+ /**
+ * Return this statement's {@code prefix} substatement.
+ *
+ * @implSpec
+ * Default implementation uses {@link #findFirstEffectiveSubstatement(Class)} and throws a
+ * {@link VerifyException} if a matching substatement is not found.
+ * @return A {@link PrefixEffectiveStatement}
+ */
+ default @NonNull PrefixEffectiveStatement prefix() {
+ return DefaultMethodHelpers.verifyPrefixSubstatement(this);
+ }
+
/**
* {@inheritDoc}
*
protected final void appendPrefixes(final Current<?, ?> stmt,
final Builder<String, ModuleEffectiveStatement> builder) {
streamEffectiveSubstatements(ImportEffectiveStatement.class)
- .map(imp -> imp.findFirstEffectiveSubstatementArgument(PrefixEffectiveStatement.class).get())
+ .map(imp -> imp.prefix().argument())
.forEach(pfx -> {
final var importedCtx =
verifyNotNull(stmt.getFromNamespace(ParserNamespaces.IMPORT_PREFIX_TO_MODULECTX, pfx),
import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.PrefixEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveModule;
import org.opendaylight.yangtools.yang.parser.spi.ParserNamespaces;
this.qnameModule = requireNonNull(qnameModule);
this.submodules = ImmutableList.copyOf(submodules);
- final String localPrefix = findFirstEffectiveSubstatementArgument(PrefixEffectiveStatement.class).get();
+ final String localPrefix = prefix().argument();
final Builder<String, ModuleEffectiveStatement> prefixToModuleBuilder = ImmutableMap.builder();
prefixToModuleBuilder.put(localPrefix, this);
appendPrefixes(stmt, prefixToModuleBuilder);