/*
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
import java.util.Collection;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BodyGroup;
import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LinkageGroup;
import org.opendaylight.yangtools.yang.model.api.stmt.MetaGroup;
import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OrganizationStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionGroup;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
public abstract class AbstractRootStatement<T extends DeclaredStatement<String>> extends AbstractDeclaredStatement<String>
implements LinkageGroup, MetaGroup, RevisionGroup, BodyGroup {
protected AbstractRootStatement(StmtContext<String, T,?> context) {
super(context);
}
@Nonnull
@Override
public final Collection<? extends ImportStatement> getImports() {
return allDeclared(ImportStatement.class);
}
@Nonnull
@Override
public final Collection<? extends IncludeStatement> getIncludes() {
return allDeclared(IncludeStatement.class);
}
@Override
public DescriptionStatement getDescription() {
return firstDeclared(DescriptionStatement.class);
}
@Override
public ReferenceStatement getReference() {
return firstDeclared(ReferenceStatement.class);
}
@Override
public final OrganizationStatement getOrganization() {
return firstDeclared(OrganizationStatement.class);
}
@Override
public final ContactStatement getContact() {
return firstDeclared(ContactStatement.class);
}
@Nonnull
@Override
public final Collection<? extends RevisionStatement> getRevisions() {
return allDeclared(RevisionStatement.class);
}
@Nonnull
@Override
public final Collection<? extends ExtensionStatement> getExtensions() {
return allDeclared(ExtensionStatement.class);
}
@Nonnull
@Override
public final Collection<? extends FeatureStatement> getFeatures() {
return allDeclared(FeatureStatement.class);
}
@Nonnull
@Override
public final Collection<? extends IdentityStatement> getIdentities() {
return allDeclared(IdentityStatement.class);
}
@Nonnull
@Override
public Collection<? extends TypedefStatement> getTypedefs() {
return allDeclared(TypedefStatement.class);
}
@Nonnull
@Override
public Collection<? extends GroupingStatement> getGroupings() {
return allDeclared(GroupingStatement.class);
}
@Nonnull
@Override
public Collection<? extends DataDefinitionStatement> getDataDefinitions() {
return allDeclared(DataDefinitionStatement.class);
}
@Nonnull
@Override
public final Collection<? extends AugmentStatement> getAugments() {
return allDeclared(AugmentStatement.class);
}
@Nonnull
@Override
public final Collection<? extends RpcStatement> getRpcs() {
return allDeclared(RpcStatement.class);
}
@Nonnull
@Override
public final Collection<? extends NotificationStatement> getNotifications() {
return allDeclared(NotificationStatement.class);
}
@Nonnull
@Override
public final Collection<? extends DeviationStatement> getDeviations() {
return allDeclared(DeviationStatement.class);
}
}