class SAML_DLLLOCAL SAML2ArtifactEncoder : public MessageEncoder
{
public:
- SAML2ArtifactEncoder(const DOMElement* e);
+ SAML2ArtifactEncoder(const DOMElement* e, const XMLCh* ns);
virtual ~SAML2ArtifactEncoder() {}
long encode(
string m_template;
};
- MessageEncoder* SAML_DLLLOCAL SAML2ArtifactEncoderFactory(const DOMElement* const & e)
+ MessageEncoder* SAML_DLLLOCAL SAML2ArtifactEncoderFactory(const pair<const DOMElement*,const XMLCh*>& p)
{
- return new SAML2ArtifactEncoder(e);
+ return new SAML2ArtifactEncoder(p.first, p.second);
}
};
static const XMLCh postArtifact[] = UNICODE_LITERAL_12(p,o,s,t,A,r,t,i,f,a,c,t);
};
-SAML2ArtifactEncoder::SAML2ArtifactEncoder(const DOMElement* e) : m_post(false)
+SAML2ArtifactEncoder::SAML2ArtifactEncoder(const DOMElement* e, const XMLCh* ns) : m_post(false)
{
if (e) {
- const XMLCh* flag = e->getAttributeNS(NULL, postArtifact);
+ const XMLCh* flag = e->getAttributeNS(ns, postArtifact);
m_post = (flag && (*flag==chLatin_t || *flag==chDigit_1));
if (m_post) {
- auto_ptr_char t(e->getAttributeNS(NULL, _template));
- if (t.get())
+ auto_ptr_char t(e->getAttributeNS(ns, _template));
+ if (t.get() && *t.get())
m_template = t.get();
}
}
StatusResponseType* response = NULL;
RequestAbstractType* request = dynamic_cast<RequestAbstractType*>(xmlObject);
- if (!request)
+ if (!request) {
response = dynamic_cast<StatusResponseType*>(xmlObject);
- if (!response)
- throw BindingException("XML content for SAML 2.0 HTTP-Artifact Encoder must be a SAML 2.0 protocol message.");
+ if (!response)
+ throw BindingException("XML content for SAML 2.0 HTTP-Artifact Encoder must be a SAML 2.0 protocol message.");
+ }
ArtifactMap* mapper = SAMLConfig::getConfig().getArtifactMap();
if (!mapper)