--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsdescription/src/senservicepattern.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,236 @@
+/*
+* Copyright (c) 2002-2005 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 FILES
+#include "SenServicePattern.h"
+#include "senconsumerpolicy.h"
+
+namespace
+ {
+ _LIT8(KConsumerPolicyLocalName, "ConsumerPolicy");
+ }
+
+
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewL()
+ {
+ CSenServicePattern* pNew = NewLC();
+ CleanupStack::Pop();
+ return(pNew) ;
+ }
+
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewLC()
+ {
+ CSenServicePattern* pNew =
+ new (ELeave) CSenServicePattern(EServicePattern);
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL();
+ return pNew;
+ }
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewL(
+ const TDesC8& aNamespaceURI)
+ {
+ CSenServicePattern* pNew = NewLC(aNamespaceURI);
+ CleanupStack::Pop();
+ return(pNew) ;
+ }
+
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewLC(
+ const TDesC8& aNamespaceURI)
+ {
+ CSenServicePattern* pNew =
+ new (ELeave) CSenServicePattern(EServicePattern);
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL(aNamespaceURI);
+ return pNew;
+ }
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewL(const TDesC8& aEndPoint,
+ const TDesC8& aContract)
+ {
+ CSenServicePattern* pNew = NewLC(aEndPoint, aContract);
+ CleanupStack::Pop();
+ return(pNew) ;
+ }
+
+EXPORT_C CSenServicePattern* CSenServicePattern::NewLC(const TDesC8& aEndPoint,
+ const TDesC8& aContract)
+ {
+ CSenServicePattern* pNew =
+ new (ELeave) CSenServicePattern(EServicePattern);
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL(aEndPoint, aContract);
+ return pNew;
+ }
+
+EXPORT_C CSenServicePattern::CSenServicePattern(
+ MSenServiceDescription::TDescriptionClassType aType)
+: CSenXmlServiceDescription(aType)
+ {
+ }
+
+EXPORT_C CSenServicePattern::~CSenServicePattern()
+ {
+ delete iConsumerPolicy;
+ }
+
+EXPORT_C void CSenServicePattern::BaseConstructL()
+ {
+ CSenXmlServiceDescription::ConstructL();
+ // construct empty consumer policy...
+
+ // NOTE; iConsumerPolicy is, AS INTENDED, a separate XML object
+ // from the "ServicePattern", which contains it
+ iConsumerPolicy = CSenConsumerPolicy::NewL();
+ }
+
+EXPORT_C void CSenServicePattern::BaseConstructL(const TDesC8& aNamespaceURI)
+ {
+ CSenXmlServiceDescription::ConstructL(aNamespaceURI);
+ // construct empty consumer policy...
+ iConsumerPolicy = CSenConsumerPolicy::NewL();
+ }
+
+EXPORT_C void CSenServicePattern::BaseConstructL(const TDesC8& aEndPoint,
+ const TDesC8& aContract)
+ {
+ CSenXmlServiceDescription::ConstructL(aEndPoint, aContract);
+ // construct empty consumer policy...
+ iConsumerPolicy = CSenConsumerPolicy::NewL();
+ }
+
+
+EXPORT_C TBool CSenServicePattern::Matches(
+ MSenServiceDescription& aServicePattern)
+ {
+ TBool matches = CSenXmlServiceDescription::Matches(aServicePattern);
+ if(matches && aServicePattern.DescriptionClassType() == EServicePattern)
+ {
+ CSenServicePattern* pPattern = (CSenServicePattern*)&aServicePattern;
+ return iConsumerPolicy->Accepts(*(MSenConsumerPolicy*)pPattern);
+ }
+ else
+ return EFalse; // even the service descriptions wont match
+ }
+
+// from MSenConsumerPolicy
+EXPORT_C void CSenServicePattern::SetConsumerIapIdL(TUint32 aIapId)
+ {
+ iConsumerPolicy->SetIapIdL(aIapId);
+ }
+
+// getter for IAP ID
+EXPORT_C TInt CSenServicePattern::ConsumerIapId(TUint32& aCurrentIapId)
+ {
+ return iConsumerPolicy->IapId(aCurrentIapId);
+ }
+
+// setter for SNAP ID
+EXPORT_C void CSenServicePattern::SetConsumerSnapIdL(TUint32 aSnapId)
+ {
+ iConsumerPolicy->SetSnapIdL(aSnapId);
+ }
+
+// getter for SNAP ID
+EXPORT_C TInt CSenServicePattern::ConsumerSnapId(TUint32& aCurrentSnapId)
+ {
+ return iConsumerPolicy->SnapId(aCurrentSnapId);
+ }
+
+
+// Setter: overrides current values with the given values from the array
+EXPORT_C void CSenServicePattern::SetConsumerIdentityProviderIdsL(
+ CSenIdentityProviderIdArray8& aList)
+ {
+ iConsumerPolicy->SetIdentityProviderIdsL(aList);
+ }
+
+// Adder: adds a new IDP ID value at the end of the current list value(s)
+// Does not insert duplicate values.
+//
+// @return KErrAlreadyExists, if a duplicate is tried to add
+// KErrArgument if a zero-length descriptor is tried to add
+// (aProviderId.Length() == 0)
+EXPORT_C TInt CSenServicePattern::AddConsumerIdentityProviderIdL(
+ const TDesC8& aProviderId)
+ {
+ return iConsumerPolicy->AddIdentityProviderIdL(aProviderId);
+ }
+
+
+// Getter: return an empty array if no IDP:s have been spesified
+// or a list of IDP arrays if such value(s) have been set.
+EXPORT_C const CSenIdentityProviderIdArray8&
+ CSenServicePattern::ConsumerIdentityProviderIds8L()
+ {
+ return iConsumerPolicy->IdentityProviderIds8L();
+ }
+
+
+EXPORT_C TBool CSenServicePattern::AcceptsConsumerPolicy(
+ MSenConsumerPolicy& aPolicyPattern)
+ {
+ return iConsumerPolicy->Accepts(aPolicyPattern);
+ }
+
+EXPORT_C TBool CSenServicePattern::RebuildFromConsumerPolicy(
+ MSenConsumerPolicy& aTemplate)
+ {
+ return iConsumerPolicy->RebuildFrom(aTemplate);
+ }
+
+// overrides CXmlServiceDescription
+EXPORT_C void CSenServicePattern::StartElementL(
+ const TDesC8& aNsUri,
+ const TDesC8& aLocalName,
+ const TDesC8& aQName,
+ const RAttributeArray& aAttributes)
+ {
+
+ if(aLocalName == KConsumerPolicyLocalName)
+ {
+ // get rid of existing stuff
+ delete iConsumerPolicy;
+ iConsumerPolicy = NULL;
+ iConsumerPolicy = CSenConsumerPolicy::NewL();
+
+ iConsumerPolicy->SetAttributesL(aAttributes);
+ DelegateParsingL(*iConsumerPolicy);
+ }
+ else
+ {
+ CSenXmlServiceDescription::StartElementL(
+ aNsUri, aLocalName, aQName, aAttributes);
+ }
+ }
+
+EXPORT_C HBufC8* CSenServicePattern::ConsumerPolicyAsXmlL()
+ {
+ return iConsumerPolicy->AsXmlL();
+ }
+
+// End of File