javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java
changeset 79 2f468c1958d0
parent 76 4ad59aaee882
--- a/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java	Fri Sep 17 08:28:21 2010 +0300
+++ b/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java	Mon Oct 04 00:10:53 2010 +0300
@@ -25,7 +25,7 @@
 import com.nokia.mj.impl.rt.ui.RuntimeUi;
 import com.nokia.mj.impl.rt.ui.RuntimeUiFactory;
 
-import com.nokia.mj.impl.rt.midp.SchemeHandlerBase;
+import com.nokia.mj.impl.rt.midp.SchemeHandler;
 
 import com.nokia.mj.impl.rt.support.ApplicationInfo;
 
@@ -61,6 +61,8 @@
 
     private static final int DOMAIN_MANUFACTURER_OR_OPERATOR = 1;
 
+    private static final String JRT_SCHEME = "jrt:";
+
     /*** ----------------------------- PUBLIC ------------------------------ */
 
     /**
@@ -163,7 +165,7 @@
         String domain = appInfo.getProtectionDomain();
 
         // Handling for java scheme.
-        /*if (url.startsWith("java://"))
+        if (url.startsWith(JRT_SCHEME))
         {
             String handlerName = parseHandlerName(url);
 
@@ -174,7 +176,7 @@
             }
 
             return invokeSchemeHandler(handlerName, url);
-        }*/
+        }
 
         // If the platform request is used to start arbitrary native application,
         // check that MIDlet is in manufacturer or operator domain
@@ -376,21 +378,17 @@
 
     private String parseHandlerName(String url) throws ConnectionNotFoundException
     {
-        // Parse handler name from URL. Remove java:// prefix.
-        String handlerName = url.substring(7).trim();
+        // Parse handler name from URL. Remove JRT_SCHEME prefix.
+        String handlerName = url.substring(JRT_SCHEME.length()).trim();
 
         // name format: handlername?query
         int nameEndIndex = handlerName.indexOf('?');
 
         if (nameEndIndex != -1)
         {
-            handlerName = handlerName.substring(0, nameEndIndex);
-            return handlerName;
+            return handlerName.substring(0, nameEndIndex);
         }
-        else
-        {
-            throw new ConnectionNotFoundException("Handler not found for URL");
-        }
+        throw new ConnectionNotFoundException("Handler not found for URL: " + url);
     }
 
     private boolean invokeSchemeHandler(String handlerName, String url)
@@ -400,18 +398,19 @@
         {
             // Avoid loading whatever class from the system using handler
             // as package name.
-            Class clazz = Class.forName("com.nokia.mj.impl.rt." + handlerName + ".SchemeHandler");
+            Class clazz = Class.forName("com.nokia.mj.impl.rt." + handlerName + ".SchemeHandlerImpl");
 
-            SchemeHandlerBase handler = (SchemeHandlerBase)clazz.newInstance();
+            SchemeHandler handler = (SchemeHandler)clazz.newInstance();
 
             handler.execute(url);
             return false;  // No need to close MIDlet.
         }
         catch (Throwable t)
         {
-            Logger.ELOG(Logger.EJavaRuntime, "Cannot invoke scheme handler: " + t.toString());
+            Logger.ELOG(Logger.EJavaRuntime, "Cannot invoke scheme handler for url: "
+                + url + " : " + t.toString());
             // ClassNotFoundException, IllegalAccessException or InstantionException.
-            throw new ConnectionNotFoundException("Handler not found for URL");
+            throw new ConnectionNotFoundException("Handler not found for URL: " + url);
         }
     }