How are you creating the Request XMLBean?

this works for me, no cursors, just beans and dom:

RequestDocument samlRequestDoc = RequestDocument.Factory.newInstance();
    RequestType samlRequest = samlRequestDoc.addNewRequest();
    samlRequest.setRequestID(XUtils.getInstance().createNCNameID());
    samlRequest.setMajorVersion(new BigInteger("1"));
    samlRequest.setMinorVersion(new BigInteger("1"));
    Calendar now = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    now.clear(Calendar.MILLISECOND);
    samlRequest.setIssueInstant(now);

    // Add an attribute query to the SAML request
    AttributeQueryType attrQuery = samlRequest.addNewAttributeQuery();
    attrQuery.setResource(guardEntityDescriptor.getEntityID());
    SubjectType subject = attrQuery.addNewSubject();
    NameIdentifierType nameID = subject.addNewNameIdentifier();
    nameID.setFormat(Shibboleth.NS_NAME_IDENTIFIER);
    nameID.setNameQualifier(idpProviderID);
    nameID.setStringValue(nameIdentifier);

    // Put the SAML request and attribute query in a SOAP message
EnvelopeDocument soapEnvelopeDoc = EnvelopeDocument.Factory.newInstance();
    Envelope soapEnvelope = soapEnvelopeDoc.addNewEnvelope();
    Body soapBody = soapEnvelope.addNewBody();
soapBody.getDomNode().appendChild(soapBody.getDomNode ().getOwnerDocument().importNode(samlRequest.getDomNode(), true));


Alistair


--------------
mov eax,1
mov ebx,0
int 80h




On 6 Dec 2006, at 20:04, Hacking Bear wrote:

Doesn't work, still missing the <Request> tag.

Code changed:

        soapBody.getDomNode().appendChild(
soapBody.getDomNode().getOwnerDocument().importNode (request.getDomNode(), true));
        System.out.println("\nPrint soapDoc.save(OutputStream)");
        soapDoc.save(System.out);

Output:
Print soapDoc.save(OutputStream)
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/ envelope/"><soapenv:Body><urn:AttributeQuery xmlns:urn="urn:oasis:names:tc:SAML: 1.0:protocol"><urn1:Subject xmlns:urn1="urn:oasis:names:tc:SAML: 1.0:assertion"><urn1:NameIdentifier>NAME123</urn1:NameIdentifier></ urn1:Subject></urn:AttributeQuery></soapenv:Body></soapenv:Envelope>

On 12/6/06, Alistair Young <[EMAIL PROTECTED]> wrote:
Is this any use to you? It inserts a SAML Request XMLBean into a SOAP
XMLBean:

soapBody.getDomNode().appendChild(soapBody.getDomNode ().getOwnerDocument().importNode(samlRequest.getDomNode(),
true));

Alistair

--
mov eax,1
mov ebx,0
int 80h

> Hello,
>
> Can anyone help me on this?
>
> At least I want to know if it is a bug or by design that the top- most > element (e.g. the "Request" element in the example") are omitted. This
> makes
> it hard to write generic codes because one has to know the document type
> to
> wrap the xml bean object.
>
> Thanks
>
>
>
> On 12/4/06, Hacking Bear < [EMAIL PROTECTED]> wrote:
>>
>> Hi,
>>
>> I eventually can insert one XML bean into another using cursor. But
>> still
>> some question:
>>
>> 1. As experiment at point (A) and (B) below, it seems that XMLBean
>> inserts
>> the child after the cursor, rather than at the cursor, so I have to wrp
>> it
>> in a dummy doc or parent element. This also seems contradicting to the
>> tutorial/document. Any idea why this is the case?
>>
>> 2. Is there a simpler API method that insert an XmlObject? Something
>> like:
>>        body.insert(XmlObject); // generated
>>        cursor.insert(XmlObject); // cursor-based
>>
>> Thanks
>>
>> public class SOAPXBeanOutputTest {
>>     public static void main(String[] args) throws Exception {
>>         RequestType request = RequestType.Factory.newInstance();
>>         request.setIssueInstant(Calendar.getInstance());
>>         request.setRequestID ("REQ123");
>>         AttributeQueryType query = request.addNewAttributeQuery();
>>         SubjectType subject = SubjectType.Factory.newInstance();
>> NameIdentifierType nameId = subject.addNewNameIdentifier ();
>>         nameId.setStringValue ("NAME123");
>>         query.setSubject((SubjectType)subject.copy());
>>
>>         EnvelopeDocument soapDoc =
>> EnvelopeDocument.Factory.newInstance();
>>         Envelope soapEnv = soapDoc.addNewEnvelope();
>>         Body soapBody = soapEnv.addNewBody();
>>
>>         XmlCursor cursor = soapBody.newCursor();
>>         cursor.toNextToken();
>>
>> // (A) if not wrapping in dummy doc/element, results in output
>> ...<soapenv:Body><urn:AttributeQuery...
>>         RequestDocument dummyDoc =
>> RequestDocument.Factory.newInstance();
>>         dummyDoc.setRequest(request);
>>
>> XmlCursor reqcursor = dummyDoc.newCursor(); // typs = STARTDOC
>>         //reqcursor.toFirstChild(); // (B) this results in output
>> ...<soapenv:Body><urn:AttributeQuery...
>>         reqcursor.moveXmlContents(cursor);
>>
>>         reqcursor.dispose();
>>         cursor.dispose();
>>
>>         soapDoc.save(System.out);
>>     }
>> }
>>
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to