jumpfileinstaller.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 178 行

JAVA
178
字号
/* * Copyright  1990-2007 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. */package com.sun.midp.jump.installer;import java.io.ByteArrayOutputStream;import java.io.IOException;import javax.microedition.io.ConnectionNotFoundException;import javax.microedition.io.Connector;import com.sun.midp.configurator.Constants;import com.sun.midp.installer.InvalidJadException;import com.sun.midp.io.j2me.storage.RandomAccessStream;import com.sun.midp.midletsuite.MIDletSuiteLockedException;import com.sun.midp.security.SecurityToken;import com.sun.midp.jump.installer.JUMPInstallerInterface;/** * An Installer allowing to install a midlet suite from a file. * If the midlet suite is given by a descriptor file, the jar * URL specified in the descriptor must have a "file" scheme. */public class JUMPFileInstaller extends JUMPInstaller     implements JUMPInstallerInterface {    /** Number of bytes to read at one time when copying a file. */    private static final int CHUNK_SIZE = 10 * 1024;    /**     * Downloads an application descriptor file from the given URL.     *     * @return a byte array representation of the file or null if not found     *     * @exception IOException is thrown if any error prevents the download     *            of the JAD     */    protected byte[] downloadJAD() throws IOException {        RandomAccessStream jadInputStream;        ByteArrayOutputStream bos = new ByteArrayOutputStream(CHUNK_SIZE);        String jadFilename = getUrlPath(state.localJadUrl);        state.beginTransferDataStatus = DOWNLOADING_JAD;        state.transferStatus = DOWNLOADED_1K_OF_JAD;        jadInputStream = new RandomAccessStream();        jadInputStream.connect(jadFilename, Connector.READ);        transferData(jadInputStream.openInputStream(), bos, CHUNK_SIZE);        jadInputStream.close();        return bos.toByteArray();    }    /**     * Downloads an application archive file from the given URL into the     * given file. Automatically handle re-tries.     *     * @param filename name of the file to write. This file resides     *          in the storage area of the given application     *     * @return size of the JAR     *     * @exception IOException is thrown if any error prevents the download     *   of the JAR     */    protected int downloadJAR(String filename) throws IOException {        int jarSize;        RandomAccessStream jarInputStream, jarOutputStream;        String jarFilename = getUrlPath(state.localJarUrl);        // Open source (jar) file        jarInputStream = new RandomAccessStream();        jarInputStream.connect(jarFilename, Connector.READ);        // Open destination (temporary) file        jarOutputStream = new RandomAccessStream();        jarOutputStream.connect(filename,                                RandomAccessStream.READ_WRITE_TRUNCATE);        // transfer data        state.beginTransferDataStatus = DOWNLOADING_JAR;        state.transferStatus = DOWNLOADED_1K_OF_JAR;        jarSize = transferData(jarInputStream.openInputStream(),                               jarOutputStream.openOutputStream(), CHUNK_SIZE);        jarInputStream.close();        return jarSize;    }    /**     * Compares two URLs for equality in sense that they have the same     * scheme, host and path.     *     * @param url1 the first URL for comparision     * @param url2 the second URL for comparision     *     * @return true if the scheme, host and path of the first given url     *              is identical to the scheme, host and path of the second     *              given url; false otherwise     */    protected boolean isSameUrl(String url1, String url2) {        try {            String defaultScheme = "file";            String scheme1 = getUrlScheme(url1, defaultScheme);            String scheme2 = getUrlScheme(url2, defaultScheme);            if (url1.equals(url2)) {                return true;            }        } catch (NullPointerException npe) {            // no match, fall through        }        return true;    }    /**     * Stops the installation. If installer is not installing then this     * method has no effect. This will cause the install method to     * throw an IOException if the install is not writing the suite     * to storage which is the point of no return.     *     * @return true if the install will stop, false if it is too late     */    public boolean stopInstalling() {        boolean res = super.stopInstalling();        if (!res) {            return res;        }        /* some additional actions can be added here */        return true;    }    public int verifyAndStoreSuite(String jadSourceUrl, String encoding,        String tempJadFileName, String tempJarFileName, boolean isUpdate)            throws IOException, InvalidJadException,                   MIDletSuiteLockedException, SecurityException {           return installJad(jadSourceUrl, tempJadFileName, tempJarFileName,              encoding, Constants.INTERNAL_STORAGE_ID, isUpdate, false, null);    }        public int verifyAndStoreSuite(String jarSourceUrl,        String tempJarFileName, String suiteName, boolean isUpdate)                   throws IOException, InvalidJadException,                   MIDletSuiteLockedException, SecurityException {	           return installJar(jarSourceUrl, tempJarFileName, suiteName,                   Constants.INTERNAL_STORAGE_ID, isUpdate, false, null);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?