--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javaregistry/legacy/server/src/javaattributes.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,293 @@
+/*
+* Copyright (c) 2006 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: CJavaAttribute implementation
+*
+*/
+
+
+#include <s32mem.h>
+#include "javaattributes.h"
+
+using namespace Java::Manager::Registry;
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ---------------------------------------------------------------------------
+// CJavaAttribute::NewL
+// Constructs a CJavaAttributes object.
+// ---------------------------------------------------------------------------
+EXPORT_C CJavaAttributes* CJavaAttributes::NewL()
+{
+ CJavaAttributes* self = CJavaAttributes::NewLC();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::NewLC
+// Constructs a CJavaAttributes object.
+// ---------------------------------------------------------------------------
+EXPORT_C CJavaAttributes* CJavaAttributes::NewLC()
+{
+ CJavaAttributes* self = new(ELeave) CJavaAttributes();
+ CleanupStack::PushL(self);
+ self->ConstructL(NULL);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttribute::NewL
+// Constructs a CJavaAttributes object.
+// ---------------------------------------------------------------------------
+EXPORT_C CJavaAttributes* CJavaAttributes::NewL(TDesC8* aBuffer)
+{
+ CJavaAttributes* self = CJavaAttributes::NewLC(aBuffer);
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttribute::NewLC
+// Constructs a CJavaAttribute object.
+// ---------------------------------------------------------------------------
+EXPORT_C CJavaAttributes* CJavaAttributes::NewLC(TDesC8* aBuffer)
+{
+ CJavaAttributes* self = new(ELeave) CJavaAttributes();
+ CleanupStack::PushL(self);
+ self->ConstructL(aBuffer);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttribute::ConstructL
+// ---------------------------------------------------------------------------
+void CJavaAttributes::ConstructL(TDesC8* aBuffer)
+{
+ if (aBuffer)
+ {
+ RDesReadStream stream(*aBuffer);
+ CleanupClosePushL(stream);
+ stream >> *this;
+ CleanupStack::PopAndDestroy(&stream);
+ }
+ else
+ {
+ iAttributes.Reset();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttribute::ConstructL
+// ---------------------------------------------------------------------------
+EXPORT_C CJavaAttributes::~CJavaAttributes()
+{
+ DeleteAttributes();
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::Count
+// Returns TInt
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CJavaAttributes::Count() const
+{
+ return iAttributes.Count();
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::GetAttribute
+// Returns MJavaAttribute&
+// ---------------------------------------------------------------------------
+EXPORT_C const MJavaAttribute* CJavaAttributes::
+Attribute(const TDesC& aName) const
+{
+ TInt i = 0;
+ while (i < iAttributes.Count())
+ {
+ if (iAttributes[i]->Name() == aName)
+ {
+ return iAttributes[i];
+ }
+ else
+ {
+ i = i + 1;
+ }
+ }
+ return NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::GetAttributes
+// Returns RPointerArray&
+// ---------------------------------------------------------------------------
+EXPORT_C const RPointerArray< MJavaAttribute >&
+CJavaAttributes::Attributes() const
+{
+ return iAttributes;
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::AddAttributeL
+// Returns TInt
+// ---------------------------------------------------------------------------
+EXPORT_C void CJavaAttributes::AddAttributeL(MJavaAttribute* aAttribute)
+{
+ TInt i = 0;
+ MJavaAttribute* attr = NULL;
+ // Check if attribute with the same name exist, if yes delete it.
+ while (i < iAttributes.Count())
+ {
+ if (iAttributes[i]->Name() == aAttribute->Name())
+ {
+ attr = iAttributes[i];
+ break;
+ }
+ i = i + 1;
+ }
+ if (attr)
+ {
+ delete attr;
+ iAttributes.Remove(i);
+ }
+ TInt err = iAttributes.Append(aAttribute);
+ if (err)
+ {
+ delete aAttribute; //delete not added attribute
+ User::Leave(err);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::AddAttributeL
+// Returns TInt
+// ---------------------------------------------------------------------------
+EXPORT_C void CJavaAttributes::
+AddAttributeL(const TDesC& aName, const TDesC& aValue, TBool aTrusted)
+{
+ CJavaAttribute* attribute = CJavaAttribute::NewL(aName, aValue, aTrusted);
+ AddAttributeL(attribute);
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::DeleteAttributes
+// ---------------------------------------------------------------------------
+EXPORT_C void CJavaAttributes::DeleteAttributes()
+{
+ TInt count = iAttributes.Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ delete iAttributes[i];
+ iAttributes[i] = NULL;
+ }
+ iAttributes.ResetAndDestroy();
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::ExternalizeL
+// ---------------------------------------------------------------------------
+void CJavaAttributes::ExternalizeL(RWriteStream& aStream) const
+{
+ TInt32 attr_count = iAttributes.Count();
+ aStream << attr_count;
+ for (TInt i = 0; i < attr_count; i++)
+ {
+ MJavaAttribute* attr = iAttributes[i];
+ TInt32 val = attr->Name().Length();
+ aStream << val << attr->Name();
+ val = attr->Value().Length();
+ aStream << val << attr->Value();
+ val = attr->Trusted();
+ aStream << val;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::InternalizeL
+// ---------------------------------------------------------------------------
+void CJavaAttributes::InternalizeL(RReadStream& aStream)
+{
+ if (iAttributes.Count()) // if exist some attributes delete it
+ {
+ DeleteAttributes();
+ }
+ TInt32 count;
+ aStream >> count; // read number of attributes
+ for (TInt i = 0; i < count; i++)
+ {
+ HBufC* name;
+ HBufC* value;
+ TInt32 trusted;
+ TInt32 len;
+ aStream >> len;
+ name = HBufC::NewLC(aStream, len);
+ aStream >> len;
+ value = HBufC::NewLC(aStream, len);
+ aStream >> trusted;
+ MJavaAttribute* attr = CJavaAttribute::
+ NewL(*name, *value, STATIC_CAST(TBool, trusted));
+ CleanupStack::PopAndDestroy(value); //value
+ CleanupStack::PopAndDestroy(name); // name
+ TInt err = iAttributes.Append(attr);
+ if (err)
+ {
+ DeleteAttributes(); // delete appended properities
+ delete attr; // delete not appended property
+ User::Leave(err);
+ }
+ }
+
+}
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::Size
+// Returns TInt;
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CJavaAttributes::Size() const
+{
+
+ TInt size = sizeof(TInt32); // size of count
+ TInt count = iAttributes.Count();
+ TInt boolsize = sizeof(TBool);
+ TInt int32size = sizeof(TInt32);
+ // size of all value "IsTrusted" and size of stored size
+ size += count * (boolsize + (int32size * 2));
+ // add sizes of name and value of all attributes
+ for (TInt i = 0; i < count; i++)
+ {
+ MJavaAttribute* attr = iAttributes[i];
+ size += attr->Name().Size();
+ size += attr->Value().Size();
+ }
+ return size;
+}
+
+
+// ---------------------------------------------------------------------------
+// CJavaAttributes::SerializedAttributesL
+// Returns HBufC8* serialized CJavaAttributes object;
+// ---------------------------------------------------------------------------
+EXPORT_C HBufC8* CJavaAttributes::SerializedAttributesL() const
+{
+ TInt32 size = Size();
+ HBufC8* buffer = HBufC8::NewLC(size);
+ TPtr8 des8 = buffer->Des();
+ RDesWriteStream stream(des8);
+ CleanupClosePushL(stream);
+ stream << *this;
+ stream.CommitL();
+ CleanupStack::PopAndDestroy(&stream); // stream
+ CleanupStack::Pop(buffer); // buffer
+ return buffer;
+}
+
+// End of File