001: /*
002: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
004: *
005: * This program is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU General Public License version
007: * 2 only, as published by the Free Software Foundation.
008: *
009: * This program is distributed in the hope that it will be useful, but
010: * WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * General Public License version 2 for more details (a copy is
013: * included at /legal/license.txt).
014: *
015: * You should have received a copy of the GNU General Public License
016: * version 2 along with this work; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018: * 02110-1301 USA
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
021: * Clara, CA 95054 or visit www.sun.com if you need additional
022: * information or have any questions.
023: */
024:
025: package com.sun.midp.jump.push.executive;
026:
027: import com.sun.midp.jump.push.executive.ota.InstallerInterface;
028: import com.sun.midp.push.gcf.PermissionCallback;
029: import com.sun.midp.push.gcf.ReservationDescriptor;
030: import com.sun.midp.push.gcf.ReservationDescriptorFactory;
031: import java.io.IOException;
032: import javax.microedition.io.ConnectionNotFoundException;
033:
034: /** Installer interface implementation. */
035: final class InstallerInterfaceImpl implements InstallerInterface {
036: /** Push controller. */
037: private final PushController pushController;
038:
039: /** Reservation descriptor factory. */
040: ReservationDescriptorFactory reservationDescriptorFactory;
041:
042: /**
043: * Creates an implementation.
044: *
045: * @param pushController push controller
046: * @param reservationDescriptorFactory reservation descriptor factory
047: */
048: public InstallerInterfaceImpl(
049: final PushController pushController,
050: final ReservationDescriptorFactory reservationDescriptorFactory) {
051: this .pushController = pushController;
052: this .reservationDescriptorFactory = reservationDescriptorFactory;
053: }
054:
055: /** {@inheritDoc} */
056: public void installConnections(final int midletSuiteId,
057: final JUMPConnectionInfo[] connections)
058: throws ConnectionNotFoundException, IOException,
059: SecurityException {
060: final PermissionCallback permissionCallback = new PermissionCallback() {
061: public void checkForPermission(final String permissionName,
062: final String resource, final String extraValue) {
063: checkPermission(midletSuiteId, permissionName,
064: resource, extraValue);
065: }
066: };
067:
068: checkPushPermission(midletSuiteId);
069: for (int i = 0; i < connections.length; i++) {
070: final JUMPConnectionInfo ci = connections[i];
071: try {
072: pushController.registerConnection(midletSuiteId,
073: ci.midlet, reservationDescriptorFactory
074: .getDescriptor(ci.connection,
075: ci.filter, permissionCallback));
076: } catch (IOException ioex) {
077: // NB: ConnectionNotFoundException is subclass of IOException
078: // Quick'n'simple
079: pushController.removeSuiteInfo(midletSuiteId);
080: throw ioex;
081: } catch (SecurityException sex) {
082: // Quick'n'simple
083: pushController.removeSuiteInfo(midletSuiteId);
084: throw sex;
085: }
086: }
087: }
088:
089: /** {@inheritDoc} */
090: public void uninstallConnections(final int midletSuiteId) {
091: pushController.removeSuiteInfo(midletSuiteId);
092: }
093:
094: /**
095: * Checks if the suite is allowed to install static push reservations.
096: *
097: * @param midletSuiteId <code>MIDlet</code> suite id
098: */
099: private void checkPushPermission(final int midletSuiteId) {
100: // TBD: implement
101: }
102:
103: /**
104: * Checks if the suite is allowed to install static push reservations.
105: *
106: * @param midletSuiteId <code>MIDlet</code> suite id
107: */
108: private void checkPermission(final int midletSuiteId,
109: final String permissionName, final String resource,
110: final String extraValue) {
111: // TBD: implement
112: }
113: }
|