webservices/wsstar/wsstarpolicy/src/policyreferenceassertion.cpp
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarpolicy/src/policyreferenceassertion.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2009 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:      
+*
+*/
+
+
+
+
+
+
+
+
+
+#include "policyreferenceassertion.h"
+#include "wspolicyregistry.h"
+#include "policyassertion.h"
+#include "wspolicyreader.h"
+CPolicyReferenceAssertion* CPolicyReferenceAssertion::NewL(TDesC8& aUri)
+{
+    CPolicyReferenceAssertion* pSelf = CPolicyReferenceAssertion::NewLC(aUri);
+    CleanupStack::Pop(pSelf);
+    return pSelf;
+    
+}
+CPolicyReferenceAssertion* CPolicyReferenceAssertion::NewLC(TDesC8& aUri)
+{
+    CPolicyReferenceAssertion* pSelf = new (ELeave) CPolicyReferenceAssertion();
+    CleanupStack::PushL(pSelf);
+    pSelf->ConstructL(aUri);
+    return pSelf;
+    
+}
+CPolicyReferenceAssertion* CPolicyReferenceAssertion::NewL(CPolicyReferenceAssertion* aValue)
+{
+    CPolicyReferenceAssertion* pSelf = CPolicyReferenceAssertion::NewLC(aValue);
+    CleanupStack::Pop(pSelf);
+    return pSelf;
+    
+}
+CPolicyReferenceAssertion* CPolicyReferenceAssertion::NewLC(CPolicyReferenceAssertion* aValue)
+{
+    CPolicyReferenceAssertion* pSelf = new (ELeave) CPolicyReferenceAssertion();
+    CleanupStack::PushL(pSelf);
+    pSelf->ConstructL(aValue);
+    return pSelf;
+    
+}
+CPolicyReferenceAssertion::~CPolicyReferenceAssertion()
+{
+    delete iUri;    
+}
+CPolicyReferenceAssertion::CPolicyReferenceAssertion()
+:iUri(NULL)
+{
+    
+}
+void CPolicyReferenceAssertion::ConstructL(TDesC8& aUri)
+{
+    if(aUri.Length() > 0)
+    {
+        iUri = aUri.AllocL();
+    }
+}
+TPtrC8 CPolicyReferenceAssertion::PolicyUri()
+{
+    if(iUri && iUri->Length() > 0)
+    {
+        TPtrC8 p = iUri->Des();
+        return p;
+    }
+    else
+    {
+        return KNullDesC8();
+    }
+}
+
+void CPolicyReferenceAssertion::ConstructL(CPolicyReferenceAssertion* aValue)
+{
+    if(aValue->PolicyUri().Length() > 0)
+    {
+        TPtrC8 uri = aValue->PolicyUri();
+        ConstructL(uri);
+    }
+}
+void CPolicyReferenceAssertion::AddTerm(MAssertion* /*aAssertion*/)
+{
+    
+}
+void CPolicyReferenceAssertion::AddTerms(RPolicyTerms& /*aAssertions*/)
+{
+    
+}
+void CPolicyReferenceAssertion::AddTermCopyL(MAssertion* /*aAssertion*/)
+{
+    
+}
+void CPolicyReferenceAssertion::AddTermsCopyL(RPolicyTerms& /*aAssertions*/)
+{
+    
+}
+void CPolicyReferenceAssertion::MoveTermL(RPolicyTerms& /*aAssertions*/)
+{
+    
+}
+void CPolicyReferenceAssertion::MoveTermsL(RPolicyTerms& /*aAssertions*/)
+{
+    
+}
+MAssertion* CPolicyReferenceAssertion::GetParent()
+{
+  return NULL;  
+}
+TBool CPolicyReferenceAssertion::HasParent()
+{
+    return EFalse;
+}
+TBool CPolicyReferenceAssertion::IsEmpty()
+{
+    return ETrue;
+}
+TBool CPolicyReferenceAssertion::IsNormalized()
+{
+    return EFalse;
+}
+TBool CPolicyReferenceAssertion::Remove(MAssertion* /*aAssertion*/)
+{
+    return EFalse;
+}
+void CPolicyReferenceAssertion::SetNormalized(TBool /*aFlag*/)
+{
+    
+}
+void CPolicyReferenceAssertion::SetParent(MAssertion* /*aParent*/)
+{
+    
+}
+TInt CPolicyReferenceAssertion::Size()
+{
+    return KErrNone;
+}
+TAssertionType  CPolicyReferenceAssertion::Type()
+{
+    return EPolicyReferenceType;    
+}
+
+MAssertion* CPolicyReferenceAssertion::IntersectL(MAssertion* /*aAssertion*/, CPolicyRegistry* /*aRegistry*/)
+{
+    return NULL;
+}
+MAssertion* CPolicyReferenceAssertion::IntersectL(MAssertion* /*aAssertion*/)
+{
+    return NULL;
+}
+MAssertion* CPolicyReferenceAssertion::MergeL(MAssertion* /*aAssertion*/, CPolicyRegistry* /*aRegistry*/)
+{
+    return NULL;
+}
+MAssertion* CPolicyReferenceAssertion::MergeL(MAssertion* /*aAssertion*/)
+{
+    return NULL;
+}
+MAssertion* CPolicyReferenceAssertion::NormalizeL(CPolicyRegistry* aRegistry)
+{
+    if (aRegistry == NULL) 
+    {
+        return NULL;
+    }
+
+    _LIT8(KHash, "#");
+    HBufC8* pRippedUri = NULL;	//CodeScannerWarnings
+    MAssertion* result = NULL;
+    
+    TPtrC8 uri = PolicyUri();
+    
+    if(uri.Left(1).Compare(KHash) == 0)
+    {
+        pRippedUri = uri.Right(uri.Length()-1).AllocL(); 
+        CleanupStack::PushL(pRippedUri);
+        if(pRippedUri->Length() > 0)
+        {
+            
+            CSenElement* targetPolicy = aRegistry->LookupPolicy(pRippedUri->Des());
+            if (targetPolicy == NULL)
+            {
+                result = NULL;;
+            }
+            else
+            {
+                CWSPolicyReader* reader = CWSPolicyReader::NewLC();
+                CPolicyAssertion* policy = reader->GetPolicyL(targetPolicy);
+                CleanupStack::PopAndDestroy();
+                CleanupStack::PushL( policy );
+                result = policy->NormalizeL( aRegistry );
+                CleanupStack::PopAndDestroy( policy );
+            }
+            
+        }
+        CleanupStack::PopAndDestroy(pRippedUri);
+    }
+    return result;
+
+}
+MAssertion* CPolicyReferenceAssertion::NormalizeL()
+{
+    return NULL;
+}