import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
+
@Beta
public enum Rfc6020Mapping implements StatementDefinition {
- Anyxml(AnyxmlStatement.class, "anyxml", "name"),
- Argument(ArgumentStatement.class, "argument", "name"),
- Augment(AugmentStatement.class, "augment", "target-node"),
- Base(BaseStatement.class, "base", "name"),
- BelongsTo(BelongsToStatement.class, "belongs-to", "module"),
- Bit(BitStatement.class, "bit", "name"),
- Case(CaseStatement.class, "case", "name"),
- Choice(ChoiceStatement.class, "choice", "name"),
- Config(ConfigStatement.class, "config", "value"),
- Contact(ContactStatement.class, "contact", "text", true),
- Container(ContainerStatement.class, "container", "name"),
- Default(DefaultStatement.class, "default", "value"),
- Description(DescriptionStatement.class, "description", "text", true),
- Deviate(DeviateStatement.class, "deviate", "value"),
- Deviation(DeviationStatement.class, "deviation", "target-node"),
- Enum(EnumStatement.class, "enum", "name"),
- ErrorAppTag(ErrorAppTagStatement.class, "error-app-tag", "value"),
- ErrorMessage(ErrorMessageStatement.class, "error-message", "value", true),
- Extension(ExtensionStatement.class, "extension", "name"),
- Feature(FeatureStatement.class, "feature", "name"),
- FractionDigits(FractionDigitsStatement.class, "fraction-digits", "value"),
- Grouping(GroupingStatement.class, "grouping", "name"),
- Identity(IdentityStatement.class, "identity", "name"),
- IfFeature(IfFeatureStatement.class, "if-feature", "name"),
- Import(ImportStatement.class, "import", "module"),
- Include(IncludeStatement.class, "include", "module"),
- Input(InputStatement.class, "input"),
- Key(KeyStatement.class, "key", "value"),
- Leaf(LeafStatement.class, "leaf", "name"),
- LeafList(LeafListStatement.class, "leaf-list", "name"),
- Length(LengthStatement.class, "length", "value"),
- List(ListStatement.class, "list", "name"),
- Mandatory(MandatoryStatement.class, "mandatory", "value"),
- MaxElements(MaxElementsStatement.class, "max-elements", "value"),
- MinElements(MinElementsStatement.class, "min-elements", "value"),
- Module(ModuleStatement.class, "module", "name"),
- Must(MustStatement.class, "must", "condition"),
- Namespace(NamespaceStatement.class, "namespace", "uri"),
- Notification(NotificationStatement.class, "notification", "name"),
- OrderedBy(OrderedByStatement.class, "ordered-by", "value"),
- Organization(OrganizationStatement.class, "organization", "text", true),
- Output(OutputStatement.class, "output"),
- Path(PathStatement.class, "path", "value"),
- Pattern(PatternStatement.class, "pattern", "value"),
- Position(PositionStatement.class, "position", "value"),
- Prefix(PrefixStatement.class, "prefix", "value"),
- Presence(PresenceStatement.class, "presence", "value"),
- Range(RangeStatement.class, "range", "value"),
- Reference(ReferenceStatement.class, "reference", "text", true),
- Refine(RefineStatement.class, "refine", "target-node"),
- RequireInstance(RequireInstanceStatement.class, "require-instance", "value"),
- Revision(RevisionStatement.class, "revision", "date"),
- RevisionDate(RevisionDateStatement.class, "revision-date", "date"),
- Rpc(RpcStatement.class, "rpc", "name"),
- Status(StatusStatement.class, "status", "value"),
- Submodule(SubmoduleStatement.class, "submodule", "name"),
- Type(TypeStatement.class, "type", "name"),
- Typedef(TypedefStatement.class, "typedef", "name"),
- Unique(UniqueStatement.class, "unique", "tag"),
- Units(UnitsStatement.class, "units", "name"),
- Uses(UsesStatement.class, "uses", "name"),
- Value(ValueStatement.class, "value", "value"),
- When(WhenStatement.class, "when", "condition"),
- YangVersion(YangVersionStatement.class, "yang-version", "value"),
- YinElement(YinElementStatement.class, "yin-element", "value");
+ ANYXML(AnyxmlStatement.class, "anyxml", "name"),
+ ARGUMENT(ArgumentStatement.class, "argument", "name"),
+ AUGMENT(AugmentStatement.class, "augment", "target-node"),
+ BASE(BaseStatement.class, "base", "name"),
+ BELONGS_TO(BelongsToStatement.class, "belongs-to", "module"),
+ BIT(BitStatement.class, "bit", "name"),
+ CASE(CaseStatement.class, "case", "name"),
+ CHOICE(ChoiceStatement.class, "choice", "name"),
+ CONFIG(ConfigStatement.class, "config", "value"),
+ CONTACT(ContactStatement.class, "contact", "text", true),
+ CONTAINER(ContainerStatement.class, "container", "name"),
+ DEFAULT(DefaultStatement.class, "default", "value"),
+ DESCRIPTION(DescriptionStatement.class, "description", "text", true),
+ DEVIATE(DeviateStatement.class, "deviate", "value"),
+ DEVIATION(DeviationStatement.class, "deviation", "target-node"),
+ ENUM(EnumStatement.class, "enum", "name"),
+ ERROR_APP_TAG(ErrorAppTagStatement.class, "error-app-tag", "value"),
+ ERROR_MESSAGE(ErrorMessageStatement.class, "error-message", "value", true),
+ EXTENSION(ExtensionStatement.class, "extension", "name"),
+ FEATURE(FeatureStatement.class, "feature", "name"),
+ FRACTION_DIGITS(FractionDigitsStatement.class, "fraction-digits", "value"),
+ GROUPING(GroupingStatement.class, "grouping", "name"),
+ IDENTITY(IdentityStatement.class, "identity", "name"),
+ IF_FEATURE(IfFeatureStatement.class, "if-feature", "name"),
+ IMPORT(ImportStatement.class, "import", "module"),
+ INCLUDE(IncludeStatement.class, "include", "module"),
+ INPUT(InputStatement.class, "input"),
+ KEY(KeyStatement.class, "key", "value"),
+ LEAF(LeafStatement.class, "leaf", "name"),
+ LEAF_LIST(LeafListStatement.class, "leaf-list", "name"),
+ LENGTH(LengthStatement.class, "length", "value"),
+ LIST(ListStatement.class, "list", "name"),
+ MANDATORY(MandatoryStatement.class, "mandatory", "value"),
+ MAX_ELEMENTS(MaxElementsStatement.class, "max-elements", "value"),
+ MIN_ELEMENTS(MinElementsStatement.class, "min-elements", "value"),
+ MODULE(ModuleStatement.class, "module", "name"),
+ MUST(MustStatement.class, "must", "condition"),
+ NAMESPACE(NamespaceStatement.class, "namespace", "uri"),
+ NOTIFICATION(NotificationStatement.class, "notification", "name"),
+ ORDERED_BY(OrderedByStatement.class, "ordered-by", "value"),
+ ORGANIZATION(OrganizationStatement.class, "organization", "text", true),
+ OUTPUT(OutputStatement.class, "output"),
+ PATH(PathStatement.class, "path", "value"),
+ PATTERN(PatternStatement.class, "pattern", "value"),
+ POSITION(PositionStatement.class, "position", "value"),
+ PREFIX(PrefixStatement.class, "prefix", "value"),
+ PRESENCE(PresenceStatement.class, "presence", "value"),
+ RANGE(RangeStatement.class, "range", "value"),
+ REFERENCE(ReferenceStatement.class, "reference", "text", true),
+ REFINE(RefineStatement.class, "refine", "target-node"),
+ REQUIRE_INSTANCE(RequireInstanceStatement.class, "require-instance", "value"),
+ REVISION(RevisionStatement.class, "revision", "date"),
+ REVISION_DATE(RevisionDateStatement.class, "revision-date", "date"),
+ RPC(RpcStatement.class, "rpc", "name"),
+ STATUS(StatusStatement.class, "status", "value"),
+ SUBMODULE(SubmoduleStatement.class, "submodule", "name"),
+ TYPE(TypeStatement.class, "type", "name"),
+ TYPEDEF(TypedefStatement.class, "typedef", "name"),
+ UNIQUE(UniqueStatement.class, "unique", "tag"),
+ UNITS(UnitsStatement.class, "units", "name"),
+ USES(UsesStatement.class, "uses", "name"),
+ VALUE(ValueStatement.class, "value", "value"),
+ WHEN(WhenStatement.class, "when", "condition"),
+ YANG_VERSION(YangVersionStatement.class, "yang-version", "value"),
+ YIN_ELEMENT(YinElementStatement.class, "yin-element", "value");
- private final @Nonnull Class<? extends DeclaredStatement<?>> type;
- private final @Nonnull QName name;
- private final @Nullable QName argument;
+ private final Class<? extends DeclaredStatement<?>> type;
+ private final Class<? extends EffectiveStatement<?,?>> effectiveType;
+ private final QName name;
+ private final QName argument;
private final boolean yinElement;
-
- private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr) {
+ Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr) {
type = Preconditions.checkNotNull(clz);
+ //FIXME: fill up effective type correctly
+ effectiveType = null;
name = yinQName(nameStr);
argument = null;
yinElement = false;
}
- private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr) {
+ Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr) {
type = Preconditions.checkNotNull(clz);
+ //FIXME: fill up effective type correctly
+ effectiveType = null;
name = yinQName(nameStr);
argument = yinQName(argumentStr);
this.yinElement = false;
}
- private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr,
+ Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr,
final boolean yinElement) {
type = Preconditions.checkNotNull(clz);
+ //FIXME: fill up effective type correctly
+ effectiveType = null;
name = yinQName(nameStr);
argument = yinQName(argumentStr);
this.yinElement = yinElement;
}
- private static QName yinQName(String nameStr) {
- return QName.cachedReference(QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr));
+ @Nonnull private static QName yinQName(String nameStr) {
+ return QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr).intern();
}
+ @Nonnull
@Override
public QName getStatementName() {
return name;
}
@Override
- public QName getArgumentName() {
+ @Nullable public QName getArgumentName() {
return argument;
}
@Override
- public Class<? extends DeclaredStatement<?>> getDeclaredRepresentationClass() {
+ @Nonnull public Class<? extends DeclaredStatement<?>> getDeclaredRepresentationClass() {
return type;
}
+ @Nonnull
@Override
- public Class<? extends DeclaredStatement<?>> getEffectiveRepresentationClass() {
- // FIXME: Add support once these interfaces are defined.
- throw new UnsupportedOperationException("Not defined yet.");
+ public Class<? extends EffectiveStatement<?,?>> getEffectiveRepresentationClass() {
+ return effectiveType;
}
+ @Override
public boolean isArgumentYinElement() {
return yinElement;
}