|
1 /* |
|
2 * Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Header declaration |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 #ifndef WSSTAR_WSDL_POLICY_ATTACHMENT_H |
|
26 #define WSSTAR_WSDL_POLICY_ATTACHMENT_H |
|
27 |
|
28 #include "SenElement.h" |
|
29 #include "SenBaseAttribute.h" |
|
30 #include "senpointermap.h" |
|
31 #include "SenDomFragment.h" |
|
32 |
|
33 //class CWsdlService; |
|
34 //class CWsdlPort; |
|
35 //class CWsdlBinding; |
|
36 //class CWsdlOperation; |
|
37 //class CWsdlInputOperation; |
|
38 //class CWsdlOutputOperation; |
|
39 //class CWsaEndpointReference; |
|
40 class CPolicyRegistry; |
|
41 class CWSPolicy; |
|
42 class CPolicyAssertion; |
|
43 typedef RSenPointerMap<TDesC8, CSenElement> RWsdlPolicyMap; |
|
44 |
|
45 namespace WsdlPolicyAttachment |
|
46 { |
|
47 //from wsdl |
|
48 _LIT8(KDefinitions, "definitions"); |
|
49 _LIT8(KOperation, "operation"); |
|
50 _LIT8(KMessage, "message"); |
|
51 _LIT8(KPortType, "portType"); |
|
52 _LIT8(KPort, "port"); |
|
53 _LIT8(KBinding, "binding"); |
|
54 _LIT8(KService, "service"); |
|
55 _LIT8(KImport, "import"); |
|
56 _LIT8(KName, "name"); |
|
57 _LIT8(KElement, "element"); |
|
58 _LIT8(KType, "type"); |
|
59 _LIT8(KLocation, "location"); |
|
60 _LIT8(KInput, "input"); |
|
61 _LIT8(KOutput, "output"); |
|
62 _LIT8(KFault, "fault"); |
|
63 _LIT8(KRequired, "required"); |
|
64 _LIT8(KTargetNamespace, "targetNamespace"); |
|
65 _LIT8(KWsdlNsPrefix, "wsdl"); |
|
66 _LIT8(KWsdlNsUri, "http://schemas.xmlsoap.org/wsdl/"); |
|
67 |
|
68 //from policy |
|
69 _LIT8(KWspPolicyReference, "PolicyReference"); |
|
70 _LIT8(KUri, "URI"); |
|
71 _LIT8(KId, "Id"); |
|
72 _LIT8(KWsuId, "wsu:Id"); |
|
73 _LIT8(KPolicy, "Policy"); |
|
74 _LIT8(KWspNsUri, "http://schemas.xmlsoap.org/ws/2004/09/policy"); |
|
75 _LIT8(KWsuNsUri, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); |
|
76 _LIT8(KColon, ":"); |
|
77 //from soap |
|
78 _LIT8(KAddress, "address"); |
|
79 _LIT8(KSoap12NsUri,"http://schemas.xmlsoap.org/wsdl/soap12/"); |
|
80 // {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/soap-envelope"}, |
|
81 // {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/soap-encoding"}, |
|
82 // {"xsi", "http://www.w3.org/2001/XMLSchema-instance"}, |
|
83 // {"xsd", ""}, // http://www.w3.org/2001/XMLSchema"}, // don't use this, it might conflict with xs |
|
84 // {"xml", "http://www.w3.org/XML/1998/namespace"}, |
|
85 // {"xs", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/XMLSchema" }, |
|
86 // {"http", "http://schemas.xmlsoap.org/wsdl/http/"}, |
|
87 // {"soap", "http://schemas.xmlsoap.org/wsdl/soap/", "http://schemas.xmlsoap.org/wsdl/soap*/"}, |
|
88 // {"mime", "http://schemas.xmlsoap.org/wsdl/mime/"}, |
|
89 // {"dime", "http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/", "http://schemas.xmlsoap.org/ws/*/dime/wsdl/"}, |
|
90 // {"wsdl", "http://schemas.xmlsoap.org/wsdl/"}, |
|
91 // {"gwsdl", "http://www.gridforum.org/namespaces/2003/03/gridWSDLExtensions"}, |
|
92 // {"sd", "http://www.gridforum.org/namespaces/2003/03/serviceData"}, |
|
93 } |
|
94 |
|
95 class CWsdlPolicyAttachment :public CSenDomFragment |
|
96 { |
|
97 |
|
98 public: |
|
99 IMPORT_C static CWsdlPolicyAttachment* NewL(const TDesC8& aWsdlFileName); |
|
100 IMPORT_C static CWsdlPolicyAttachment* NewLC(const TDesC8& aWsdlFileName); |
|
101 |
|
102 virtual ~CWsdlPolicyAttachment(); |
|
103 //Service policy |
|
104 IMPORT_C CSenElement* GetEffectiveServicePolicyL(const TDesC8& aService); //codescannerwarnings |
|
105 //Endpoint policy |
|
106 IMPORT_C CSenElement* GetEffectiveEndpointPolicyL(const TDesC8& aService, const TDesC8& aPort); //codescannerwarnings |
|
107 //Operation Policy |
|
108 IMPORT_C CSenElement* GetEffectiveOperationPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName); //codescannerwarnings |
|
109 //Message Policies |
|
110 IMPORT_C CSenElement* GetEffectiveInputPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName); //codescannerwarnings |
|
111 IMPORT_C CSenElement* GetEffectiveOutputPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName); //codescannerwarnings |
|
112 IMPORT_C CSenElement* GetEffectiveFaultPolicyL(/*QName aService, */const TDesC8& aPortName, const TDesC8& aOpName); |
|
113 |
|
114 |
|
115 private: |
|
116 |
|
117 void ConstructL(const TDesC8& aWsdlFileName); |
|
118 |
|
119 CWsdlPolicyAttachment(); |
|
120 void CreateWsdlPolicyL(const TDesC8& aWsdlContent); //codescannerwarnings |
|
121 TPtrC8 GetAttributeValueL(const TDesC8& aAttribute, CSenElement* aElement); |
|
122 |
|
123 CSenElement* GetPolicyL(const TDesC8& aUri); //search the wsdl for policy tag with specific URI |
|
124 |
|
125 CSenElement* GetServicePolicyL(const TDesC8& aServiceName); |
|
126 CSenElement* GetServiceElementL(const TDesC8& aServiceName); |
|
127 |
|
128 CSenElement* GetPortPolicyL(const TDesC8& aServiceName, const TDesC8& aPort); |
|
129 CSenElement* GetPortElementL(const TDesC8& aPortName, CSenElement* aElement); |
|
130 // CSenElement* GetPortElementL(const TDesC8& aPortName); |
|
131 |
|
132 CSenElement* GetPortTypePolicyL(const TDesC8& aServiceName, const TDesC8& aPort); |
|
133 CSenElement* GetPortTypeElementL(const TDesC8& aPortTypeName); |
|
134 |
|
135 CSenElement* GetBindingPolicyL(const TDesC8& aServiceName, const TDesC8& aPort); |
|
136 CSenElement* GetBindingElementL(const TDesC8& aBindingName); |
|
137 |
|
138 CSenElement* GetPortTypeOperationPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName); |
|
139 CSenElement* GetBindingOperationPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName); |
|
140 CSenElement* GetOperationPolicyL(const TDesC8& aOpName, CSenElement* aElement); |
|
141 |
|
142 CSenElement* GetMessagePolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput); |
|
143 CSenElement* GetMessageElementL(const TDesC8& aMessageName); |
|
144 |
|
145 CSenElement* GetPortTypeOperationInputOutputPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput); |
|
146 CSenElement* GetBindingOperationInputOutputPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput); |
|
147 CSenElement* GetOperationInputOutputPolicyL(const TDesC8& aOpName, CSenElement* aElement, TBool aInput); |
|
148 |
|
149 CSenElement* GetElementL(const TDesC8& aName, const TDesC8& aType); |
|
150 CSenElement* GetElementL(const TDesC8& aName, const TDesC8& aType, CSenElement* aElement); |
|
151 CSenElement* GetPolicyReferenceL(CSenElement* aElement); |
|
152 CSenElement* GetEffectivePolicyL(const TDesC8& aUri); |
|
153 CWSPolicy* GetEffectivePolicyL(RPointerArray<CSenElement>& aPolicyArray, CPolicyRegistry* aReg); |
|
154 |
|
155 CWSPolicy* GetPolicyToSenL(CPolicyAssertion* aPolicy); |
|
156 CPolicyAssertion* GetSenToPolicyL(CSenElement* aPolicy, CPolicyRegistry* aReg); |
|
157 |
|
158 private: |
|
159 // CWsdlService* iService; |
|
160 CSenElement* iPolicy; |
|
161 RWsdlPolicyMap iOriginalPolicies; |
|
162 RWsdlPolicyMap iNormalizedPolicies; |
|
163 TFileName iWsdlFileName; |
|
164 TBool iParsed; |
|
165 CPolicyRegistry* iRegistry; |
|
166 |
|
167 }; |
|
168 |
|
169 |
|
170 |
|
171 #endif |