--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarpolicy/inc/wspolicy.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,145 @@
+/*
+* 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 WS_POLICY_H
+#define WS_POLICY_H
+
+// INCLUDES
+#include <e32std.h>
+
+#include "SenDomFragment.h"
+#include <SenDomFragmentBase.h>
+#include "policyassertion.h"
+#include "xorcompositeassertion.h"
+#include "andcompositeassertion.h"
+#include "wspolicyreader.h"
+#include "wspolicyutils.h"
+// FORWARD DECLARATIONS
+class CWSPolicyReader;
+class CWSPolicyWriter;
+class CMyXml;
+/**
+ * Class: CWSPolicy
+ * Description: Public interface to a policy. A policy should be created by this class.
+ * The policy will be stored as XML-DOM tree in memory and can be used to do different
+ * kind of processings on the policy. i.e. Normalizing, intersecting and merging
+ */
+class CWSPolicy : public CBase
+ {
+
+ public:
+ //public two phase constructors
+ //still there is no purpose to create a policy with empty arguments ??
+ IMPORT_C static CWSPolicy* NewL();
+ IMPORT_C static CWSPolicy* NewLC();
+ //creates a policy from a descriptor
+ IMPORT_C static CWSPolicy* NewL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+ IMPORT_C static CWSPolicy* NewLC(TDesC8& aPolicyUri, TDesC8& aPolicy);
+ //creates a policy from CSenElement
+ IMPORT_C static CWSPolicy* NewL(CSenElement* aPolicy);
+ IMPORT_C static CWSPolicy* NewLC(CSenElement* aPolicy);
+ //creates a policy from TElement//libxml2
+ //IMPORT_C static CWSPolicy* NewL(TElement aPolicy);
+ //IMPORT_C static CWSPolicy* NewLC(TElement aPolicy);
+
+ IMPORT_C TInt SetPolicyL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+ //Normalize a policy using a registry to solve references
+ //returns ETrue if normalization is successfult else EFalse
+ IMPORT_C TBool NormalizePolicyL(CPolicyRegistry* aRegistry);
+ CSenElement* NormalizePolicy2L(CSenElement& aPolicy, CPolicyRegistry* aRegistry);
+ //Intersect a policy with second policy provided as a parameter
+ //return intersected policy
+ IMPORT_C CWSPolicy* IntersectPolicyL(CWSPolicy* aPolicy);
+ //Merge a policy with second policy provided as a parameter
+ //return merged policy
+ IMPORT_C CWSPolicy* MergePolicyL(CWSPolicy* aPolicy);
+
+ //returns ETrue if the policy is normalized else EFalse
+ IMPORT_C TBool Normalized();
+
+ IMPORT_C HBufC8* PolicyAsXmlL();
+ IMPORT_C CSenElement* PolicyL(); //codescannerwarnings
+ IMPORT_C HBufC8* NormalizedAsXmlL();
+ IMPORT_C CSenElement* NormalizedPolicy();
+ IMPORT_C TBool IsExpiredPolicyL(); //codescannerwarnings
+ IMPORT_C CSenElement* NonNormalizedPolicyL(); //codescannerwarnings
+ ~CWSPolicy();
+
+ private:
+ CWSPolicy();
+ void ConstructL();
+ TInt NormalizePL(CPolicyRegistry* aRegistry);
+ CWSPolicy* MergePL(CWSPolicy* aPolicy);
+ CWSPolicy* IntersectPL(CWSPolicy* aPolicy); //codescannerwarnings
+
+ void GeneratePolicyIdL(CSenElement* aPolicy); //codescannerwarnings
+ TPtrC8 PolicyIdL(CSenElement* aPolicy);
+ TPtrC8 PolicyNameL(CSenElement* aPolicy);
+ TInt AddPolicyNameL(CSenElement* aPolicy);
+ TInt AddPolicyMetadatEndpointL(CSenElement* aPolicy);
+ TInt AddPolicyIdL(CSenElement* aPolicy);
+ TInt AddPolicyValidityL(CSenElement* aPolicy);
+ TInt EvaluateExpiryL(CSenElement* aPolicy); //codescannerwarnings
+ CSenElement* GetExpiryTagL(); //codescannerwarnings
+ void BaseConstructL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+ void BaseConstructL(CSenElement* aPolicy);
+
+ MAssertion* NormaAssertion();
+
+ private: // Data
+
+ CWSPolicyReader* iReader;
+ CWSPolicyWriter* iWriter;
+ CMyXml* iInDoc;
+ CMyXml* iOutDoc;
+
+ CSenElement* iNormPolicy; //owned
+ CPolicyAssertion* iNormaPolicyAssert; //owned
+ TBool iNormalized;
+ TBool iExpired;
+ HBufC8* iPolicyId;
+ HBufC8* iPolicyName;
+ HBufC8* iPolicyUri;
+ TInt count;
+ TTime iExpiry;
+ };
+
+class CMyXml :public CSenDomFragment
+{
+public:
+ static CMyXml* NewL();
+ static CMyXml* NewLC();
+ ~CMyXml();
+
+ TInt ReadFromDescL(const TDesC8& aData);
+ CSenElement* XMLDocL();
+private:
+
+ CMyXml();
+ void ConstructL();
+ TBool iParsed;
+
+};
+#endif // WS_POLICY_H
+// END OF FILE