<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:22 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-807] Unable to serialize augmentation with children defined</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-807</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Prerequisites&lt;/p&gt;

&lt;p&gt;Model:&lt;/p&gt;

&lt;p&gt;module hc-test {&lt;br/&gt;
  yang-version 1;&lt;br/&gt;
  namespace &quot;urn:opendaylight:params:xml:ns:yang:hc:test&quot;;&lt;br/&gt;
  prefix &quot;hct&quot;;&lt;/p&gt;

&lt;p&gt;  revision &quot;2015-01-05&quot; &lt;/p&gt;
{
    description &quot;Testing HC model with bindings&quot;;
  }

&lt;p&gt;  import yang-ext &lt;/p&gt;
{
    prefix &quot;ext&quot;;
  }

&lt;p&gt;  // WRITE ORDER 3&lt;br/&gt;
  // READ ORDER 1&lt;br/&gt;
  container simple-container {&lt;br/&gt;
    leaf simple-container-name &lt;/p&gt;
{
      type string;
    }

&lt;p&gt;    container nested-container {&lt;br/&gt;
      leaf nested-container-name &lt;/p&gt;
{
        type string;
      }&lt;br/&gt;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  container simple-container-with-list {&lt;br/&gt;
    list simple-list-in-container {&lt;br/&gt;
        key id;&lt;br/&gt;
        leaf id {
            type int32;
        }&lt;br/&gt;
&lt;br/&gt;
        leaf name {
            type string;
        }&lt;br/&gt;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  list simple-list {&lt;br/&gt;
    key &quot;simple-key&quot;;&lt;br/&gt;
    leaf &quot;simple-key&quot;{
        type string;
    }&lt;br/&gt;
    leaf &quot;simple-leaf&quot;{        type string;    }&lt;br/&gt;
&lt;br/&gt;
    leaf &quot;another-simple-leaf&quot;{
        type string;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  container with-leaf-list {&lt;br/&gt;
    leaf-list simple-leaf-list {        type string;      }
&lt;p&gt;  }&lt;/p&gt;

&lt;p&gt;  grouping some-attributes {&lt;br/&gt;
    leaf leaf-from-grouping &lt;/p&gt;
{
        type string;
    }&lt;br/&gt;
&lt;br/&gt;
    // WRITE ORDER 5&lt;br/&gt;
    container container-from-grouping {&lt;br/&gt;
        leaf leaf-in-container-from-grouping {
            type int32;
        }&lt;br/&gt;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  // WRITE ORDER 9 (no real attributes though)&lt;br/&gt;
  // READ ORDER 2&lt;br/&gt;
  container container-with-list {&lt;br/&gt;
    // WRITE ORDER 7&lt;br/&gt;
    // READ ORDER 2.1&lt;br/&gt;
    list list-in-container {&lt;br/&gt;
        key &quot;id&quot;;&lt;br/&gt;
        ordered-by &quot;user&quot;;&lt;br/&gt;
&lt;br/&gt;
        leaf id {
            type uint32;
        }&lt;br/&gt;
&lt;br/&gt;
        // WRITE ORDER 8&lt;br/&gt;
        // READ ORDER 2.1.1&lt;br/&gt;
        container container-in-list {&lt;br/&gt;
            leaf name {
                type string;
            }&lt;br/&gt;
&lt;br/&gt;
            // WRITE ORDER 6&lt;br/&gt;
            // READ ORDER 2.1.1.1&lt;br/&gt;
            list nested-list {&lt;br/&gt;
                key &quot;nested-id&quot;;&lt;br/&gt;
                ordered-by &quot;user&quot;;&lt;br/&gt;
&lt;br/&gt;
                leaf nested-id {
                    type string;
                }&lt;br/&gt;
&lt;br/&gt;
                leaf nested-name {                    type string;                }&lt;br/&gt;
            }&lt;br/&gt;
        }&lt;br/&gt;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  // WRITE ORDER 4&lt;br/&gt;
  container container-with-choice {&lt;br/&gt;
    leaf name {        type string;    }

&lt;p&gt;    uses some-attributes;&lt;/p&gt;

&lt;p&gt;    choice choice {&lt;br/&gt;
        leaf c1 &lt;/p&gt;
{
            type string;
        }&lt;br/&gt;
&lt;br/&gt;
        leaf c2 {            type string;        }

&lt;p&gt;        // WRITE ORDER: 2&lt;br/&gt;
        container c3 {&lt;br/&gt;
            leaf name &lt;/p&gt;
{
                type string;
            }
&lt;p&gt;        }&lt;br/&gt;
    }&lt;br/&gt;
  }&lt;/p&gt;

&lt;p&gt;  // WRITE ORDER: 2&lt;br/&gt;
  // READ ORDER 1.1&lt;br/&gt;
  augment &quot;/hct:simple-container&quot; {&lt;br/&gt;
    ext:augment-identifier &quot;simple-augment&quot;;&lt;/p&gt;

&lt;p&gt;    leaf simple-augment-leaf &lt;/p&gt;
{
        type string;
    }&lt;br/&gt;
  }&lt;br/&gt;
&lt;br/&gt;
  // WRITE UNORDERED&lt;br/&gt;
  // READ ORDER 1.2&lt;br/&gt;
  augment &quot;/hct:simple-container&quot; {&lt;br/&gt;
    ext:augment-identifier &quot;complex-augment&quot;;&lt;br/&gt;
&lt;br/&gt;
    // WRITE ORDER: 1&lt;br/&gt;
    // READ ORDER 1.2.1&lt;br/&gt;
    container complex-augment-container {&lt;br/&gt;
        leaf some-leaf {
            type string;
        }&lt;br/&gt;
    }&lt;br/&gt;
&lt;br/&gt;
    leaf leaf-under-aug {        type string;    }
&lt;p&gt;  }&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;


&lt;p&gt;Logic used&lt;/p&gt;

&lt;p&gt;public static writeJsonNode(){&lt;br/&gt;
...&lt;br/&gt;
if(isAug(..)){&lt;br/&gt;
// aug&lt;br/&gt;
final SchemaNode augParentSchemaNode = INSTANCE.schemaForAug(schemaContext, identifier);&lt;br/&gt;
final SchemaPath augParentSchemaPath = augParentSchemaNode.getPath();&lt;br/&gt;
final NormalizedNodeStreamWriter streamWriter = JSONNormalizedNodeStreamWriter&lt;br/&gt;
        .createNestedWriter(JSONCodecFactory.getPrecomputed(schemaContext), augParentSchemaPath, null, jsonWriter);&lt;br/&gt;
final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(streamWriter, true);&lt;br/&gt;
normalizedNodeWriter.write(nodeData);&lt;br/&gt;
}&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;@Nonnull&lt;br/&gt;
default SchemaNode schemaForAug(@Nonnull final SchemaContext schemaContext,&lt;br/&gt;
                                 @Nonnull final YangInstanceIdentifier yangId) {&lt;br/&gt;
    return SchemaContextUtil&lt;br/&gt;
            .findDataSchemaNode(schemaContext, SchemaPath.create(schemaPathArguments(yangId, 0), true));&lt;br/&gt;
}&lt;/p&gt;


&lt;p&gt;default List&amp;lt;QName&amp;gt; schemaPathArguments(final @Nonnull YangInstanceIdentifier yangId,&lt;br/&gt;
                                        final int removeLastX) {&lt;br/&gt;
    final List&amp;lt;QName&amp;gt; all = yangId.getPathArguments().stream()&lt;br/&gt;
            // predicate/augmentations ones must be filtered out&lt;br/&gt;
            .filter(pathArgument -&amp;gt; !(pathArgument instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; pathArgument instanceof YangInstanceIdentifier.AugmentationIdentifier)&lt;br/&gt;
            )&lt;br/&gt;
            .map(YangInstanceIdentifier.PathArgument::getNodeType)&lt;br/&gt;
            .collect(Collectors.toList());&lt;br/&gt;
    if (removeLastX == 0) 
{
        return all;
    }
&lt;p&gt;    return all.stream().limit(all.size() - removeLastX).collect(Collectors.toList());&lt;br/&gt;
}&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;Given that following data are written&lt;br/&gt;
First one is write of augmentation node with leaf defined&lt;br/&gt;
Second one is write of augmentation node with container defined&lt;/p&gt;


&lt;p&gt;@Test&lt;br/&gt;
public void testWriteAugmentationWithLeaf() throws IOException {&lt;br/&gt;
    final QName leafQname = QName.create(SimpleContainer.QNAME, &quot;leaf-under-aug&quot;);&lt;br/&gt;
    final ImmutableSet&amp;lt;QName&amp;gt; childNodes = ImmutableSet.of(ComplexAugmentContainer.QNAME, leafQname);&lt;br/&gt;
    final YangInstanceIdentifier.AugmentationIdentifier augNodeIdentifier =&lt;br/&gt;
            new YangInstanceIdentifier.AugmentationIdentifier(childNodes);&lt;br/&gt;
    final YangInstanceIdentifier id = YangInstanceIdentifier.builder()&lt;br/&gt;
            .node(SimpleContainer.QNAME)&lt;br/&gt;
            .node(augNodeIdentifier)&lt;br/&gt;
            .build();&lt;/p&gt;

&lt;p&gt;    final AugmentationNode augData = Builders.augmentationBuilder()&lt;br/&gt;
            .withNodeIdentifier(augNodeIdentifier)&lt;br/&gt;
            .withChild(Builders.leafBuilder().withNodeIdentifier(&lt;br/&gt;
                    NodeIdentifier.create(leafQname))&lt;br/&gt;
                    .withValue(&quot;val&quot;).build())&lt;br/&gt;
            .build();&lt;br/&gt;
    final ByteArrayOutputStream out = new ByteArrayOutputStream();&lt;br/&gt;
    JsonUtils.writeJsonNode(id, augData, registry, schemaContext, out);&lt;br/&gt;
    final String result = new String(out.toByteArray());&lt;br/&gt;
    assertEquals(&quot;&quot;, result);&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;@Test&lt;br/&gt;
public void testWriteAugmentationWithContainer() throws IOException {&lt;br/&gt;
    final QName leafQname = QName.create(SimpleContainer.QNAME, &quot;leaf-under-aug&quot;);&lt;br/&gt;
    final QName underAugContainerQname = ComplexAugmentContainer.QNAME;&lt;br/&gt;
    final ImmutableSet&amp;lt;QName&amp;gt; childNodes = ImmutableSet.of(underAugContainerQname, leafQname);&lt;br/&gt;
    final YangInstanceIdentifier.AugmentationIdentifier augNodeIdentifier =&lt;br/&gt;
            new YangInstanceIdentifier.AugmentationIdentifier(childNodes);&lt;br/&gt;
    final YangInstanceIdentifier id = YangInstanceIdentifier.builder()&lt;br/&gt;
            .node(SimpleContainer.QNAME)&lt;br/&gt;
            .node(augNodeIdentifier)&lt;br/&gt;
            .build();&lt;/p&gt;

&lt;p&gt;    final AugmentationNode augData = Builders.augmentationBuilder()&lt;br/&gt;
            .withNodeIdentifier(augNodeIdentifier)&lt;br/&gt;
            .withChild(Builders.containerBuilder()&lt;br/&gt;
                    .withNodeIdentifier(NodeIdentifier.create(underAugContainerQname))&lt;br/&gt;
                    .build())&lt;br/&gt;
            .build();&lt;br/&gt;
    final ByteArrayOutputStream out = new ByteArrayOutputStream();&lt;br/&gt;
    JsonUtils.writeJsonNode(id, augData, registry, schemaContext, out);&lt;br/&gt;
    final String result = new String(out.toByteArray());&lt;br/&gt;
    assertEquals(&quot;&quot;, result);&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Following error is showed&lt;/p&gt;

&lt;p&gt;java.lang.IllegalStateException: Nesting problem.&lt;/p&gt;

&lt;p&gt;    at com.google.gson.stream.JsonWriter.beforeName(JsonWriter.java:616)&lt;br/&gt;
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:401)&lt;br/&gt;
    at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:307)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.codec.gson.JSONStreamWriterObjectContext.emitStart(JSONStreamWriterObjectContext.java:28)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.codec.gson.JSONStreamWriterNamedObjectContext.emitStart(JSONStreamWriterNamedObjectContext.java:29)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.codec.gson.JSONStreamWriterContext.emitMyself(JSONStreamWriterContext.java:118)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.codec.gson.JSONStreamWriterContext.endNode(JSONStreamWriterContext.java:148)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.endNode(JSONNormalizedNodeStreamWriter.java:217)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:193)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:97)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:168)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:220)&lt;br/&gt;
    at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:97)&lt;br/&gt;
    at io.fd.honeycomb.data.processing.JsonUtils.write(JsonUtils.java:123)&lt;br/&gt;
    at io.fd.honeycomb.data.processing.JsonUtils.writeJsonNode(JsonUtils.java:100)&lt;br/&gt;
    at io.fd.honeycomb.data.processing.JsonUtilsSerializationTest.testWriteAugmentationWithContainer(JsonUtilsSerializationTest.java:156)&lt;br/&gt;
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&lt;br/&gt;
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
    at java.lang.reflect.Method.invoke(Method.java:498)&lt;br/&gt;
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)&lt;br/&gt;
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)&lt;br/&gt;
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)&lt;br/&gt;
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)&lt;br/&gt;
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)&lt;br/&gt;
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)&lt;br/&gt;
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)&lt;br/&gt;
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)&lt;br/&gt;
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)&lt;br/&gt;
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)&lt;br/&gt;
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)&lt;br/&gt;
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)&lt;br/&gt;
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)&lt;br/&gt;
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)&lt;br/&gt;
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)&lt;br/&gt;
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)&lt;br/&gt;
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)&lt;br/&gt;
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)&lt;br/&gt;
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)&lt;/p&gt;

&lt;p&gt;With exactly same augmentaion data ,but writing it as part of parent container, no error is showed and correct data returned(see code bellow)&lt;/p&gt;


&lt;p&gt;@Test&lt;br/&gt;
public void testWriteContainerWithAugData() throws IOException {&lt;br/&gt;
    final QName leafQname = QName.create(SimpleContainer.QNAME, &quot;leaf-under-aug&quot;);&lt;br/&gt;
    final QName underAugContainerQname = ComplexAugmentContainer.QNAME;&lt;br/&gt;
    final ImmutableSet&amp;lt;QName&amp;gt; childNodes = ImmutableSet.of(underAugContainerQname, leafQname);&lt;/p&gt;

&lt;p&gt;    final YangInstanceIdentifier.AugmentationIdentifier augNodeIdentifier =&lt;br/&gt;
            new YangInstanceIdentifier.AugmentationIdentifier(childNodes);&lt;br/&gt;
    final YangInstanceIdentifier id = YangInstanceIdentifier.of(SimpleContainer.QNAME);&lt;br/&gt;
    final AugmentationNode augData = Builders.augmentationBuilder()&lt;br/&gt;
            .withNodeIdentifier(augNodeIdentifier)&lt;br/&gt;
            .withChild(Builders.containerBuilder()&lt;br/&gt;
                    .withNodeIdentifier(NodeIdentifier.create(underAugContainerQname))&lt;br/&gt;
                    .build())&lt;br/&gt;
            .build();&lt;br/&gt;
    NormalizedNode&amp;lt;?, ?&amp;gt; data = Builders.containerBuilder()&lt;br/&gt;
            .withNodeIdentifier(NodeIdentifier.create(SimpleContainer.QNAME))&lt;br/&gt;
            .withChild(augData)&lt;br/&gt;
            .build();&lt;br/&gt;
    final ByteArrayOutputStream out = new ByteArrayOutputStream();&lt;br/&gt;
    JsonUtils.writeJsonNode(id, data, registry, schemaContext, out);&lt;br/&gt;
    final String result = new String(out.toByteArray());&lt;br/&gt;
    assertEquals(&quot;{\&quot;hc-test:simple-container\&quot;:{\&quot;complex-augment-container\&quot;:{}}}&quot;, result);&lt;br/&gt;
}&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="23227">YANGTOOLS-807</key>
            <summary>Unable to serialize augmentation with children defined</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="10003">Cannot Reproduce</resolution>
                                        <assignee username="pkajsa">Peter Kajsa</assignee>
                                    <reporter username="jsrnicek@cisco.com">Jan Srnicek</reporter>
                        <labels>
                    </labels>
                <created>Fri, 18 Aug 2017 08:53:28 +0000</created>
                <updated>Sun, 10 Apr 2022 18:36:01 +0000</updated>
                            <resolved>Wed, 20 Sep 2017 14:22:15 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="44521" author="jsrnicek@cisco.com" created="Wed, 6 Sep 2017 12:17:38 +0000"  >&lt;p&gt;Could this be backported to Carbon?&lt;/p&gt;</comment>
                            <comment id="44522" author="pkajsa" created="Thu, 7 Sep 2017 11:50:17 +0000"  >&lt;p&gt;Yes, once we would have a fix, we will try to backport it to the carbon..&lt;/p&gt;</comment>
                            <comment id="44523" author="pkajsa" created="Wed, 20 Sep 2017 14:22:15 +0000"  >&lt;p&gt;I have tested reported issue many times from different points of view on different branches and it always works fine for me. Here you can find the last unit test I used to test this issue (&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/63328/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/63328/&lt;/a&gt;). The only problem I noticed is that in testWriteContainerWithAugData &quot;id&quot; and &quot;data&quot; points to the same container i.e. SimpleContainer.QNAME what fails if it is called directly in YT. Therefore I am closing this bug as &quot;works for me&quot;..  &lt;/p&gt;

&lt;p&gt;If this issue still persists, please reopen the bug with additional info how it could be replicated from YT point of view.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </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>9011</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=9011]]></customfieldvalue>

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

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

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