webservices/wsframework/src/senwspattern.cpp
changeset 0 62f9d29f7211
equal deleted inserted replaced
-1:000000000000 0:62f9d29f7211
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:       
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 
       
    25 // INCLUDE FILES
       
    26 #include "senwspattern.h"
       
    27 #include "senconsumerpolicy.h"
       
    28 
       
    29 namespace
       
    30     {
       
    31     _LIT8(KConsumerPolicyLocalName, "ConsumerPolicy");
       
    32     }
       
    33 
       
    34 EXPORT_C CSenWSPattern* CSenWSPattern::NewL()
       
    35     {
       
    36     CSenWSPattern* pNew = NewLC();
       
    37     CleanupStack::Pop();
       
    38     return(pNew) ;
       
    39     }
       
    40 
       
    41 EXPORT_C CSenWSPattern* CSenWSPattern::NewLC()
       
    42     {
       
    43     CSenWSPattern* pNew =
       
    44                             new (ELeave) CSenWSPattern(EWSPattern);
       
    45     CleanupStack::PushL(pNew);
       
    46     pNew->BaseConstructL();
       
    47     return pNew;
       
    48     }
       
    49 
       
    50 EXPORT_C CSenWSPattern* CSenWSPattern::NewL(
       
    51                                                 const TDesC8& aNamespaceURI)
       
    52     {
       
    53     CSenWSPattern* pNew = NewLC(aNamespaceURI);
       
    54     CleanupStack::Pop();
       
    55     return(pNew) ;
       
    56     }
       
    57 
       
    58 
       
    59 EXPORT_C CSenWSPattern* CSenWSPattern::NewLC(
       
    60                                                 const TDesC8& aNamespaceURI)
       
    61     {
       
    62     CSenWSPattern* pNew =
       
    63                             new (ELeave) CSenWSPattern(EWSPattern);
       
    64     CleanupStack::PushL(pNew);
       
    65     pNew->BaseConstructL(aNamespaceURI);
       
    66     return pNew;
       
    67     }
       
    68 
       
    69 EXPORT_C CSenWSPattern* CSenWSPattern::NewL(const TDesC8& aEndPoint,
       
    70                                                       const TDesC8& aContract)
       
    71     {
       
    72     CSenWSPattern* pNew = NewLC(aEndPoint, aContract);
       
    73     CleanupStack::Pop();
       
    74     return(pNew) ;
       
    75     }
       
    76 
       
    77 EXPORT_C CSenWSPattern* CSenWSPattern::NewLC(const TDesC8& aEndPoint,
       
    78                                                        const TDesC8& aContract)
       
    79     {
       
    80     CSenWSPattern* pNew =
       
    81                             new (ELeave) CSenWSPattern(EWSPattern);
       
    82     CleanupStack::PushL(pNew);
       
    83     pNew->BaseConstructL(aEndPoint, aContract);
       
    84     return pNew;
       
    85     }
       
    86 
       
    87 EXPORT_C CSenWSPattern::CSenWSPattern(
       
    88                         MSenServiceDescription::TDescriptionClassType aType)
       
    89 : CSenWSDescription(aType)
       
    90     {
       
    91     }
       
    92 
       
    93 EXPORT_C CSenWSPattern::~CSenWSPattern()
       
    94     {
       
    95     delete iConsumerPolicy;
       
    96     }
       
    97 
       
    98 EXPORT_C void CSenWSPattern::BaseConstructL()
       
    99     {
       
   100     CSenWSDescription::ConstructL();
       
   101     // construct empty consumer policy...
       
   102 
       
   103     // NOTE; iConsumerPolicy is, AS INTENDED, a separate XML object
       
   104     // from the "WSPattern", which contains it
       
   105     iConsumerPolicy = CSenConsumerPolicy::NewL();
       
   106     }
       
   107 
       
   108 EXPORT_C void CSenWSPattern::BaseConstructL(const TDesC8& aNamespaceURI)
       
   109     {
       
   110     CSenWSDescription::ConstructL(aNamespaceURI);
       
   111     // construct empty consumer policy...
       
   112     iConsumerPolicy = CSenConsumerPolicy::NewL();
       
   113     }
       
   114 
       
   115 EXPORT_C void CSenWSPattern::BaseConstructL(const TDesC8& aEndPoint,
       
   116                                                 const TDesC8& aContract)
       
   117     {
       
   118     CSenWSDescription::ConstructL(aEndPoint, aContract);
       
   119     // construct empty consumer policy...
       
   120     iConsumerPolicy = CSenConsumerPolicy::NewL();
       
   121     }
       
   122 
       
   123 
       
   124 EXPORT_C TBool CSenWSPattern::Matches(
       
   125                                     MSenServiceDescription& aWSPattern)
       
   126     {
       
   127     TBool matches = CSenWSDescription::Matches(aWSPattern);
       
   128     if(matches && aWSPattern.DescriptionClassType() == EWSPattern)
       
   129         {
       
   130         CSenWSPattern* pPattern = (CSenWSPattern*)&aWSPattern;
       
   131         return iConsumerPolicy->Accepts(*(MSenConsumerPolicy*)pPattern);
       
   132         }
       
   133     else
       
   134         return EFalse; // even the service descriptions wont match
       
   135     }
       
   136 
       
   137 // from MSenConsumerPolicy
       
   138 EXPORT_C void CSenWSPattern::SetConsumerIapIdL(TUint32 aIapId)
       
   139     {
       
   140     iConsumerPolicy->SetIapIdL(aIapId);
       
   141     }
       
   142 
       
   143 // getter for IAP ID
       
   144 EXPORT_C TInt CSenWSPattern::ConsumerIapId(TUint32& aCurrentIapId)
       
   145     {
       
   146     return iConsumerPolicy->IapId(aCurrentIapId);
       
   147     }
       
   148 
       
   149 EXPORT_C void CSenWSPattern::SetConsumerSnapIdL(TUint32 aSnapId)
       
   150     {
       
   151     iConsumerPolicy->SetSnapIdL(aSnapId);
       
   152     }
       
   153 
       
   154 // getter for SNAP
       
   155 EXPORT_C TInt CSenWSPattern::ConsumerSnapId(TUint32& aCurrentSnapId)
       
   156     {
       
   157     return iConsumerPolicy->SnapId(aCurrentSnapId);
       
   158     }
       
   159 
       
   160 // Setter: overrides current values with the given values from the array
       
   161 EXPORT_C void CSenWSPattern::SetConsumerIdentityProviderIdsL(
       
   162                             CSenIdentityProviderIdArray8& aList)
       
   163     {
       
   164     iConsumerPolicy->SetIdentityProviderIdsL(aList);
       
   165     }
       
   166 
       
   167 // Adder: adds a new IDP ID value at the end of the current list value(s)
       
   168 // Does not insert duplicate values.
       
   169 //
       
   170 // @return KErrAlreadyExists, if a duplicate is tried to add
       
   171 //         KErrArgument if a zero-length descriptor is tried to add
       
   172 //         (aProviderId.Length() == 0)
       
   173 EXPORT_C TInt CSenWSPattern::AddConsumerIdentityProviderIdL(
       
   174                                         const TDesC8& aProviderId)
       
   175     {
       
   176     return iConsumerPolicy->AddIdentityProviderIdL(aProviderId);
       
   177     }
       
   178 
       
   179 
       
   180 // Getter: return an empty array if no IDP:s have been spesified
       
   181 // or a list of IDP arrays if such value(s) have been set.
       
   182 EXPORT_C const CSenIdentityProviderIdArray8&
       
   183                 CSenWSPattern::ConsumerIdentityProviderIds8L()
       
   184     {
       
   185     return iConsumerPolicy->IdentityProviderIds8L();
       
   186     }
       
   187 
       
   188 
       
   189 EXPORT_C TBool CSenWSPattern::AcceptsConsumerPolicy(
       
   190                                             MSenConsumerPolicy& aPolicyPattern)
       
   191     {
       
   192     return iConsumerPolicy->Accepts(aPolicyPattern);
       
   193     }
       
   194 
       
   195 EXPORT_C TBool CSenWSPattern::RebuildFromConsumerPolicy(
       
   196                                                 MSenConsumerPolicy& aTemplate)
       
   197     {
       
   198     return iConsumerPolicy->RebuildFrom(aTemplate);
       
   199     }
       
   200 
       
   201 // overrides CWSDescription
       
   202 EXPORT_C void CSenWSPattern::StartElementL(
       
   203                                     const TDesC8& aNsUri,
       
   204                                     const TDesC8& aLocalName,
       
   205                                     const TDesC8& aQName,
       
   206                                     const RAttributeArray& aAttributes)
       
   207     {
       
   208 
       
   209     if(aLocalName == KConsumerPolicyLocalName)
       
   210         {
       
   211         // get rid of existing stuff
       
   212         delete iConsumerPolicy;
       
   213         iConsumerPolicy = NULL;
       
   214         iConsumerPolicy = CSenConsumerPolicy::NewL();
       
   215 
       
   216         iConsumerPolicy->SetAttributesL(aAttributes);
       
   217         DelegateParsingL(*iConsumerPolicy);
       
   218         }
       
   219     else
       
   220         {
       
   221         CSenWSDescription::StartElementL(
       
   222             aNsUri, aLocalName, aQName, aAttributes);
       
   223         }
       
   224     }
       
   225 
       
   226 EXPORT_C HBufC8* CSenWSPattern::ConsumerPolicyAsXmlL()
       
   227     {
       
   228     return iConsumerPolicy->AsXmlL();
       
   229     }
       
   230 
       
   231 EXPORT_C TBool CSenWSPattern::HasSuperClass( TDescriptionClassType aType )
       
   232     {
       
   233     if( aType == MSenServiceDescription::EWSDescription ) // direct superclass!
       
   234         {
       
   235         // If asked type is the know *direct* father/mother, return true:
       
   236         return ETrue;
       
   237         }
       
   238     else
       
   239         {
       
   240         // Otherwise, ask from superclass (chain, recursively)
       
   241         return CSenWSDescription::HasSuperClass( aType );
       
   242         }
       
   243     }
       
   244 
       
   245 
       
   246 
       
   247 // End of File