2 * Copyright 2001-2006 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * XMLObjects representing the SAML 2.0 Metadata schema
23 #ifndef __saml2_metadata_h__
24 #define __saml2_metadata_h__
26 #include <saml/saml2/core/Assertions.h>
27 #include <saml/util/SAMLConstants.h>
29 #include <xmltooling/AttributeExtensibleXMLObject.h>
30 #include <xmltooling/ElementProxy.h>
31 #include <xmltooling/SimpleElement.h>
32 #include <xmltooling/XMLObjectBuilder.h>
33 #include <xmltooling/encryption/Encryption.h>
34 #include <xmltooling/signature/KeyInfo.h>
35 #include <xmltooling/signature/Signature.h>
36 #include <xmltooling/util/DateTime.h>
37 #include <xmltooling/validation/ValidatingXMLObject.h>
39 #define DECL_SAML2MDOBJECTBUILDER(cname) \
40 DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML20MD_NS,opensaml::SAMLConstants::SAML20MD_PREFIX)
46 * SAML 2.0 metadata namespace
50 DECL_XMLOBJECT_SIMPLE(SAML_API,AffiliateMember,ID,SAML 2.0 AffiliateMember element);
51 DECL_XMLOBJECT_SIMPLE(SAML_API,AttributeProfile,ProfileURI,SAML 2.0 AttributeProfile element);
52 DECL_XMLOBJECT_SIMPLE(SAML_API,Company,Name,SAML 2.0 Company element);
53 DECL_XMLOBJECT_SIMPLE(SAML_API,EmailAddress,Address,SAML 2.0 EmailAddress element);
54 DECL_XMLOBJECT_SIMPLE(SAML_API,GivenName,Name,SAML 2.0 GivenName element);
55 DECL_XMLOBJECT_SIMPLE(SAML_API,NameIDFormat,Format,SAML 2.0 NameIDFormat element);
56 DECL_XMLOBJECT_SIMPLE(SAML_API,SurName,Name,SAML 2.0 SurName element);
57 DECL_XMLOBJECT_SIMPLE(SAML_API,TelephoneNumber,Number,SAML 2.0 TelephoneNumber element);
59 BEGIN_XMLOBJECT(SAML_API,localizedNameType,xmltooling::SimpleElement,SAML 2.0 localizedNameType type);
60 DECL_STRING_ATTRIB(Lang,LANG);
61 /** localizedNameType local name */
62 static const XMLCh TYPE_NAME[];
65 BEGIN_XMLOBJECT(SAML_API,localizedURIType,xmltooling::SimpleElement,SAML 2.0 localizedURIType type);
66 DECL_STRING_ATTRIB(Lang,LANG);
67 /** localizedURIType local name */
68 static const XMLCh TYPE_NAME[];
71 BEGIN_XMLOBJECT(SAML_API,OrganizationName,localizedNameType,SAML 2.0 OrganizationName element);
72 DECL_XMLOBJECT_CONTENT(Name);
75 BEGIN_XMLOBJECT(SAML_API,OrganizationDisplayName,localizedNameType,SAML 2.0 OrganizationDisplayName element);
76 DECL_XMLOBJECT_CONTENT(Name);
79 BEGIN_XMLOBJECT(SAML_API,OrganizationURL,localizedURIType,SAML 2.0 OrganizationURL element);
80 DECL_XMLOBJECT_CONTENT(URL);
83 BEGIN_XMLOBJECT(SAML_API,Extensions,xmltooling::ElementProxy,SAML 2.0 Extensions element);
84 /** ExtensionsType local name */
85 static const XMLCh TYPE_NAME[];
88 BEGIN_XMLOBJECT(SAML_API,Organization,xmltooling::AttributeExtensibleXMLObject,SAML 2.0 Organization element);
89 DECL_TYPED_CHILD(Extensions);
90 DECL_TYPED_CHILDREN(OrganizationName);
91 DECL_TYPED_CHILDREN(OrganizationDisplayName);
92 DECL_TYPED_CHILDREN(OrganizationURL);
93 /** OrganizationType local name */
94 static const XMLCh TYPE_NAME[];
97 BEGIN_XMLOBJECT(SAML_API,ContactPerson,xmltooling::AttributeExtensibleXMLObject,SAML 2.0 ContactPerson element);
98 DECL_STRING_ATTRIB(ContactType,CONTACTTYPE);
99 DECL_TYPED_CHILD(Extensions);
100 DECL_TYPED_CHILD(Company);
101 DECL_TYPED_CHILD(GivenName);
102 DECL_TYPED_CHILD(SurName);
103 DECL_TYPED_CHILDREN(EmailAddress);
104 DECL_TYPED_CHILDREN(TelephoneNumber);
105 /** ContactType local name */
106 static const XMLCh TYPE_NAME[];
107 /** technical Contact Type */
108 static const XMLCh CONTACT_TECHNICAL[];
109 /** support Contact Type */
110 static const XMLCh CONTACT_SUPPORT[];
111 /** administrative Contact Type */
112 static const XMLCh CONTACT_ADMINISTRATIVE[];
113 /** billing Contact Type */
114 static const XMLCh CONTACT_BILLING[];
115 /** other Contact Type */
116 static const XMLCh CONTACT_OTHER[];
119 BEGIN_XMLOBJECT(SAML_API,AdditionalMetadataLocation,xmltooling::SimpleElement,SAML 2.0 AdditionalMetadataLocation element);
120 DECL_STRING_ATTRIB(Namespace,NAMESPACE);
121 DECL_XMLOBJECT_CONTENT(Location);
122 /** AdditionalMetadataLocationType local name */
123 static const XMLCh TYPE_NAME[];
126 BEGIN_XMLOBJECT(SAML_API,KeyDescriptor,xmltooling::XMLObject,SAML 2.0 KeyDescriptor element);
127 DECL_STRING_ATTRIB(Use,USE);
128 DECL_TYPED_FOREIGN_CHILD(KeyInfo,xmlsignature);
129 DECL_TYPED_FOREIGN_CHILDREN(EncryptionMethod,xmlencryption);
130 /** KeyDescriptorType local name */
131 static const XMLCh TYPE_NAME[];
132 /** encryption Key Type */
133 static const XMLCh KEYTYPE_ENCRYPTION[];
134 /** signing Key Type */
135 static const XMLCh KEYTYPE_SIGNING[];
138 BEGIN_XMLOBJECT2(SAML_API,RoleDescriptor,xmltooling::AttributeExtensibleXMLObject,SignableObject,SAML 2.0 RoleDescriptor abstract element);
139 DECL_STRING_ATTRIB(ID,ID);
140 DECL_DATETIME_ATTRIB(ValidUntil,VALIDUNTIL);
141 DECL_DATETIME_ATTRIB(CacheDuration,CACHEDURATION);
142 DECL_STRING_ATTRIB(ProtocolSupportEnumeration,PROTOCOLSUPPORTENUMERATION);
143 DECL_STRING_ATTRIB(ErrorURL,ERRORURL);
144 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
145 DECL_TYPED_CHILD(Extensions);
146 DECL_TYPED_CHILDREN(KeyDescriptor);
147 DECL_TYPED_CHILD(Organization);
148 DECL_TYPED_CHILDREN(ContactPerson);
151 BEGIN_XMLOBJECT2(SAML_API,EndpointType,xmltooling::ElementProxy,xmltooling::AttributeExtensibleXMLObject,SAML 2.0 EndpointType type);
152 DECL_STRING_ATTRIB(Binding,BINDING);
153 DECL_STRING_ATTRIB(Location,LOCATION);
154 DECL_STRING_ATTRIB(ResponseLocation,RESPONSELOCATION);
155 /** EndpointType local name */
156 static const XMLCh TYPE_NAME[];
159 BEGIN_XMLOBJECT(SAML_API,IndexedEndpointType,EndpointType,SAML 2.0 IndexedEndpointType type);
160 DECL_INTEGER_ATTRIB(Index,INDEX);
161 DECL_BOOLEAN_ATTRIB(isDefault,ISDEFAULT);
162 /** IndexedEndpointType local name */
163 static const XMLCh TYPE_NAME[];
166 BEGIN_XMLOBJECT(SAML_API,ArtifactResolutionService,IndexedEndpointType,SAML 2.0 ArtifactResolutionService element);
169 BEGIN_XMLOBJECT(SAML_API,SingleLogoutService,EndpointType,SAML 2.0 SingleLogoutService element);
172 BEGIN_XMLOBJECT(SAML_API,ManageNameIDService,EndpointType,SAML 2.0 ManageNameIDService element);
175 BEGIN_XMLOBJECT(SAML_API,SSODescriptorType,RoleDescriptor,SAML 2.0 SSODescriptorType abstract type);
176 DECL_TYPED_CHILDREN(ArtifactResolutionService);
177 DECL_TYPED_CHILDREN(SingleLogoutService);
178 DECL_TYPED_CHILDREN(ManageNameIDService);
179 DECL_TYPED_CHILDREN(NameIDFormat);
180 /** SSODescriptorType local name */
181 static const XMLCh TYPE_NAME[];
184 BEGIN_XMLOBJECT(SAML_API,SingleSignOnService,EndpointType,SAML 2.0 SingleSignOnService element);
187 BEGIN_XMLOBJECT(SAML_API,NameIDMappingService,EndpointType,SAML 2.0 NameIDMappingService element);
190 BEGIN_XMLOBJECT(SAML_API,AssertionIDRequestService,EndpointType,SAML 2.0 AssertionIDRequestService element);
193 BEGIN_XMLOBJECT(SAML_API,IDPSSODescriptor,SSODescriptorType,SAML 2.0 IDPSSODescriptor element);
194 DECL_BOOLEAN_ATTRIB(WantAuthnRequestsSigned,WANTAUTHNREQUESTSSIGNED);
195 DECL_TYPED_CHILDREN(SingleSignOnService);
196 DECL_TYPED_CHILDREN(NameIDMappingService);
197 DECL_TYPED_CHILDREN(AssertionIDRequestService);
198 DECL_TYPED_CHILDREN(AttributeProfile);
199 DECL_TYPED_FOREIGN_CHILDREN(Attribute,saml2);
200 /** IDPSSODescriptorType local name */
201 static const XMLCh TYPE_NAME[];
204 BEGIN_XMLOBJECT(SAML_API,ServiceName,localizedNameType,SAML 2.0 ServiceName element);
205 DECL_XMLOBJECT_CONTENT(Name);
208 BEGIN_XMLOBJECT(SAML_API,ServiceDescription,localizedNameType,SAML 2.0 ServiceDescription element);
209 DECL_XMLOBJECT_CONTENT(Description);
212 BEGIN_XMLOBJECT(SAML_API,RequestedAttribute,saml2::Attribute,SAML 2.0 RequestedAttribute element);
213 DECL_BOOLEAN_ATTRIB(isRequired,ISREQUIRED);
214 /** RequestedAttributeType local name */
215 static const XMLCh TYPE_NAME[];
218 BEGIN_XMLOBJECT(SAML_API,AttributeConsumingService,xmltooling::XMLObject,SAML 2.0 AttributeConsumingService element);
219 DECL_INTEGER_ATTRIB(Index,INDEX);
220 DECL_BOOLEAN_ATTRIB(isDefault,ISDEFAULT);
221 DECL_TYPED_CHILDREN(ServiceName);
222 DECL_TYPED_CHILDREN(ServiceDescription);
223 DECL_TYPED_CHILDREN(RequestedAttribute);
224 /** AttributeConsumingServiceType local name */
225 static const XMLCh TYPE_NAME[];
228 BEGIN_XMLOBJECT(SAML_API,AssertionConsumerService,IndexedEndpointType,SAML 2.0 AssertionConsumerService element);
231 BEGIN_XMLOBJECT(SAML_API,SPSSODescriptor,SSODescriptorType,SAML 2.0 SPSSODescriptor element);
232 DECL_BOOLEAN_ATTRIB(AuthnRequestsSigned,AUTHNREQUESTSSIGNED);
233 DECL_BOOLEAN_ATTRIB(WantAssertionsSigned,WANTASSERTIONSSIGNED);
234 DECL_TYPED_CHILDREN(AssertionConsumerService);
235 DECL_TYPED_CHILDREN(AttributeConsumingService);
236 /** SPSSODescriptorType local name */
237 static const XMLCh TYPE_NAME[];
240 BEGIN_XMLOBJECT(SAML_API,AuthnQueryService,EndpointType,SAML 2.0 AuthnQueryService element);
243 BEGIN_XMLOBJECT(SAML_API,AuthnAuthorityDescriptor,RoleDescriptor,SAML 2.0 AuthnAuthorityDescriptor element);
244 DECL_TYPED_CHILDREN(AuthnQueryService);
245 DECL_TYPED_CHILDREN(AssertionIDRequestService);
246 DECL_TYPED_CHILDREN(NameIDFormat);
247 /** AuthnAuthorityDescriptorType local name */
248 static const XMLCh TYPE_NAME[];
251 BEGIN_XMLOBJECT(SAML_API,AuthzService,EndpointType,SAML 2.0 AuthzService element);
254 BEGIN_XMLOBJECT(SAML_API,PDPDescriptor,RoleDescriptor,SAML 2.0 PDPDescriptor element);
255 DECL_TYPED_CHILDREN(AuthzService);
256 DECL_TYPED_CHILDREN(AssertionIDRequestService);
257 DECL_TYPED_CHILDREN(NameIDFormat);
258 /** PDPDescriptorType local name */
259 static const XMLCh TYPE_NAME[];
262 BEGIN_XMLOBJECT(SAML_API,AttributeService,EndpointType,SAML 2.0 AttributeService element);
265 BEGIN_XMLOBJECT(SAML_API,AttributeAuthorityDescriptor,RoleDescriptor,SAML 2.0 AttributeAuthorityDescriptor element);
266 DECL_TYPED_CHILDREN(AttributeService);
267 DECL_TYPED_CHILDREN(AssertionIDRequestService);
268 DECL_TYPED_CHILDREN(NameIDFormat);
269 DECL_TYPED_CHILDREN(AttributeProfile);
270 DECL_TYPED_FOREIGN_CHILDREN(Attribute,saml2);
271 /** AttributeAuthorityDescriptorType local name */
272 static const XMLCh TYPE_NAME[];
275 BEGIN_XMLOBJECT2(SAML_API,AffiliationDescriptor,xmltooling::AttributeExtensibleXMLObject,SignableObject,SAML 2.0 AffiliationDescriptor element);
276 DECL_STRING_ATTRIB(ID,ID);
277 DECL_STRING_ATTRIB(AffiliationOwnerID,AFFILIATIONOWNERID);
278 DECL_DATETIME_ATTRIB(ValidUntil,VALIDUNTIL);
279 DECL_DATETIME_ATTRIB(CacheDuration,CACHEDURATION);
280 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
281 DECL_TYPED_CHILD(Extensions);
282 DECL_TYPED_CHILDREN(AffiliateMember);
283 DECL_TYPED_CHILDREN(KeyDescriptor);
284 /** AffiliationDescriptorType local name */
285 static const XMLCh TYPE_NAME[];
288 BEGIN_XMLOBJECT2(SAML_API,EntityDescriptor,xmltooling::AttributeExtensibleXMLObject,SignableObject,SAML 2.0 EntityDescriptor element);
289 DECL_STRING_ATTRIB(ID,ID);
290 DECL_STRING_ATTRIB(EntityID,ENTITYID);
291 DECL_DATETIME_ATTRIB(ValidUntil,VALIDUNTIL);
292 DECL_DATETIME_ATTRIB(CacheDuration,CACHEDURATION);
293 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
294 DECL_TYPED_CHILD(Extensions);
295 DECL_TYPED_CHILD(AffiliationDescriptor);
296 DECL_TYPED_CHILDREN(RoleDescriptor);
297 DECL_TYPED_CHILDREN(IDPSSODescriptor);
298 DECL_TYPED_CHILDREN(SPSSODescriptor);
299 DECL_TYPED_CHILDREN(AuthnAuthorityDescriptor);
300 DECL_TYPED_CHILDREN(AttributeAuthorityDescriptor);
301 DECL_TYPED_CHILDREN(PDPDescriptor);
302 /** EntityDescriptorType local name */
303 static const XMLCh TYPE_NAME[];
306 BEGIN_XMLOBJECT(SAML_API,EntitiesDescriptor,SignableObject,SAML 2.0 EntitiesDescriptor element);
307 DECL_STRING_ATTRIB(ID,ID);
308 DECL_STRING_ATTRIB(Name,NAME);
309 DECL_DATETIME_ATTRIB(ValidUntil,VALIDUNTIL);
310 DECL_DATETIME_ATTRIB(CacheDuration,CACHEDURATION);
311 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
312 DECL_TYPED_CHILD(Extensions);
313 DECL_TYPED_CHILDREN(EntityDescriptor);
314 DECL_TYPED_CHILDREN(EntitiesDescriptor);
315 /** EntitiesDescriptorType local name */
316 static const XMLCh TYPE_NAME[];
319 DECL_SAML2MDOBJECTBUILDER(AdditionalMetadataLocation);
320 DECL_SAML2MDOBJECTBUILDER(AffiliateMember);
321 DECL_SAML2MDOBJECTBUILDER(AffiliationDescriptor);
322 DECL_SAML2MDOBJECTBUILDER(ArtifactResolutionService);
323 DECL_SAML2MDOBJECTBUILDER(AssertionConsumerService);
324 DECL_SAML2MDOBJECTBUILDER(AssertionIDRequestService);
325 DECL_SAML2MDOBJECTBUILDER(AttributeAuthorityDescriptor);
326 DECL_SAML2MDOBJECTBUILDER(AttributeConsumingService);
327 DECL_SAML2MDOBJECTBUILDER(AttributeProfile);
328 DECL_SAML2MDOBJECTBUILDER(AttributeService);
329 DECL_SAML2MDOBJECTBUILDER(AuthnAuthorityDescriptor);
330 DECL_SAML2MDOBJECTBUILDER(AuthnQueryService);
331 DECL_SAML2MDOBJECTBUILDER(AuthzService);
332 DECL_SAML2MDOBJECTBUILDER(Company);
333 DECL_SAML2MDOBJECTBUILDER(ContactPerson);
334 DECL_SAML2MDOBJECTBUILDER(EmailAddress);
335 DECL_SAML2MDOBJECTBUILDER(EntitiesDescriptor);
336 DECL_SAML2MDOBJECTBUILDER(EntityDescriptor);
337 DECL_SAML2MDOBJECTBUILDER(Extensions);
338 DECL_SAML2MDOBJECTBUILDER(GivenName);
339 DECL_SAML2MDOBJECTBUILDER(IDPSSODescriptor);
340 DECL_SAML2MDOBJECTBUILDER(KeyDescriptor);
341 DECL_SAML2MDOBJECTBUILDER(ManageNameIDService);
342 DECL_SAML2MDOBJECTBUILDER(NameIDFormat);
343 DECL_SAML2MDOBJECTBUILDER(NameIDMappingService);
344 DECL_SAML2MDOBJECTBUILDER(Organization);
345 DECL_SAML2MDOBJECTBUILDER(OrganizationName);
346 DECL_SAML2MDOBJECTBUILDER(OrganizationDisplayName);
347 DECL_SAML2MDOBJECTBUILDER(OrganizationURL);
348 DECL_SAML2MDOBJECTBUILDER(PDPDescriptor);
349 DECL_SAML2MDOBJECTBUILDER(RequestedAttribute);
350 DECL_SAML2MDOBJECTBUILDER(ServiceDescription);
351 DECL_SAML2MDOBJECTBUILDER(ServiceName);
352 DECL_SAML2MDOBJECTBUILDER(SingleLogoutService);
353 DECL_SAML2MDOBJECTBUILDER(SingleSignOnService);
354 DECL_SAML2MDOBJECTBUILDER(SPSSODescriptor);
355 DECL_SAML2MDOBJECTBUILDER(SurName);
356 DECL_SAML2MDOBJECTBUILDER(TelephoneNumber);
359 * Builder for localizedNameType objects.
361 * This is customized to force the element name to be specified.
363 class SAML_API localizedNameTypeBuilder : public xmltooling::XMLObjectBuilder {
365 virtual ~localizedNameTypeBuilder() {}
366 /** Builder that allows element/type override. */
367 virtual localizedNameType* buildObject(
368 const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
371 /** Singleton builder. */
372 static localizedNameType* buildlocalizedNameType(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL) {
373 const localizedNameTypeBuilder* b = dynamic_cast<const localizedNameTypeBuilder*>(
374 XMLObjectBuilder::getBuilder(xmltooling::QName(SAMLConstants::SAML20MD_NS,localizedNameType::TYPE_NAME))
377 xmltooling::QName schemaType(SAMLConstants::SAML20MD_NS,localizedNameType::TYPE_NAME,SAMLConstants::SAML20MD_PREFIX);
378 return b->buildObject(nsURI, localName, prefix, &schemaType);
380 throw xmltooling::XMLObjectException("Unable to obtain typed builder for localizedNameType.");
385 * Builder for localizedURIType objects.
387 * This is customized to force the element name to be specified.
389 class SAML_API localizedURITypeBuilder : public xmltooling::XMLObjectBuilder {
391 virtual ~localizedURITypeBuilder() {}
392 /** Builder that allows element/type override. */
393 virtual localizedURIType* buildObject(
394 const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
397 /** Singleton builder. */
398 static localizedURIType* buildlocalizedURIType(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL) {
399 const localizedURITypeBuilder* b = dynamic_cast<const localizedURITypeBuilder*>(
400 XMLObjectBuilder::getBuilder(xmltooling::QName(SAMLConstants::SAML20MD_NS,localizedURIType::TYPE_NAME))
403 xmltooling::QName schemaType(SAMLConstants::SAML20MD_NS,localizedURIType::TYPE_NAME,SAMLConstants::SAML20MD_PREFIX);
404 return b->buildObject(nsURI, localName, prefix, &schemaType);
406 throw xmltooling::XMLObjectException("Unable to obtain typed builder for localizedURIType.");
411 * Builder for EndpointType objects.
413 * This is customized to force the element name to be specified.
415 class SAML_API EndpointTypeBuilder : public xmltooling::XMLObjectBuilder {
417 virtual ~EndpointTypeBuilder() {}
418 /** Builder that allows element/type override. */
419 virtual EndpointType* buildObject(
420 const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
423 /** Singleton builder. */
424 static EndpointType* buildEndpointType(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL) {
425 const EndpointTypeBuilder* b = dynamic_cast<const EndpointTypeBuilder*>(
426 XMLObjectBuilder::getBuilder(xmltooling::QName(SAMLConstants::SAML20MD_NS,EndpointType::TYPE_NAME))
429 xmltooling::QName schemaType(SAMLConstants::SAML20MD_NS,EndpointType::TYPE_NAME,SAMLConstants::SAML20MD_PREFIX);
430 return b->buildObject(nsURI, localName, prefix, &schemaType);
432 throw xmltooling::XMLObjectException("Unable to obtain typed builder for EndpointType.");
437 * Builder for IndexedEndpointType objects.
439 * This is customized to force the element name to be specified.
441 class SAML_API IndexedEndpointTypeBuilder : public xmltooling::XMLObjectBuilder {
443 virtual ~IndexedEndpointTypeBuilder() {}
444 /** Builder that allows element/type override. */
445 virtual IndexedEndpointType* buildObject(
446 const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
449 /** Singleton builder. */
450 static IndexedEndpointType* buildIndexedEndpointType(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL) {
451 const IndexedEndpointTypeBuilder* b = dynamic_cast<const IndexedEndpointTypeBuilder*>(
452 XMLObjectBuilder::getBuilder(xmltooling::QName(SAMLConstants::SAML20MD_NS,IndexedEndpointType::TYPE_NAME))
455 xmltooling::QName schemaType(SAMLConstants::SAML20MD_NS,IndexedEndpointType::TYPE_NAME,SAMLConstants::SAML20MD_PREFIX);
456 return b->buildObject(nsURI, localName, prefix, &schemaType);
458 throw xmltooling::XMLObjectException("Unable to obtain typed builder for IndexedEndpointType.");
463 * Registers builders and validators for SAML 2.0 Metadata classes into the runtime.
465 void SAML_API registerMetadataClasses();
468 * Validator suite for SAML 2.0 Metadata schema validation.
470 extern SAML_API xmltooling::ValidatorSuite MetadataSchemaValidators;
474 #endif /* __saml2_metadata_h__ */