<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:53:41 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-587] Parser: XSD regular expressions are interpreted as Java regexes</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-587</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;I am using integration(stable/lithium), have registered a netconf device (device1) successfully.&lt;br/&gt;
When I try to mount the device it throws error as below :&lt;br/&gt;
&lt;a href=&quot;http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/device1/yang-ext:mount/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/device1/yang-ext:mount/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;applicationoperation-failedProblem to get data from transaction.ReadFailedException{message=read execution failed, errorList=[RpcError [message=read execution failed, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=java.lang.IllegalArgumentException: Value $6$AnrKGc0V$B/0/A.pWg4HrrA6YiEJOtFGibQ9Fmm5.4rI/00gEz3QeB7joSxBU3YtbHDm6NSkS1dKTQy3BWhwKKDS8nB5S// does not match regular expression &amp;lt;^^$0$.*|$1$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;&lt;/p&gt;
{1,8}$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{22}|$5$(rounds=\d+$)?&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{1,16}$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{43}|$6$(rounds=\d+$)?&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{1,16}$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{86}$$&amp;gt;]]} at org.opendaylight.controller.md.sal.common.api.data.ReadFailedException$1.newWithCause(ReadFailedException.java:26) at org.opendaylight.controller.md.sal.common.api.data.ReadFailedException$1.newWithCause(ReadFailedException.java:23) at org.opendaylight.yangtools.util.concurrent.ExceptionMapper.apply(ExceptionMapper.java:80) at org.opendaylight.yangtools.util.concurrent.ExceptionMapper.apply(ExceptionMapper.java:31) at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.mapException(MappingCheckedFuture.java:60) at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.wrapInExecutionException(MappingCheckedFuture.java:64) at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.get(MappingCheckedFuture.java:77) at org.opendaylight.controller.sal.restconf.impl.BrokerFacade.readDataViaTransaction(BrokerFacade.java:198) at org.opendaylight.controller.sal.restconf.impl.BrokerFacade.readConfigurationData(BrokerFacade.java:87) at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.readConfigurationData(RestconfImpl.java:658) at org.opendaylight.controller.sal.restconf.impl.StatisticsRestconfServiceWrapper.readConfigurationData(StatisticsRestconfServiceWrapper.java:95) at org.opendaylight.controller.sal.rest.impl.RestconfCompositeWrapper.readConfigurationData(RestconfCompositeWrapper.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496) at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:247) at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:210) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467) at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82) at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:294) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501) at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Value $6$AnrKGc0V$B/0/A.pWg4HrrA6YiEJOtFGibQ9Fmm5.4rI/00gEz3QeB7joSxBU3YtbHDm6NSkS1dKTQy3BWhwKKDS8nB5S// does not match regular expression &amp;lt;^^$0$.*|$1$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{1,8}
&lt;p&gt;$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;&lt;/p&gt;
{22}
&lt;p&gt;|$5$(rounds=\d+$)?&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;&lt;/p&gt;
{1,16}$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{43}|$6$(rounds=\d+$)?&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;{1,16}
&lt;p&gt;$&lt;span class=&quot;error&quot;&gt;&amp;#91;a-zA-Z0-9./&amp;#93;&lt;/span&gt;&lt;/p&gt;
{86}
&lt;p&gt;$$&amp;gt; at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) at org.opendaylight.yangtools.yang.data.impl.codec.CompiledPatternContext.validate(CompiledPatternContext.java:31) at org.opendaylight.yangtools.yang.data.impl.codec.StringPatternCheckingCodec.validate(StringPatternCheckingCodec.java:39) at org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec.deserialize(StringStringCodec.java:36) at org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec.deserialize(StringStringCodec.java:14) at org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils.parseXmlValue(DomUtils.java:58) at org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils.parseXmlValue(DomUtils.java:136) at org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.LeafNodeDomParser.parseLeaf(LeafNodeDomParser.java:45) at org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.LeafNodeDomParser.parseLeaf(LeafNodeDomParser.java:22) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.LeafNodeBaseParser.parse(LeafNodeBaseParser.java:46) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.LeafNodeBaseParser.parse(LeafNodeBaseParser.java:27) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher$BaseNodeParserDispatcher.dispatchChildElement(NodeParserDispatcher.java:50) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.BaseDispatcherParser.parse(BaseDispatcherParser.java:177) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ListEntryNodeBaseParser.parse(ListEntryNodeBaseParser.java:61) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ListEntryNodeBaseParser.parse(ListEntryNodeBaseParser.java:28) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ListNodeBaseParser.parse(ListNodeBaseParser.java:46) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ListNodeBaseParser.parse(ListNodeBaseParser.java:26) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher$BaseNodeParserDispatcher.dispatchChildElement(NodeParserDispatcher.java:60) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.BaseDispatcherParser.parse(BaseDispatcherParser.java:177) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:47) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:29) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher$BaseNodeParserDispatcher.dispatchChildElement(NodeParserDispatcher.java:48) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.BaseDispatcherParser.parse(BaseDispatcherParser.java:177) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:47) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:29) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher$BaseNodeParserDispatcher.dispatchChildElement(NodeParserDispatcher.java:48) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.BaseDispatcherParser.parse(BaseDispatcherParser.java:177) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:47) at org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser.parse(ContainerNodeBaseParser.java:29) at org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer.toRpcResult(NetconfMessageTransformer.java:271) at org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer.toRpcResult(NetconfMessageTransformer.java:71) at org.opendaylight.controller.sal.connect.netconf.sal.NetconfDeviceRpc$2.apply(NetconfDeviceRpc.java:69) at org.opendaylight.controller.sal.connect.netconf.sal.NetconfDeviceRpc$2.apply(NetconfDeviceRpc.java:65) at com.google.common.util.concurrent.Futures$2.apply(Futures.java:760) at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:906) at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457) at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156) at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145) at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185) at org.opendaylight.controller.sal.connect.netconf.listener.UncancellableFuture.set(UncancellableFuture.java:45) at org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator.processMessage(NetconfDeviceCommunicator.java:268) at org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator.onMessage(NetconfDeviceCommunicator.java:213) at org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator.onMessage(NetconfDeviceCommunicator.java:46) at org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession.handleMessage(AbstractNetconfSession.java:61) at org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession.handleMessage(AbstractNetconfSession.java:32) at org.opendaylight.protocol.framework.AbstractProtocolSession.channelRead0(AbstractProtocolSession.java:53) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:329) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) ... 1 more &lt;/p&gt;


&lt;p&gt;Logs attached.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: Linux&lt;br/&gt;
Platform: PC&lt;/p&gt;</environment>
        <key id="23007">YANGTOOLS-587</key>
            <summary>Parser: XSD regular expressions are interpreted as Java regexes</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="pkajsa">Peter Kajsa</assignee>
                                    <reporter username="bhaveshsingh.hsp@gmail.com">Bhavesh Kumar</reporter>
                        <labels>
                    </labels>
                <created>Wed, 24 Feb 2016 05:59:11 +0000</created>
                <updated>Sun, 10 Apr 2022 18:35:45 +0000</updated>
                            <resolved>Thu, 20 Jul 2017 08:23:17 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>11</watches>
                                                                                                                <comments>
                            <comment id="43793" author="bhaveshsingh.hsp@gmail.com" created="Wed, 24 Feb 2016 05:59:11 +0000"  >&lt;p&gt;Attachment karaf.log has been added with description: karaf log of integration while mounting the device&lt;/p&gt;</comment>
                            <comment id="43776" author="rovarga" created="Wed, 24 Feb 2016 09:08:28 +0000"  >&lt;p&gt;Input YANG file contains invalid regular expression, hence the error. Note that YANG follows XSD regular expressions, as defined in &lt;a href=&quot;https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs&lt;/a&gt;. These do not allow ^/$ anchors (as anchoring is implicit) &amp;#8211; which are obviously present.&lt;/p&gt;

&lt;p&gt;Error on invalid input, downgrading to improvement/normal, targetting to SR4. What yangtools can do is catch the case when an expression starts/ends with an anchor, complain loudly and ignore the anchor points.&lt;/p&gt;</comment>
                            <comment id="43777" author="rovarga" created="Wed, 24 Feb 2016 09:13:49 +0000"  >&lt;p&gt;Also, a YANG snippet defining the leaf would be nice.&lt;/p&gt;</comment>
                            <comment id="43778" author="bhaveshsingh.hsp@gmail.com" created="Wed, 24 Feb 2016 17:28:10 +0000"  >&lt;p&gt;Thanks for your support Robert.&lt;br/&gt;
I&apos;ll look into my yang files and try to resolve the anchors which are not allowed.&lt;/p&gt;</comment>
                            <comment id="43779" author="rovarga" created="Wed, 24 Feb 2016 17:42:29 +0000"  >&lt;p&gt;I am not sure, but I think one problem with regex matching may be that it does not interpret $ correctly, we&apos;ll continue to investigate.&lt;/p&gt;</comment>
                            <comment id="43780" author="ifoltin" created="Thu, 25 Feb 2016 17:10:46 +0000"  >&lt;p&gt;fix pushed: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/35399/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/35399/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;stable/lithium: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/35407/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/35407/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="43781" author="rovarga" created="Thu, 12 May 2016 22:19:34 +0000"  >&lt;p&gt;THe agreed plan of action is to import the XSD RegEx engine from Xerces, under third-party/xsd-regex. Note the import should include only required classes and those need to be imported in the org.opendaylight.yangtools.xsd.regex.&lt;/p&gt;

&lt;p&gt;These will then need to be modified, such that RegularExpression has a:&lt;/p&gt;

&lt;p&gt;    public java.util.Pattern toPattern() throws PatternSyntaxException;&lt;/p&gt;

&lt;p&gt;method, which will produce a compiled Pattern. If an expression cannot be converted to a Pattern, PatternSyntaxException should be reported.&lt;/p&gt;

&lt;p&gt;This pattern will then used in Java to validate inputs.&lt;/p&gt;</comment>
                            <comment id="43782" author="rovarga" created="Fri, 20 May 2016 10:51:58 +0000"  >&lt;p&gt;import of Xerces regex engine: &lt;a href=&quot;https://git.opendaylight.org/gerrit/39168&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/39168&lt;/a&gt;&lt;br/&gt;
cleanup to comply with ODL coding standards: &lt;a href=&quot;https://git.opendaylight.org/gerrit/39169&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/39169&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="43783" author="rovarga" created="Mon, 5 Sep 2016 08:40:13 +0000"  >&lt;p&gt;master: &lt;a href=&quot;https://git.opendaylight.org/gerrit/45145&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/45145&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="43784" author="rovarga" created="Mon, 5 Sep 2016 15:20:29 +0000"  >&lt;p&gt;While using Xerces&apos; RegularExpression works, it has a very undesirable side-effect of expanding regexes &amp;#8211; which renders debugging and error reporting a horror.&lt;/p&gt;

&lt;p&gt;Hence I think it will be more feasible to create a simple XSD RegEx tokenizer, which will emit minimally-modified strings.&lt;/p&gt;</comment>
                            <comment id="43785" author="rovarga" created="Mon, 21 Nov 2016 15:23:17 +0000"  >&lt;p&gt;Alternate approach: &lt;a href=&quot;https://git.opendaylight.org/gerrit/46990&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/46990&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="43786" author="vzelcamo@cisco.com" created="Fri, 17 Feb 2017 10:02:09 +0000"  >&lt;p&gt;RCO delivery&lt;/p&gt;</comment>
                            <comment id="43787" author="pkajsa" created="Wed, 8 Mar 2017 13:50:58 +0000"  >&lt;p&gt;(In reply to Robert Varga from comment #1)&lt;br/&gt;
&amp;gt; What yangtools can do is catch the case when an expression starts/ends&lt;br/&gt;
&amp;gt; with an anchor, complain loudly and ignore the anchor points.&lt;/p&gt;

&lt;p&gt;I am not sure whether we are really able to do that, because for an example consider the following XSD pattern &quot;&lt;sup&gt;x$&quot;. Are both chars &apos;&lt;/sup&gt;&apos; and &apos;$&apos; added mistakenly as anchor points and should therefore be omitted or are they added intentionally in order to match string &quot;^x$&quot; ?&lt;/p&gt;</comment>
                            <comment id="43788" author="pkajsa" created="Wed, 8 Mar 2017 13:57:03 +0000"  >&lt;p&gt;Adapted XSD regex grammar does not work for ANTLR correctly. I spent some time trying to fix it, but there are more issues in the grammar like ambiguity of rules, order of rules, etc. Therefore, I have proposed the following patch based on iteration over regex chars: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/52999/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/52999/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think it is sufficient for our needs...&lt;/p&gt;</comment>
                            <comment id="43789" author="pkajsa" created="Wed, 8 Mar 2017 14:03:39 +0000"  >&lt;p&gt;Patch for xsd-regex removal from Yangtools:&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/53000/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/53000/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It needs to be fixed (yangtools-carbon-distribution-check job fails). Resolving in progress ...&lt;/p&gt;</comment>
                            <comment id="43790" author="rovarga" created="Sat, 11 Mar 2017 14:26:42 +0000"  >&lt;p&gt;We should actually backport this to Boron&lt;/p&gt;</comment>
                            <comment id="43791" author="dkutenicsova" created="Wed, 19 Jul 2017 15:25:52 +0000"  >&lt;p&gt;Reopening as problem persists in Boron-SR3. The comments below suggests, that if a regexp contains anchors, yangtools should ignore them. Instead of that, yangtools is escaping them and adding one more set of anchors, generating a compilable but unusable regexp pattern:&lt;/p&gt;

&lt;p&gt;Yang (&lt;a href=&quot;https://github.com/openconfig/public/blob/master/release/models/types/openconfig-yang-types.yang&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/openconfig/public/blob/master/release/models/types/openconfig-yang-types.yang&lt;/a&gt;) :&lt;/p&gt;

&lt;p&gt;typedef dotted-quad {&lt;br/&gt;
    type string {&lt;br/&gt;
      pattern &apos;^((&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&apos;       +&lt;br/&gt;
              &apos;25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)\.)&lt;/p&gt;
{3}(&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&apos; +&lt;br/&gt;
              &apos;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)$&apos;;&lt;br/&gt;
}&lt;br/&gt;
}&lt;br/&gt;
&lt;br/&gt;
- note all openconfig regexps contain anchors ^ and $&lt;br/&gt;
&lt;br/&gt;
Generated java regexp:&lt;br/&gt;
&lt;br/&gt;
public static final List&amp;lt;String&amp;gt; PATTERN_CONSTANTS = ImmutableList.of(&quot;^\\^((&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)&lt;br class=&quot;atl-forced-newline&quot; /&gt;.){3}
&lt;p&gt;(&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)&lt;br class=&quot;atl-forced-newline&quot; /&gt;$$&quot;);&lt;/p&gt;

&lt;p&gt;Test :&lt;/p&gt;

&lt;p&gt;@Test&lt;br/&gt;
public void testDottedQuad() {&lt;br/&gt;
  new DottedQuad(&quot;127.0.0.1&quot;);&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Output :&lt;/p&gt;

&lt;p&gt;((&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)\.)&lt;/p&gt;
{3}(&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)&lt;br/&gt;
Exception in thread &quot;main&quot; java.lang.IllegalArgumentException: Supplied value &quot;127.0.0.1&quot; does not match required pattern &quot;^&amp;#94;((&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)\.){3}
&lt;p&gt;(&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|&lt;span class=&quot;error&quot;&gt;&amp;#91;1-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|1&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|2&lt;span class=&quot;error&quot;&gt;&amp;#91;0-4&amp;#93;&lt;/span&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0-9&amp;#93;&lt;/span&gt;|25&lt;span class=&quot;error&quot;&gt;&amp;#91;0-5&amp;#93;&lt;/span&gt;)\$$&quot;&lt;br/&gt;
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)&lt;br/&gt;
	at org.opendaylight.yang.gen.v1.http.openconfig.net.yang.types.yang.rev170403.DottedQuad.&amp;lt;init&amp;gt;(DottedQuad.java:52)&lt;/p&gt;</comment>
                            <comment id="43792" author="rovarga" created="Thu, 20 Jul 2017 08:23:17 +0000"  >&lt;p&gt;&lt;a href=&quot;https://tools.ietf.org/html/rfc6020#section-9.4.6:&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://tools.ietf.org/html/rfc6020#section-9.4.6:&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;   The &quot;pattern&quot; statement, which is an optional substatement to the&lt;br/&gt;
   &quot;type&quot; statement, takes as an argument a regular expression string,&lt;br/&gt;
   as defined in &lt;span class=&quot;error&quot;&gt;&amp;#91;XSD-TYPES&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs:&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs:&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note:  Unlike some popular regular expression languages (including those defined by Perl and standard Unix utilities), the regular expression language defined here implicitly anchors all regular expressions at the head and tail, as the most common use of regular expressions in &#183;pattern&#183; is to match entire literals.&lt;/p&gt;

&lt;p&gt;That means that the models are wrong and they should not contain anchors.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="23078">YANGTOOLS-658</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="23030">YANGTOOLS-610</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="23078">YANGTOOLS-658</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="13042" name="karaf.log" size="109890" author="bhaveshsingh.hsp@gmail.com" created="Wed, 24 Feb 2016 05:59:11 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5410</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=5410]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10344"><![CDATA[Boron-3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10312"><![CDATA[High]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i0285b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>