--- /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 <e32base.h>
+#include <s32strm.h>
+#include "senwsdescription.h"
+#include <MSenConsumerPolicy.h>
+
+// 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