Multi-line svn commit, see body.
[shibboleth/cpp-xmltooling.git] / xmltooling / soap / impl / SOAPSchemaValidators.cpp
1 /*
2 *  Copyright 2001-2006 Internet2
3  * 
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 /**
18  * SOAPSchemaValidators.cpp
19  * 
20  * Schema validators for SOAP schema
21  */
22
23 #include "internal.h"
24 #include "exceptions.h"
25 #include "soap/SOAP.h"
26 #include "validation/ValidatorSuite.h"
27
28 using namespace soap11;
29 using namespace xmltooling;
30 using namespace std;
31
32 namespace {
33
34     XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Faultstring);
35     XMLOBJECTVALIDATOR_SIMPLE(XMLTOOL_DLLLOCAL,Faultactor);
36
37     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Faultcode);
38         XMLOBJECTVALIDATOR_REQUIRE(Faultcode,Code);
39     END_XMLOBJECTVALIDATOR;
40     
41     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Fault);
42         XMLOBJECTVALIDATOR_REQUIRE(Fault,Faultcode);
43         XMLOBJECTVALIDATOR_REQUIRE(Fault,Faultstring);
44     END_XMLOBJECTVALIDATOR;
45
46     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Envelope);
47         XMLOBJECTVALIDATOR_REQUIRE(Envelope,Body);
48     END_XMLOBJECTVALIDATOR;
49     
50 };
51
52 #define REGISTER_ELEMENT(namespaceURI,cname) \
53     q=QName(namespaceURI,cname::LOCAL_NAME); \
54     XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
55     SchemaValidators.registerValidator(q,new cname##SchemaValidator())
56     
57 #define REGISTER_TYPE(namespaceURI,cname) \
58     q=QName(namespaceURI,cname::TYPE_NAME); \
59     XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
60     SchemaValidators.registerValidator(q,new cname##SchemaValidator())
61
62 #define REGISTER_ELEMENT_NOVAL(namespaceURI,cname) \
63     q=QName(namespaceURI,cname::LOCAL_NAME); \
64     XMLObjectBuilder::registerBuilder(q,new cname##Builder());
65     
66 #define REGISTER_TYPE_NOVAL(namespaceURI,cname) \
67     q=QName(namespaceURI,cname::TYPE_NAME); \
68     XMLObjectBuilder::registerBuilder(q,new cname##Builder());
69
70 void soap11::registerSOAPClasses()
71 {
72     QName q;
73     REGISTER_ELEMENT_NOVAL(XMLConstants::SOAP11ENV_NS,Body);
74     REGISTER_ELEMENT_NOVAL(XMLConstants::SOAP11ENV_NS,Detail);
75     REGISTER_ELEMENT(XMLConstants::SOAP11ENV_NS,Envelope);
76     REGISTER_ELEMENT(XMLConstants::SOAP11ENV_NS,Fault);
77     REGISTER_ELEMENT(XMLConstants::SOAP11ENV_NS,Faultactor);
78     REGISTER_ELEMENT(XMLConstants::SOAP11ENV_NS,Faultcode);
79     REGISTER_ELEMENT(XMLConstants::SOAP11ENV_NS,Faultstring);
80     REGISTER_ELEMENT_NOVAL(XMLConstants::SOAP11ENV_NS,Header);
81     REGISTER_TYPE_NOVAL(XMLConstants::SOAP11ENV_NS,Body);
82     REGISTER_TYPE_NOVAL(XMLConstants::SOAP11ENV_NS,Detail);
83     REGISTER_TYPE(XMLConstants::SOAP11ENV_NS,Envelope);
84     REGISTER_TYPE(XMLConstants::SOAP11ENV_NS,Fault);
85     REGISTER_TYPE_NOVAL(XMLConstants::SOAP11ENV_NS,Header);
86 }