/*
- * Copyright 2001-2006 Internet2
+ * Copyright 2001-2007 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "internal.h"
#include "exceptions.h"
#include "saml2/metadata/Metadata.h"
+#include "saml2/metadata/MetadataKeyInfoIterator.h"
#include <xmltooling/AbstractComplexElement.h>
-#include <xmltooling/AbstractElementProxy.h>
#include <xmltooling/AbstractSimpleElement.h>
#include <xmltooling/impl/AnyElement.h>
#include <xmltooling/io/AbstractXMLObjectMarshaller.h>
};
class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions,
- public AbstractElementProxy,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
}
ExtensionsImpl(const ExtensionsImpl& src)
- : AbstractXMLObject(src), AbstractElementProxy(src), AbstractDOMCachingXMLObject(src) {
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- getXMLObjects().push_back((*i)->clone());
- }
- }
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ VectorOf(XMLObject) v=getUnknownXMLObjects();
+ for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
+ v.push_back((*i)->clone());
}
IMPL_XMLOBJECT_CLONE(Extensions);
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
if (!XMLString::equals(nsURI,SAML20MD_NS) && nsURI && *nsURI) {
- getXMLObjects().push_back(childXMLObject);
+ getUnknownXMLObjects().push_back(childXMLObject);
return;
}
};
class SAML_DLLLOCAL EndpointTypeImpl : public virtual EndpointType,
- public AbstractElementProxy,
public AbstractAttributeExtensibleXMLObject,
+ public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
}
EndpointTypeImpl(const EndpointTypeImpl& src)
- : AbstractXMLObject(src), AbstractElementProxy(src),
- AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
+ : AbstractXMLObject(src),
+ AbstractAttributeExtensibleXMLObject(src),
+ AbstractComplexElement(src),
+ AbstractDOMCachingXMLObject(src) {
setBinding(src.getBinding());
setLocation(src.getLocation());
setResponseLocation(src.getResponseLocation());
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- getXMLObjects().push_back((*i)->clone());
- }
- }
+ VectorOf(XMLObject) v=getUnknownXMLObjects();
+ for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
+ v.push_back((*i)->clone());
}
IMPL_XMLOBJECT_CLONE(EndpointType);
IMPL_STRING_ATTRIB(Binding);
IMPL_STRING_ATTRIB(Location);
IMPL_STRING_ATTRIB(ResponseLocation);
+ IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
if (!XMLString::equals(nsURI,SAML20MD_NS) && nsURI && *nsURI) {
- getXMLObjects().push_back(childXMLObject);
+ getUnknownXMLObjects().push_back(childXMLObject);
return;
}
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
m_Signature->setContentReference(new opensaml::ContentReference(*this));
}
+ KeyInfoIterator* getKeyInfoIterator() const {
+ return new MetadataKeyInfoIterator(*this);
+ }
+
+ std::string getName() const {
+ const EntityDescriptor* parent = dynamic_cast<const EntityDescriptor*>(getParent());
+ if (parent) {
+ char* ch = toUTF8(parent->getEntityID());
+ if (ch) {
+ string s(ch);
+ delete[] ch;
+ return s;
+ }
+ }
+ return "";
+ }
+
IMPL_ID_ATTRIB(ID);
IMPL_STRING_ATTRIB(ProtocolSupportEnumeration);
IMPL_STRING_ATTRIB(ErrorURL);