[cpp-opensaml] 01/02: Linux backport: MetadataProvider inheritance

Rod Widdowson rdw at steadingsoftware.com
Tue Jan 9 05:42:41 EST 2018


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch master
in repository cpp-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-opensaml.git;a=commit;h=f715631c8dcaeb14711577ebaa80c5c295d3821b

commit f715631c8dcaeb14711577ebaa80c5c295d3821b
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Jan 9 10:01:12 2018 +0000

    Linux backport: MetadataProvider inheritance
    
    MAKE_NONCOPYABLE requires a no parameter constructor, but we really
    dont want anyone calling it, so make it private and force calling
    of the real one in all derived classes.
---
 saml/saml2/metadata/MetadataProvider.h                       | 7 +++++++
 saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp | 2 +-
 saml/saml2/metadata/impl/AbstractMetadataProvider.cpp        | 2 +-
 saml/saml2/metadata/impl/MetadataProvider.cpp                | 4 +++-
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/saml/saml2/metadata/MetadataProvider.h b/saml/saml2/metadata/MetadataProvider.h
index 8f338ee..e860040 100644
--- a/saml/saml2/metadata/MetadataProvider.h
+++ b/saml/saml2/metadata/MetadataProvider.h
@@ -68,6 +68,13 @@ namespace opensaml {
         class SAML_API MetadataProvider : public virtual xmltooling::CredentialResolver
         {
             MAKE_NONCOPYABLE(MetadataProvider);
+	    /**
+	     * Default constructor.
+	     * DO NOT CALL.  This is needed purely as syntactic sugar to keep
+	     * MAKE_NONCOPYABLE work on Linux builds.
+	     */
+	private:
+	    MetadataProvider();
         protected:
             /**
              * Constructor.
diff --git a/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp b/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
index 23b7109..85c8afd 100644
--- a/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
@@ -71,7 +71,7 @@ static const XMLCh validate[] =             UNICODE_LITERAL_8(v,a,l,i,d,a,t,e);
 
 
 AbstractDynamicMetadataProvider::AbstractDynamicMetadataProvider(bool defaultNegativeCache, const DOMElement* e)
-    : AbstractMetadataProvider(e),
+  : AbstractMetadataProvider(e), MetadataProvider(e),
       m_validate(XMLHelper::getAttrBool(e, false, validate)),
         m_id(XMLHelper::getAttrString(e, "Dynamic", id)),
         m_lock(RWLock::create()),
diff --git a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp
index 4fa8c05..1acc88c 100644
--- a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp
@@ -56,7 +56,7 @@ static const XMLCh _KeyInfoResolver[] = UNICODE_LITERAL_15(K,e,y,I,n,f,o,R,e,s,o
 static const XMLCh _type[] =            UNICODE_LITERAL_4(t,y,p,e);
 
 AbstractMetadataProvider::AbstractMetadataProvider(const DOMElement* e)
-    : ObservableMetadataProvider(e), m_lastUpdate(0),  m_resolver(nullptr), m_credentialLock(Mutex::create())
+  : ObservableMetadataProvider(e), MetadataProvider(e), m_lastUpdate(0),  m_resolver(nullptr), m_credentialLock(Mutex::create())
 {
     e = XMLHelper::getFirstChildElement(e, _KeyInfoResolver);
     if (e) {
diff --git a/saml/saml2/metadata/impl/MetadataProvider.cpp b/saml/saml2/metadata/impl/MetadataProvider.cpp
index bfd0cfe..c381aad 100644
--- a/saml/saml2/metadata/impl/MetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/MetadataProvider.cpp
@@ -92,6 +92,8 @@ static const XMLCh Exclude[] =          UNICODE_LITERAL_7(E,x,c,l,u,d,e);
 static const XMLCh Include[] =          UNICODE_LITERAL_7(I,n,c,l,u,d,e);
 static const XMLCh _type[] =            UNICODE_LITERAL_4(t,y,p,e);
 
+MetadataProvider::MetadataProvider() { throw MetadataException("Illegal constructor call");}
+
 MetadataProvider::MetadataProvider(const DOMElement* e) : m_filterContext(nullptr)
 {
 #ifdef _DEBUG
@@ -287,4 +289,4 @@ bool BatchLoadMetadataFilterContext::isBackingFile() const
 void BatchLoadMetadataFilterContext::setBackingFile(bool flag)
 {
     m_isBackingFile = flag;
-}
\ No newline at end of file
+}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list