From 4f4d6afe8ddda8c4ec806df6c301497e03f20daa Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Wed, 22 Sep 2010 20:10:00 +0000 Subject: [PATCH] Get rid of empty struct in each feed. --- .../metadata/impl/DiscoverableMetadataProvider.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/saml/saml2/metadata/impl/DiscoverableMetadataProvider.cpp b/saml/saml2/metadata/impl/DiscoverableMetadataProvider.cpp index 5570931..9998e2f 100644 --- a/saml/saml2/metadata/impl/DiscoverableMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/DiscoverableMetadataProvider.cpp @@ -34,12 +34,16 @@ using namespace xmltooling; using namespace std; namespace { - void disco(string& s, const EntityDescriptor* entity) { + void disco(string& s, const EntityDescriptor* entity, bool first) { if (entity) { const vector& idps = entity->getIDPSSODescriptors(); if (!idps.empty()) { auto_ptr_char entityid(entity->getEntityID()); // Open a struct and output id: entityID. + if (first) + first = false; + else + s += ",\n"; s += "{\n \"entityID\": \""; s += entityid.get(); s += '\"'; @@ -147,20 +151,20 @@ namespace { } } // Close the struct; - s += "\n},\n"; + s += "\n}"; } } } - void disco(string& s, const EntitiesDescriptor* group) { + void disco(string& s, const EntitiesDescriptor* group, bool first) { if (group) { const vector& groups = group->getEntitiesDescriptors(); for (vector::const_iterator i = groups.begin(); i != groups.end(); ++i) - disco(s, *i); + disco(s, *i, first); const vector& sites = group->getEntityDescriptors(); for (vector::const_iterator j = sites.begin(); j != sites.end(); ++j) - disco(s, *j); + disco(s, *j, first); } } } @@ -175,11 +179,12 @@ DiscoverableMetadataProvider::~DiscoverableMetadataProvider() void DiscoverableMetadataProvider::generateFeed() { + bool first = true; m_feed = "[\n"; const XMLObject* object = getMetadata(); - disco(m_feed, dynamic_cast(object)); - disco(m_feed, dynamic_cast(object)); - m_feed += " { }\n]\n"; + disco(m_feed, dynamic_cast(object), first); + disco(m_feed, dynamic_cast(object), first); + m_feed += "\n]\n"; SAMLConfig::getConfig().generateRandomBytes(m_feedTag, 4); m_feedTag = SAMLArtifact::toHex(m_feedTag); -- 2.1.4