using namespace std;
namespace shibsp {
- static XMLCh format[] = UNICODE_LITERAL_6(f,o,r,m,a,t);
- static XMLCh formatter[] = UNICODE_LITERAL_9(f,o,r,m,a,t,t,e,r);
+ static const XMLCh defaultQualifiers[] =UNICODE_LITERAL_17(d,e,f,a,u,l,t,Q,u,a,l,i,f,i,e,r,s);
+ static const XMLCh format[] = UNICODE_LITERAL_6(f,o,r,m,a,t);
+ static const XMLCh formatter[] = UNICODE_LITERAL_9(f,o,r,m,a,t,t,e,r);
static const XMLCh Scope[] = UNICODE_LITERAL_5(S,c,o,p,e);
static const XMLCh scopeDelimeter[] = UNICODE_LITERAL_14(s,c,o,p,e,D,e,l,i,m,e,t,e,r);
class SHIBSP_DLLLOCAL NameIDFromScopedAttributeDecoder : virtual public AttributeDecoder
{
public:
- NameIDFromScopedAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_delimeter('@'),
- m_format(e ? e->getAttributeNS(NULL,format) : NULL), m_formatter(e ? e->getAttributeNS(NULL,formatter) : NULL) {
+ NameIDFromScopedAttributeDecoder(const DOMElement* e)
+ : AttributeDecoder(e),
+ m_delimeter('@'),
+ m_format(e ? e->getAttributeNS(NULL,format) : NULL),
+ m_formatter(e ? e->getAttributeNS(NULL,formatter) : NULL),
+ m_defaultQualifiers(false) {
if (e && e->hasAttributeNS(NULL,scopeDelimeter)) {
auto_ptr_char d(e->getAttributeNS(NULL,scopeDelimeter));
m_delimeter = *(d.get());
}
+ const XMLCh* flag = e ? e->getAttributeNS(NULL, defaultQualifiers) : NULL;
+ if (flag && (*flag == chLatin_t || *flag == chDigit_1))
+ m_defaultQualifiers = true;
}
~NameIDFromScopedAttributeDecoder() {}
char m_delimeter;
auto_ptr_char m_format;
auto_ptr_char m_formatter;
+ bool m_defaultQualifiers;
};
AttributeDecoder* SHIBSP_DLLLOCAL NameIDFromScopedAttributeDecoderFactory(const DOMElement* const & e)
destval.m_Name = val;
if (m_format.get() && *m_format.get())
destval.m_Format = m_format.get();
- if (assertingParty)
+ if (m_defaultQualifiers && assertingParty)
destval.m_NameQualifier = assertingParty;
- if (relyingParty)
+ if (m_defaultQualifiers && relyingParty)
destval.m_SPNameQualifier = relyingParty;
}
else {