diff -r 000000000000 -r 62f9d29f7211 webservices/wsstar/wsstarpolicy/src/policyreferenceassertion.cpp --- /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; +}