+ class SAML_DLLLOCAL QueryDescriptorTypeImpl : public virtual QueryDescriptorType, public RoleDescriptorImpl
+ {
+ void init() {
+ m_WantAssertionsSigned=XML_BOOL_NULL;
+ m_children.push_back(NULL);
+ m_pos_NameIDFormat=m_pos_ContactPerson;
+ ++m_pos_NameIDFormat;
+ }
+
+ protected:
+ list<XMLObject*>::iterator m_pos_NameIDFormat;
+
+ QueryDescriptorTypeImpl() {
+ init();
+ }
+
+ public:
+ virtual ~QueryDescriptorTypeImpl() {}
+
+ QueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ QueryDescriptorTypeImpl(const QueryDescriptorTypeImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) {
+ init();
+ WantAssertionsSigned(src.m_WantAssertionsSigned);
+ VectorOf(NameIDFormat) y=getNameIDFormats();
+ for (vector<NameIDFormat*>::const_iterator m=src.m_NameIDFormats.begin(); m!=src.m_NameIDFormats.end(); m++) {
+ if (*m) {
+ y.push_back((*m)->cloneNameIDFormat());
+ }
+ }
+ }
+
+ IMPL_BOOLEAN_ATTRIB(WantAssertionsSigned);
+ IMPL_TYPED_CHILDREN(NameIDFormat,m_pos_NameIDFormat);
+
+ void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
+ if (!qualifiedName.hasNamespaceURI()) {
+ if (XMLString::equals(qualifiedName.getLocalPart(),WANTASSERTIONSSIGNED_ATTRIB_NAME)) {
+ setWantAssertionsSigned(value);
+ return;
+ }
+ }
+ RoleDescriptorImpl::setAttribute(qualifiedName, value, ID);
+ }
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_BOOLEAN_ATTRIB(WantAssertionsSigned,WANTASSERTIONSSIGNED,NULL);
+ RoleDescriptorImpl::marshallAttributes(domElement);
+ }
+
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(NameIDFormat,SAML20MD_NS,false);
+ RoleDescriptorImpl::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class SAML_DLLLOCAL AuthnQueryDescriptorTypeImpl : public virtual AuthnQueryDescriptorType, public QueryDescriptorTypeImpl
+ {
+ public:
+ virtual ~AuthnQueryDescriptorTypeImpl() {}
+
+ AuthnQueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ AuthnQueryDescriptorTypeImpl(const AuthnQueryDescriptorTypeImpl& src) : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE(AuthnQueryDescriptorType);
+ QueryDescriptorType* cloneQueryDescriptorType() const {
+ return new AuthnQueryDescriptorTypeImpl(*this);
+ }
+ RoleDescriptor* cloneRoleDescriptor() const {
+ return new AuthnQueryDescriptorTypeImpl(*this);
+ }
+ };
+
+ class SAML_DLLLOCAL AttributeQueryDescriptorTypeImpl : public virtual AttributeQueryDescriptorType, public QueryDescriptorTypeImpl
+ {
+ public:
+ virtual ~AttributeQueryDescriptorTypeImpl() {}
+
+ AttributeQueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ AttributeQueryDescriptorTypeImpl(const AttributeQueryDescriptorTypeImpl& src)
+ : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) {
+ VectorOf(AttributeConsumingService) w=getAttributeConsumingServices();
+ for (vector<AttributeConsumingService*>::const_iterator j=src.m_AttributeConsumingServices.begin(); j!=src.m_AttributeConsumingServices.end(); j++) {
+ if (*j) {
+ w.push_back((*j)->cloneAttributeConsumingService());
+ }
+ }
+ }
+
+ IMPL_XMLOBJECT_CLONE(AttributeQueryDescriptorType);
+ QueryDescriptorType* cloneQueryDescriptorType() const {
+ return new AttributeQueryDescriptorTypeImpl(*this);
+ }
+ RoleDescriptor* cloneRoleDescriptor() const {
+ return new AttributeQueryDescriptorTypeImpl(*this);
+ }
+
+ IMPL_TYPED_CHILDREN(AttributeConsumingService,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(AttributeConsumingService,SAML20MD_NS,false);
+ QueryDescriptorTypeImpl::processChildElement(childXMLObject,root);
+ }
+ };
+
+ class SAML_DLLLOCAL AuthzDecisionQueryDescriptorTypeImpl : public virtual AuthzDecisionQueryDescriptorType, public QueryDescriptorTypeImpl
+ {
+ public:
+ virtual ~AuthzDecisionQueryDescriptorTypeImpl() {}
+
+ AuthzDecisionQueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ AuthzDecisionQueryDescriptorTypeImpl(const AuthzDecisionQueryDescriptorTypeImpl& src)
+ : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) {
+ VectorOf(ActionNamespace) w=getActionNamespaces();
+ for (vector<ActionNamespace*>::const_iterator j=src.m_ActionNamespaces.begin(); j!=src.m_ActionNamespaces.end(); j++) {
+ if (*j) {
+ w.push_back((*j)->cloneActionNamespace());
+ }
+ }
+ }
+
+ IMPL_XMLOBJECT_CLONE(AuthzDecisionQueryDescriptorType);
+ QueryDescriptorType* cloneQueryDescriptorType() const {
+ return new AuthzDecisionQueryDescriptorTypeImpl(*this);
+ }
+ RoleDescriptor* cloneRoleDescriptor() const {
+ return new AuthzDecisionQueryDescriptorTypeImpl(*this);
+ }
+
+ IMPL_TYPED_CHILDREN(ActionNamespace,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(ActionNamespace,samlconstants::SAML20MD_QUERY_EXT_NS,false);
+ QueryDescriptorTypeImpl::processChildElement(childXMLObject,root);
+ }
+ };
+