javacommons/gcfbase/src.s60/uri.cpp
changeset 21 2a9601315dfc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/gcfbase/src.s60/uri.cpp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2009 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:  URI parser specific to symbian
+*
+*/
+
+
+
+
+#include "turi.h"
+#include "com_nokia_mj_impl_gcf_utils_URI.h"
+#include "jstringutils.h"
+#include "s60commonutils.h"
+
+using namespace java::util;
+
+JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_gcf_utils_URI__1parse
+(JNIEnv* aJni, jobject, jstring aUriString, jint aUriPortion,
+ jstring aParameterName, jintArray aErrorCache)
+{
+    JStringUtils uriString(*aJni, aUriString);
+    TUri uri;
+    TInt error = uri.Parse(uriString);
+    TPtrC uriPart(KNullDesC());
+    if (error == KErrNone)
+    {
+        switch (aUriPortion)
+        {
+        case com_nokia_mj_impl_gcf_utils_URI_PROTOCOL:
+            uriPart.Set(uri.Scheme());
+            break;
+        case com_nokia_mj_impl_gcf_utils_URI_HOST:
+            uriPart.Set(uri.Host());
+            break;
+        case com_nokia_mj_impl_gcf_utils_URI_PORT:
+            uriPart.Set(uri.Port());
+            break;
+        case com_nokia_mj_impl_gcf_utils_URI_PATH:
+            uriPart.Set(uri.Path());
+            break;
+        case com_nokia_mj_impl_gcf_utils_URI_PARAMETER:
+        {
+            JStringUtils parameterName(*aJni, aParameterName);
+            error = uri.GetParameterValue(parameterName, uriPart);
+            break;
+        }
+        case com_nokia_mj_impl_gcf_utils_URI_QUERY:
+            uriPart.Set(uri.Query());
+            break;
+        default:
+            __ASSERT_DEBUG(EFalse, User::Invariant());
+        }
+    }
+    jstring result = NULL;
+    // Return an empty string if the parameter value is not found
+    if (error == KErrNone)
+    {
+        result = S60CommonUtils::NativeToJavaString(*aJni, uriPart);
+    }
+    else
+    {
+        // Cache the error code in the array, as we can't return it
+        aJni->SetIntArrayRegion(aErrorCache, 0, 1, &error);
+    }
+    return result;
+}
+
+