webservices/wsstar/wsstarpolicy/inc/wsdlpolicyattachment.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarpolicy/inc/wsdlpolicyattachment.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Header declaration
+*
+*/
+
+
+
+
+
+
+ 
+
+#ifndef WSSTAR_WSDL_POLICY_ATTACHMENT_H
+#define WSSTAR_WSDL_POLICY_ATTACHMENT_H
+
+#include "SenElement.h"
+#include "SenBaseAttribute.h"
+#include "senpointermap.h"
+#include "SenDomFragment.h"
+
+//class CWsdlService;
+//class CWsdlPort;
+//class CWsdlBinding;
+//class CWsdlOperation;
+//class CWsdlInputOperation;
+//class CWsdlOutputOperation;
+//class CWsaEndpointReference;
+class CPolicyRegistry;
+class CWSPolicy;
+class CPolicyAssertion;
+typedef RSenPointerMap<TDesC8, CSenElement> RWsdlPolicyMap;
+
+namespace WsdlPolicyAttachment
+{
+//from wsdl
+    _LIT8(KDefinitions, "definitions");
+    _LIT8(KOperation, "operation");
+    _LIT8(KMessage, "message");
+    _LIT8(KPortType, "portType");
+    _LIT8(KPort, "port");
+    _LIT8(KBinding, "binding");
+    _LIT8(KService, "service");
+    _LIT8(KImport, "import");
+    _LIT8(KName, "name");
+    _LIT8(KElement, "element");
+    _LIT8(KType, "type");
+    _LIT8(KLocation, "location");
+    _LIT8(KInput, "input");
+    _LIT8(KOutput, "output");
+    _LIT8(KFault, "fault");
+    _LIT8(KRequired, "required");
+    _LIT8(KTargetNamespace, "targetNamespace");
+    _LIT8(KWsdlNsPrefix, "wsdl");
+    _LIT8(KWsdlNsUri, "http://schemas.xmlsoap.org/wsdl/");
+    
+//from policy    
+    _LIT8(KWspPolicyReference, "PolicyReference");
+    _LIT8(KUri, "URI");
+    _LIT8(KId, "Id");
+    _LIT8(KWsuId, "wsu:Id");
+    _LIT8(KPolicy, "Policy");
+    _LIT8(KWspNsUri, "http://schemas.xmlsoap.org/ws/2004/09/policy");
+    _LIT8(KWsuNsUri, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
+    _LIT8(KColon, ":");
+//from soap    
+    _LIT8(KAddress, "address");
+    _LIT8(KSoap12NsUri,"http://schemas.xmlsoap.org/wsdl/soap12/");
+//  {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/soap-envelope"},
+//  {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/soap-encoding"},
+//  {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
+//  {"xsd", ""}, // http://www.w3.org/2001/XMLSchema"}, // don't use this, it might conflict with xs
+//  {"xml", "http://www.w3.org/XML/1998/namespace"},
+//  {"xs", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/XMLSchema" },
+//  {"http", "http://schemas.xmlsoap.org/wsdl/http/"},
+//  {"soap", "http://schemas.xmlsoap.org/wsdl/soap/", "http://schemas.xmlsoap.org/wsdl/soap*/"},
+//  {"mime", "http://schemas.xmlsoap.org/wsdl/mime/"},
+//  {"dime", "http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/", "http://schemas.xmlsoap.org/ws/*/dime/wsdl/"},
+//  {"wsdl", "http://schemas.xmlsoap.org/wsdl/"},
+//  {"gwsdl", "http://www.gridforum.org/namespaces/2003/03/gridWSDLExtensions"},
+//  {"sd", "http://www.gridforum.org/namespaces/2003/03/serviceData"},
+}
+
+class CWsdlPolicyAttachment :public CSenDomFragment
+{
+  
+  public:
+    IMPORT_C static CWsdlPolicyAttachment* NewL(const TDesC8& aWsdlFileName);
+    IMPORT_C static CWsdlPolicyAttachment* NewLC(const TDesC8& aWsdlFileName);
+
+    virtual ~CWsdlPolicyAttachment();
+//Service policy    
+    IMPORT_C CSenElement* GetEffectiveServicePolicyL(const TDesC8& aService); //codescannerwarnings
+//Endpoint policy    
+    IMPORT_C CSenElement* GetEffectiveEndpointPolicyL(const TDesC8& aService, const TDesC8& aPort); //codescannerwarnings
+//Operation Policy    
+    IMPORT_C CSenElement* GetEffectiveOperationPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName); //codescannerwarnings
+//Message Policies    
+    IMPORT_C CSenElement* GetEffectiveInputPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName);  //codescannerwarnings
+    IMPORT_C CSenElement* GetEffectiveOutputPolicyL(const TDesC8& aService, const TDesC8& aPortName, const TDesC8& aOpName);  //codescannerwarnings
+    IMPORT_C CSenElement* GetEffectiveFaultPolicyL(/*QName aService, */const TDesC8& aPortName, const TDesC8& aOpName);
+	
+
+private:
+
+    void ConstructL(const TDesC8& aWsdlFileName);
+
+    CWsdlPolicyAttachment();
+    void CreateWsdlPolicyL(const TDesC8& aWsdlContent);  //codescannerwarnings
+    TPtrC8 GetAttributeValueL(const TDesC8& aAttribute, CSenElement* aElement);
+
+    CSenElement* GetPolicyL(const TDesC8& aUri); //search the wsdl for policy tag with specific URI    
+    
+    CSenElement* GetServicePolicyL(const TDesC8& aServiceName);
+    CSenElement* GetServiceElementL(const TDesC8& aServiceName);
+    
+    CSenElement* GetPortPolicyL(const TDesC8& aServiceName, const TDesC8& aPort);
+    CSenElement* GetPortElementL(const TDesC8& aPortName, CSenElement* aElement);    
+//    CSenElement* GetPortElementL(const TDesC8& aPortName);
+    
+    CSenElement* GetPortTypePolicyL(const TDesC8& aServiceName, const TDesC8& aPort);
+    CSenElement* GetPortTypeElementL(const TDesC8& aPortTypeName);
+    
+    CSenElement* GetBindingPolicyL(const TDesC8& aServiceName, const TDesC8& aPort);
+    CSenElement* GetBindingElementL(const TDesC8& aBindingName);
+   
+    CSenElement* GetPortTypeOperationPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName);
+    CSenElement* GetBindingOperationPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName); 
+    CSenElement* GetOperationPolicyL(const TDesC8& aOpName, CSenElement* aElement); 
+
+    CSenElement* GetMessagePolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput);
+    CSenElement* GetMessageElementL(const TDesC8& aMessageName);
+    
+    CSenElement* GetPortTypeOperationInputOutputPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput);
+    CSenElement* GetBindingOperationInputOutputPolicyL(const TDesC8& aServiceName, const TDesC8& aPort, const TDesC8& aOpName, TBool aInput);
+    CSenElement* GetOperationInputOutputPolicyL(const TDesC8& aOpName, CSenElement* aElement, TBool aInput);
+    
+    CSenElement* GetElementL(const TDesC8& aName, const TDesC8& aType);
+    CSenElement* GetElementL(const TDesC8& aName, const TDesC8& aType, CSenElement* aElement);
+    CSenElement* GetPolicyReferenceL(CSenElement* aElement);
+    CSenElement* GetEffectivePolicyL(const TDesC8& aUri);
+    CWSPolicy* GetEffectivePolicyL(RPointerArray<CSenElement>& aPolicyArray, CPolicyRegistry* aReg);
+    
+    CWSPolicy* GetPolicyToSenL(CPolicyAssertion* aPolicy);
+    CPolicyAssertion* GetSenToPolicyL(CSenElement* aPolicy, CPolicyRegistry* aReg);
+    
+private:
+//    CWsdlService* iService;
+    CSenElement* iPolicy;
+    RWsdlPolicyMap iOriginalPolicies;
+    RWsdlPolicyMap iNormalizedPolicies;
+    TFileName iWsdlFileName;
+    TBool iParsed;
+    CPolicyRegistry* iRegistry;
+        
+};
+
+
+
+#endif
\ No newline at end of file