diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/senwspattern.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/senwspattern.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,234 @@ +/* +* 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: Class derives the XML service description and further extends +* it by adding consumer policy interface implementation. +* +*/ + + + + + + + + +#ifndef SEN_SERVICE_PATTERN_H +#define SEN_SERVICE_PATTERN_H + +// INCLUDES +#include +#include +#include "senwsdescription.h" +#include + +// FORWARD DECLARATIONS +class CSenConsumerPolicy; + +// CLASS DECLARATION + +/** +* Class derives the WS description and further extends +* it by implementing consumer policy interface. +* +* WS pattern is typically used by Basic Web Service consumers, +* which often know, which policy to use in the communication with +* certain Web Service Provider (WSP). +* +* For example, a Basic Web Service consumer application might want +* strictly define certain Internet Access Point (IAP) to be used when +* initializing new service connection. Such an application can simply +* instantiate new WSPattern and set pre-known IAP ID into it. +* +* The main purpose of this class is to simplify the initialization +* of service connections for Basic Web Services. +* +* It is important to note, that all the consumer policy information entered +* via WSPattern extending the MSenConsumerPolicy is treated +* in "policy-per-client" terms. In other words, any consumer +* policy information will not be stored for latter use of other +* applications (even they might happen to use same WSP and contract!). +* +* This is due the nature of Service Pattern: it acts as a consumer +* originated filter, after which a service will be resolved. +* +* Any service which "meets" the Service Pattern "constraints", is +* considered as a "match", because such service accepts this +* (search) pattern. +* +* @lib SenServDesc.lib +* @since Series60 3.0 +*/ +class CSenWSPattern : public CSenWSDescription, public MSenConsumerPolicy + + { + public: // Constructors and destructor + + /** + * Standard 2 phase constructors + */ + IMPORT_C static CSenWSPattern* NewL(); + + /** + * Standard 2 phase constructors + */ + IMPORT_C static CSenWSPattern* NewLC(); + + /** + * Standard 2 phase constructor + * @param aNamespaceURI namespace URI for the service pattern. + */ + IMPORT_C static CSenWSPattern* NewL(const TDesC8& aNamespaceURI); + + /** + * Standard 2 phase constructor + * @param aNamespaceURI namespace URI for the service pattern. + */ + IMPORT_C static CSenWSPattern* NewLC(const TDesC8& aNamespaceURI); + + /** + * Standard 2 phase constructor. + * @param aEndPoint service pattern endpoint. + * @param aContract service pattern contract. + */ + IMPORT_C static CSenWSPattern* NewL( const TDesC8& aEndPoint, + const TDesC8& aContract ); + + /** + * Standard 2 phase constructor. + * @param aEndPoint service pattern endpoint. + * @param aContract service pattern contract. + */ + IMPORT_C static CSenWSPattern* NewLC( const TDesC8& aEndPoint, + const TDesC8& aContract ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CSenWSPattern(); + + // New functions + + /** + * Convenience method for writing out the consumer policy as XML + * in UTF-8 form. + * @since Series60 3.0 + * @return consumer policy as UTF-8 form XML. + */ + IMPORT_C HBufC8* ConsumerPolicyAsXmlL(); + + // Functions from base classes + + // From CSenWSDescription + + /** + * Compares that both service description and possible + * policy inside of it matches with this instance. + * @since Series60 3.0 + * @param aPattern the service description to compare to + * @return ETrue both service description and policy information + * matches, otherwise EFalse. If some value is not set + * in current instance, it is not compared. + */ + IMPORT_C TBool Matches(MSenServiceDescription& aWSPattern); + + /** + * Callback function which implements the XML content handler interface. + * Parses the consumer policies independently. + * @since Series60 3.0 + * @param aNsUri The namespace URI of the new element + * @param aLocalName The local name of the new element + * @param aQName The qualified name of the new element + * @param aAttributes The attributes of the new element + */ + IMPORT_C void StartElementL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes); + + // From MSenConsumerPolicy + IMPORT_C virtual void SetConsumerIapIdL(TUint32 aIapId); + IMPORT_C virtual TInt ConsumerIapId(TUint32& aCurrentIapId); + IMPORT_C virtual void SetConsumerIdentityProviderIdsL( + CSenIdentityProviderIdArray8& aList); + + IMPORT_C virtual TInt AddConsumerIdentityProviderIdL( + const TDesC8& aProviderId); + + IMPORT_C virtual const CSenIdentityProviderIdArray8& + ConsumerIdentityProviderIds8L(); + + IMPORT_C virtual TBool AcceptsConsumerPolicy( + MSenConsumerPolicy& aPolicyPattern); + + IMPORT_C virtual TInt RebuildFromConsumerPolicy( + MSenConsumerPolicy& aTemplate); + + IMPORT_C virtual TBool HasSuperClass( TDescriptionClassType aType ); + + protected: // New functions + + /** + * C++ constructor. + * @since Series60 3.0 + * @param aType enumeration defininng the type of this class. + */ + IMPORT_C CSenWSPattern( + MSenServiceDescription::TDescriptionClassType aType); + + /** + * Base constructor offered to sub class implementations. + * @since Series60 3.0 + */ + IMPORT_C void BaseConstructL(); + + /** + * Base constructor offered to sub class implementations. + * @since Series60 3.0 + * @param aNamespaceURI the localname for XML element representation + * of this class. + */ + IMPORT_C void BaseConstructL(const TDesC8& aNamespaceURI); + + /** + * Base constructor offered to sub class implementations. + * @since Series60 3.0 + * @param aEndPoint is the actual endpoint to the service + * @param aContract of the service, typically some URI + */ + IMPORT_C void BaseConstructL(const TDesC8& aEndPoint, const TDesC8& aContract); + + public: + /** + * Sets the Consumer SNAP ID. + * @param aSnapId A TUint32 consumer SNAP ID + */ + IMPORT_C virtual void SetConsumerSnapIdL(TUint32 aSnapId); + /** + * Gets the Consumer SNAP ID. + * @param aCurrentSnapId A TUint32 reference to be filled in with the + * value of the SNAP ID. + * @return KErrNone if no error, or some of the system + * wide error codes. + */ + IMPORT_C virtual TInt ConsumerSnapId(TUint32& aCurrentSnapId); + + protected: // Data + + // Consumer policy class instance, used as a delegate in parsing + CSenConsumerPolicy* iConsumerPolicy; + }; + +#endif SEN_SERVICE_PATTERN_H + +// End of File \ No newline at end of file