Added singleton methods on typed builders.
[shibboleth/cpp-xmltooling.git] / xmltooling / signature / Signature.h
index 53bb10a..b4b6c3c 100644 (file)
@@ -27,6 +27,7 @@
 #include <xmltooling/XMLObjectBuilder.h>\r
 #include <xmltooling/signature/SigningContext.h>\r
 #include <xmltooling/signature/VerifyingContext.h>\r
+#include <xmltooling/util/XMLConstants.h>\r
 \r
 /**\r
  * @namespace xmlsignature\r
@@ -97,6 +98,17 @@ namespace xmlsignature {
          * @return empty Signature object\r
          */\r
         virtual Signature* buildObject() const;\r
+\r
+        static Signature* newSignature() {\r
+            const SignatureBuilder* b = dynamic_cast<const SignatureBuilder*>(\r
+                xmltooling::XMLObjectBuilder::getBuilder(\r
+                    xmltooling::QName(xmltooling::XMLConstants::XMLSIG_NS,Signature::LOCAL_NAME)\r
+                    )\r
+                );\r
+            if (b)\r
+                return b->buildObject();\r
+            throw xmltooling::XMLObjectException("Unable to obtain typed builder for Signature.");\r
+        }\r
     };\r
 \r
     DECL_XMLTOOLING_EXCEPTION(SignatureException,xmlsignature,xmltooling::XMLToolingException,Exceptions in signature processing);\r