import org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
-import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
+import org.opendaylight.yangtools.yang.model.util.RegexUtils;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.PatternConstraintEffectiveImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.PatternEffectiveStatementImpl;
import org.slf4j.Logger;
super(context);
}
- public static class Definition
- extends
- AbstractStatementSupport<PatternConstraint, PatternStatement, EffectiveStatement<PatternConstraint, PatternStatement>> {
+ public static class Definition extends AbstractStatementSupport<PatternConstraint, PatternStatement,
+ EffectiveStatement<PatternConstraint, PatternStatement>> {
public Definition() {
super(YangStmtMapping.PATTERN);
@Override
public PatternConstraint parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- final String pattern = "^" + Utils.fixUnicodeScriptPattern(value) + '$';
+ final String pattern = RegexUtils.getJavaRegexFromXSD(value);
try {
Pattern.compile(pattern);
return null;
}
- return new PatternConstraintEffectiveImpl(pattern, Optional.absent(), Optional.absent());
+ return new PatternConstraintEffectiveImpl(pattern, value, Optional.absent(), Optional.absent());
}
@Override
@Override
public EffectiveStatement<PatternConstraint, PatternStatement> createEffective(
- final StmtContext<PatternConstraint, PatternStatement, EffectiveStatement<PatternConstraint, PatternStatement>> ctx) {
+ final StmtContext<PatternConstraint, PatternStatement,
+ EffectiveStatement<PatternConstraint, PatternStatement>> ctx) {
return new PatternEffectiveStatementImpl(ctx);
}
- @Override
- public void onFullDefinitionDeclared(final StmtContext.Mutable<PatternConstraint, PatternStatement,
- EffectiveStatement<PatternConstraint, PatternStatement>> stmt) {
- super.onFullDefinitionDeclared(stmt);
- getSubstatementValidator().validate(stmt);
- }
-
@Override
protected SubstatementValidator getSubstatementValidator() {
return SUBSTATEMENT_VALIDATOR;