webservices/wsstar/wsstarpolicy/inc/wsdlpolicyattachment.h
changeset 0 62f9d29f7211
equal deleted inserted replaced
-1:000000000000 0:62f9d29f7211
       
     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