/* * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ /* * @(#)AMSmain.java 1.5 06/10/10 */ package com.sun.javax.microedition.midlet; import sun.misc.MIDPImplementationClassLoader; import sun.misc.MIDPConfig; import sun.misc.MemberFilter; import javax.microedition.midlet.*; import java.io.*; public class AMSmain{ /* Important parameters */ final static String AMSclassName = "com.sun.javax.microedition.midlet.AMS"; final static String MIDPimplProperty = "com.sun.javax.microedition.implementation"; /* * Some places we want a file name, * some places we want a URL. * Duplicated from javax.microedition.midlet.AMS. * static String filenameToURL(String filename){ java.io.File f = new File(filename); String longname; try { longname = f.getCanonicalPath(); } catch (IOException e ){ throw new Error("IOException"); } return longname; }*/ /* * MAIN: * Instantiate class loader & com.sun.javax.microedition.midlet.AMS class. * initialze shared structures, * instantiate just one AMS instance to go do the work. * First and only parameter is URL to MIDlet suite JAR. */ public static void main( String args[] ){ String suitePath = args[0]; File midImplPath = new File(System.getProperty(MIDPimplProperty)); MIDPImplementationClassLoader midpImpl = MIDPConfig.newMIDPImplementationClassLoader( new File[]{midImplPath}); MemberFilter mf = MIDPConfig.newMemberFilter(); MidletAMS suiteRunner; try { Class myAMSClass = midpImpl.loadClass(AMSclassName, true); suiteRunner = (MidletAMS)(myAMSClass.newInstance()); }catch( Exception e ){ System.err.println("Instantiating AMS"); e.printStackTrace(); return; } /* * setupSharedState would most logically be a * static method. But calling a static method on a * dynamically loaded class is more work than this * and not very enlightening. */ try { if (!suiteRunner.setupSharedState(midpImpl, mf)){ return; // error message already printed. } }catch(SecurityException e){ System.err.println("Suite Runner AMS SecurityException"); e.printStackTrace(); return; } /* * Setup each suiteRunner with the path of the JAR * containing the suite of midlets for it to manage. * In this case there is only one, so we only see * one such call. */ if (!suiteRunner.initializeSuite(suitePath)){ return; // error message already printed. } /* * Start the suiteRunner. It will return when there * is nothing more for it to do. */ suiteRunner.runSuite(); } }