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]