<div dir="ltr"><div>Hi All,<br><br></div><div>What I'm currently trying is to migrate from OpenSAML2.x to OpenSAML3.x. Currently on OpenSAML2.x the code is as below:</div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="color:rgb(204,120,50)">private </span>EntityDescriptor <span style="color:rgb(255,198,109)">generateMetadataObjectFromString</span>(String metadataString) {<br>    EntityDescriptor entityDescriptor = <span style="color:rgb(204,120,50)">null;<br></span><span style="color:rgb(204,120,50)">    try </span>{<br>        DocumentBuilderFactory factory = IdentityUtil.<span style="font-style:italic">getSecuredDocumentBuilderFactory</span>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>factory.setNamespaceAware(<span style="color:rgb(204,120,50)">true</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>DocumentBuilder builder = factory.newDocumentBuilder()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>Document document = builder.parse(<span style="color:rgb(204,120,50)">new </span>ByteArrayInputStream(metadataString.getBytes()))<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>Element node = document.getDocumentElement()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>DOMMetadataResolver idpMetaDataProvider = <span style="color:rgb(204,120,50)">new </span>DOMMetadataResolver(node)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.setRequireValidMetadata(<span style="color:rgb(204,120,50)">true</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.setParserPool(<span style="color:rgb(204,120,50)">new </span>BasicParserPool())<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.initialize()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>XMLObject xmlObject = idpMetaDataProvider.getMetadata()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>entityDescriptor = (EntityDescriptor) xmlObject<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>} <span style="color:rgb(204,120,50)">catch </span>( ComponentInitializationException | SAXException | ParserConfigurationException | IOException e) {<br>        <span style="color:rgb(152,118,170);font-style:italic">log</span>.error(<span style="color:rgb(106,135,89)">"Error While reading Service Provider metadata xml"</span><span style="color:rgb(204,120,50)">, </span>e)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    <span style="color:rgb(204,120,50)">return </span>entityDescriptor<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div><br></div><div>So after changing them to new classes and methods it looked like:<br><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="color:rgb(204,120,50)">private </span>EntityDescriptor <span style="color:rgb(255,198,109)">generateMetadataObjectFromString</span>(String metadataString) {<br>    EntityDescriptor entityDescriptor = <span style="color:rgb(204,120,50)">null;<br></span><span style="color:rgb(204,120,50)">    try </span>{<br>        DocumentBuilderFactory factory = IdentityUtil.<span style="font-style:italic">getSecuredDocumentBuilderFactory</span>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>factory.setNamespaceAware(<span style="color:rgb(204,120,50)">true</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>DocumentBuilder builder = factory.newDocumentBuilder()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>Document document = builder.parse(<span style="color:rgb(204,120,50)">new </span>ByteArrayInputStream(metadataString.getBytes()))<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>Element node = document.getDocumentElement()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>DOMMetadataResolver idpMetaDataProvider = <span style="color:rgb(204,120,50)">new </span>DOMMetadataResolver(node)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.setRequireValidMetadata(<span style="color:rgb(204,120,50)">true</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.setParserPool(<span style="color:rgb(204,120,50)">new </span>BasicParserPool())<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>idpMetaDataProvider.initialize()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        // </span>XMLObject xmlObject = idpMetaDataProvider.getMetadata()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(204,120,50)">// </span>entityDescriptor = (EntityDescriptor) xmlObject<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>} <span style="color:rgb(204,120,50)">catch </span>( ComponentInitializationException | SAXException | ParserConfigurationException | IOException e) {<br>        <span style="color:rgb(152,118,170);font-style:italic">log</span>.error(<span style="color:rgb(106,135,89)">"Error While reading Service Provider metadata xml"</span><span style="color:rgb(204,120,50)">, </span>e)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    <span style="color:rgb(204,120,50)">return </span>entityDescriptor<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div>But I've struggled to find a resource on how to generate a EntityDescriptor to return from the method cause now there is no method such as <i>generateMetadata()</i> in <i>DOMMetadataResolver</i>, keeping this apart there is a method called <i>resolveSingle()</i> but it needs a <i>CriteriaSet(which i do not know what to include)</i>. The <b>two commented lines</b> are the ones where I'm stuck but if I'm missing anything in any other place let me know. </div><div><br></div><div>Any answers would be appreciated,<br></div><div>Deshan Koswatte<br></div></div>