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.AnydataStatement;
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.AugmentStatement;
@Beta
public enum Rfc6020Mapping implements StatementDefinition {
+ ANYDATA(AnydataStatement.class, "anydata", "name"),
ANYXML(AnyxmlStatement.class, "anyxml", "name"),
ARGUMENT(ArgumentStatement.class, "argument", "name"),
AUGMENT(AugmentStatement.class, "augment", "target-node"),
YIN_ELEMENT(YinElementStatement.class, "yin-element", "value");
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(final 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(final 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(final 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;
}
- @Nonnull private static QName yinQName(String nameStr) {
- return QName.cachedReference(QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr));
+ @Nonnull private static QName yinQName(final String nameStr) {
+ return QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr).intern();
}
+ @Nonnull
@Override
public QName getStatementName() {
return name;
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;
}