1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 /*
21  * XSEC
22  *
23  * XKMSStatusImpl := Implementation for Status elements (in KeyBinding)
24  *
25  * $Id: XKMSStatusImpl.hpp 1820685 2018-01-09 17:48:51Z scantor $
26  *
27  */
28 
29 #ifndef XKMSSTATUSIMPL_INCLUDE
30 #define XKMSSTATUSIMPL_INCLUDE
31 
32 // XSEC Includes
33 
34 #include <xsec/framework/XSECDefs.hpp>
35 #include <xsec/xkms/XKMSStatus.hpp>
36 
37 #ifdef XSEC_XKMS_ENABLED
38 
39 
40 class XKMSStatusImpl : public XKMSStatus {
41 
42 public:
43 
44 	XKMSStatusImpl(
45 		const XSECEnv * env
46 	);
47 
48 	XKMSStatusImpl(
49 		const XSECEnv * env,
50 		XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * node
51 	);
52 
53 	virtual ~XKMSStatusImpl();
54 
55 	// Load elements
56 	void load();
57 
58 	// Creation
59 	XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *
60 		createBlankStatus(StatusValue status);
61 
62 	/* Getter Interface Methods */
63 	virtual StatusValue getStatusValue(void) const;
64 	virtual bool getStatusReason(StatusValue status, StatusReason reason) const;
65 
66 	/* Setter Methods */
67 	virtual void setStatusReason(StatusValue status, StatusReason reason, bool value);
68 
69 private:
70 
71 	const XSECEnv		* mp_env;
72 	XERCES_CPP_NAMESPACE_QUALIFIER DOMElement
73 							* mp_statusElement;
74 	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
75 							* mp_statusValueAttr;
76 
77 	StatusValue			m_statusValue;
78 
79 	/* Record values of each status */
80 	XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
81 						* m_statusReasons[3][4];
82 
83 
84 	// Unimplemented
85 	XKMSStatusImpl(const XKMSStatusImpl &);
86 	XKMSStatusImpl & operator = (const XKMSStatusImpl &);
87 
88 };
89 
90 #endif /* XSEC_XKMS_ENABLED */
91 #endif /* XKMSSTATUSIMPL_INCLUDE */
92