--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarpolicy/inc/seninternalwspolicy.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,588 @@
+/*
+* Copyright (c) 2002-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 SEN_INTERNAL_WS_POLICY_H
+#define SEN_INTERNAL_WS_POLICY_H
+
+// INCLUDES
+#include <e32base.h>
+#include <s32strm.h>
+
+#include <SenFragmentBase.h>
+#include <SenDomFragmentBase.h>
+#include <SenBaseFragment.h>
+#include <SenDomFragment.h>
+
+// FORWARD DECLARATIONS
+class SenDateUtils;
+class CSenCredentialIdentifier;
+class CSenWSDescription;
+class CSenIdentityProvider;
+class CSenServiceSession;
+class CSenFacet;
+class CSenElement;
+
+class CSenWSPolicyProperties;
+class CSenWSPolicyIdentifier;
+class CSenWSDescription;
+class RSenWSPolicyPtr;
+class CSenWSPolicyMetadata;
+// CLASS DECLARATION
+
+namespace SenWSInternalPolicy
+ {
+// CONSTANTS
+
+ _LIT8(KSenWsPolicies, "SenWsPolicies");
+ _LIT8(KEndpointLocalname, "Endpoint");
+ _LIT8(KContractLocalname, "Contract");
+ _LIT8(KProviderIdLocalName, "ProviderID");
+
+ _LIT8(KMetadataEndpointLocalname, "MetadataEndpoint");
+ _LIT8(KMetadataMethodLocalname, "method");
+ _LIT8(KServicePolicyLocalName, "ServicePolicy");
+ _LIT8(KClientPolicyLocalName, "ClientPolicy");
+
+
+ _LIT8(KWsdlDocument, "definitions");
+ _LIT8(KWsdlNsPrefix, "wsdl");
+ _LIT8(KPolicyDocument, "Policy");
+ _LIT8(KPolicyNsPrefix, "wsp");
+
+ _LIT8(KSenWSPolicyId, "WsPolicyId");
+ _LIT8(KSenWSPolicyValidUntil, "ValidUntil");
+
+ _LIT8(KSenWsPolicyIdentifierLocalname,"Identifier");
+ _LIT8(KSenWsPolicyProperteisLocalname,"Properties");
+ _LIT8(KSenWSPolicyMetadata,"PolicyMetadata");
+
+ _LIT8(KWsPoliciesMaxID, "PolicyMaxID");
+ _LIT8(KWsPolicyContainer, "SenWsPolicyContainer");
+
+ }
+
+/**
+* Class implements (web) service policy functionality
+* @since Series60 3.0
+*/
+class CSenInternalWsPolicy : public CSenDomFragment
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenInternalWsPolicy* NewL();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenInternalWsPolicy* NewLC();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenInternalWsPolicy* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenInternalWsPolicy* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenInternalWsPolicy* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenInternalWsPolicy* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Constructor which copies itself from another credential.
+ *
+ * @since Series60 4.0
+ * @param aPolicy credential to copy from.
+ * @return new CSenCredential instance pointer
+ */
+ static CSenInternalWsPolicy* NewL(const CSenInternalWsPolicy& aPolicy);
+
+ /**
+ * Constructor which copies itself from another credential.
+ *
+ * @since Series60 4.0
+ * @param aPolicy credential to copy from.
+ * @return new CSenCredential instance pointer, which is left on
+ * cleanup stack.
+ */
+ static CSenInternalWsPolicy* NewLC(const CSenInternalWsPolicy& aPolicy);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSenInternalWsPolicy();
+
+ // New functions
+
+ /**
+ * Method for checking if this credential is applicable for
+ * given pattern.
+ *
+ * @since Series60 4.0
+ * @param aPattern pattern to check.
+ * @return ETrue if Credential is applicable
+ * EFalse if Credential is not applicable
+ */
+ TBool IsApplicableL(CSenWSDescription& aPattern); //codescannerwarnings
+ TBool IsApplicableL(const TDesC8& aPolicyEndpoint); //codescannerwarnings
+ TBool IsApplicableL(CSenInternalWsPolicy* aInternalPolicy); //codescannerwarnings
+ /**
+ * Method for setting CredentialIdentifier.
+ *
+ * @since Series60 4.0
+ * @param aIdentifier identifier to set.
+ */
+ void SetIdentifier(CSenWSPolicyIdentifier* aIdentifier);
+
+ /**
+ * Method for getting CredentialIdentifier.
+ *
+ * @since Series60 4.0
+ * @return Identifier for this Credentiel
+ */
+ CSenWSPolicyIdentifier& IdentifierL(); //codescannerwarnings
+
+ /**
+ * Method for setting ServiceSession for this Credential.
+ * Setting ServiceSession does build relation between this
+ * Credential and given ServiceSession.
+ *
+ * @since Series60 4.0
+ * @param aSession ServiceSession for this Credentiel
+ */
+ void SetSession(CSenServiceSession& aSession);
+
+ /**
+ * Method for getting ServiceSession which is related to this
+ * Credential.
+ *
+ * @since Series60 4.0
+ * @return ServiceSession for this Credentiel or NULL
+ * if related ServiceSession is not set
+ */
+ virtual CSenServiceSession* Session();
+
+ TBool UpdateMetadataEndpointL(CSenInternalWsPolicy* aInternalPolicy, TInt& aExist);
+
+
+ TInt AddMetadataPolicyL(CSenElement* aElement);
+ TInt UpdateMetadataPolicyL(CSenElement* aElement);
+ TInt RemoveMetadataPolicyL(const TDesC8& aUri);
+// CSenElement* WsPolicy(const CSenWSDescription& aPattern);
+ CSenElement* WsPolicyByUriL(const TDesC8& aUri);
+ CSenElement* WsPolicyByName(const TDesC8& aName);
+ TTime ValidUntilL(const TDesC8& aUri);
+
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSenInternalWsPolicy();
+
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace as UTF-8 descriptor
+ * @param aLocalName is the XML localname as UTF-8 descriptor
+ * @param aQName is the XML qualifiedname as UTF-8 descriptor
+ * @param aAttributes is the list of XML attributes
+ */
+ void ConstructL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace as UTF-8 descriptor
+ * @param aLocalName is the XML localname as UTF-8 descriptor
+ * @param aQName is the XML qualifiedname as UTF-8 descriptor
+ * @param aAttributes is the list of XML attributes
+ * @param aParent is the parent element, which may declare other
+ * namespaces.
+ */
+ void ConstructL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ *
+ * @since Series60 4.0
+ * @param aPolicy is the source credential to be copied.
+ */
+ void ConstructL(CSenInternalWsPolicy& aPolicy);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ *
+ * BaseConstructL for setting XML localname for this Credential.
+ * @since Series60 4.0
+ * @param aLocalName XML localname for this Credential
+ */
+ void ConstructL(const TDesC8& aLocalName);
+
+ // New functions
+
+ /**
+ * Setter for Credential ID
+ *
+ * @since Series60 4.0
+ * @param aId is the unique ID for this Credential
+ */
+ void SetIdL(const TDesC8& aId);
+
+ TInt PolicyCountL(); //codescannerwarnings
+ TPtrC8 ExpiryTimeL(CSenElement* aElement); //codescannerwarnings
+
+ private: // Data
+ CSenWSPolicyIdentifier* ipIdentifier;
+// CSenWSPolicyProperties* ipProperties;
+ CSenServiceSession* ipSession;
+
+ };
+
+class CSenWSPolicyProperties : public CSenDomFragment
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenWSPolicyProperties* NewL();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenWSPolicyProperties* NewLC();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenWSPolicyProperties* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenWSPolicyProperties* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenWSPolicyProperties* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenWSPolicyProperties* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSenWSPolicyProperties();
+
+ /**
+ * Sets new property.
+ *
+ * If property with given name does not exist,
+ * new property with given value will be added. Otherwise the value of
+ * existing property will be updated.
+ *
+ * @since Series60 4.0
+ * @param aName Name of the property, which can be later used
+ * to refer the given value.
+ * @param aValue Is the value of this property.
+ * @return KErrNone if no error, or some of the system wide
+ * error codes.
+ */
+ TInt SetPropertyL(const TDesC8& aName, const TDesC8& aValue);
+
+ /**
+ * Gets the value of the property behind certain name.
+ *
+ * @since Series60 4.0
+ * @param aName The name identifying this property.
+ * @param aValue A TPtrC8 reference to be filled in with the value of
+ * the property.
+ * @return KErrNone if no error, or some of the system wide
+ * error codes.
+ */
+ TInt PropertyL(const TDesC8& aName, TPtrC8& aValue);
+
+
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CSenWSPolicyProperties();
+
+ };
+
+class CSenWSPolicyIdentifier : public CSenWSPolicyProperties
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenWSPolicyIdentifier* NewL();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ */
+ static CSenWSPolicyIdentifier* NewLC();
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenWSPolicyIdentifier* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ */
+ static CSenWSPolicyIdentifier* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenWSPolicyIdentifier* NewL(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Basic constructor.
+ *
+ * @since Series60 4.0
+ * @param aNsUri is the XML namespace of this credential
+ * @param aLocalName is the XML localname of this credential
+ * @param aPrefix is the prefix of this credential
+ * @param aAttrs are the XML attributes of this credential
+ * @param aParent is the parent XML element of this credential
+ */
+ static CSenWSPolicyIdentifier* NewLC(const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes,
+ CSenElement& aParent);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSenWSPolicyIdentifier();
+
+ void SetIdL(TInt aId);
+
+ TInt IdL();
+
+ TPtrC8 ContractL(); //codescannerwarnings
+ TPtrC8 EndpointL(); //codescannerwarnings
+ TPtrC8 ProviderIdL(); //codescannerwarnings
+ TPtrC8 MetadataEndpointL(); //codescannerwarnings
+ CSenElement* MetadataEndpointElementL(); //codescannerwarnings
+
+ TInt AddMetadataEndpointL(CSenElement* aElement);
+ TInt UpdateMetadataEndpointL(CSenWSPolicyIdentifier& aIdentifier);
+
+ static TPtrC8 ElementAttribValueL(CSenElement* aElement, const TDesC8& aName);
+ static TBool HasAttributeL(CSenElement* aElement, const TDesC8& aName);
+
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSenWSPolicyIdentifier();
+ };
+
+typedef struct
+ {
+ CSenInternalWsPolicy* ipPolicy;
+ TInt iCounter;
+ } TSenWsPolicyData;
+
+class RSenWSPolicyPtr
+ {
+ public:
+ void OpenL(CSenInternalWsPolicy* apPolicy);
+ CSenInternalWsPolicy* Policy();
+ void SetPolicy(CSenInternalWsPolicy* apPolicy);
+ RSenWSPolicyPtr Clone();
+ void Close();
+ void CloseAndDestroyPolicy();
+
+ /**
+ * C++ default constructor.
+ */
+ RSenWSPolicyPtr();
+
+ private: // Data
+ TSenWsPolicyData* ipPolicyData;
+ };
+
+#endif // SEN_INTERNAL_WS_POLICY_H
+
+// End of File
+
+