org.osgi.framework.ServiceListener#org.osgi.framework.FrameworkListener源码实例Demo

下面列出了org.osgi.framework.ServiceListener#org.osgi.framework.FrameworkListener 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: atlas   文件: Framework.java
/**
 * notify all framework listeners.
 *
 * @param state the new state.
 * @param bundle the bundle.
 * @param throwable a throwable.
 */
static void notifyFrameworkListeners(final int state, final Bundle bundle, final Throwable throwable) {

    if (frameworkListeners.isEmpty()) {
        return;
    }

    final FrameworkEvent event = new FrameworkEvent(state);

    final FrameworkListener[] listeners = frameworkListeners.toArray(new FrameworkListener[frameworkListeners.size()]);

    for (int i = 0; i < listeners.length; i++) {
        final FrameworkListener listener = listeners[i];

        listener.frameworkEvent(event);
    }
}
 
源代码2 项目: eclipse.jdt.ls   文件: BundleUtils.java
private static void refreshBundles(Set<Bundle> toRefresh, FrameworkWiring frameworkWiring) {
	if (!toRefresh.isEmpty()) {
		JavaLanguageServerPlugin.logInfo("Refresh the bundles");
		final CountDownLatch latch = new CountDownLatch(1);
		frameworkWiring.refreshBundles(toRefresh, new FrameworkListener() {
			@Override
			public void frameworkEvent(FrameworkEvent event) {
				if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED) {
					latch.countDown();
				} else if (event.getType() == FrameworkEvent.ERROR) {
					JavaLanguageServerPlugin.logException("Error happens when refreshing the bundles", event.getThrowable());
					latch.countDown();
				}
			}
		});
		try {
			latch.await();
		} catch (InterruptedException e) {
			JavaLanguageServerPlugin.logException("InterruptedException happened when refreshing", e);
		}
		JavaLanguageServerPlugin.logInfo("Finished Refreshing bundles");
	}
}
 
源代码3 项目: concierge   文件: Concierge.java
/**
 * notify all framework listeners.
 * 
 * @param state
 *            the new state.
 * @param bundle
 *            the bundle.
 * @param throwable
 *            a throwable.
 */
protected void notifyFrameworkListeners(final FrameworkListener[] listeners,
		final int state, final Bundle bundle, final Throwable throwable) {

	if (listeners.length == 0) {
		return;
	}

	final FrameworkEvent event = new FrameworkEvent(state, bundle,
			throwable);

	for (int i = 0; i < listeners.length; i++) {
		final FrameworkListener listener = listeners[i];
		if (SECURITY_ENABLED) {
			AccessController.doPrivileged(new PrivilegedAction<Object>() {
				public Object run() {
					listener.frameworkEvent(event);
					return null;
				}
			});
		} else {
			listener.frameworkEvent(event);
		}
	}
}
 
源代码4 项目: concierge   文件: Concierge.java
/**
 * add a framework listener.
 * 
 * @param listener
 *            a framework listener.
 * @see org.osgi.framework.BundleContext#addFrameworkListener(org.osgi.framework.FrameworkListener)
 * 
 */
public void addFrameworkListener(final FrameworkListener listener) {
	checkValid();

	// if (bundle == Concierge.this) {
	// return;
	// }

	if (bundle.registeredFrameworkListeners == null) {
		bundle.registeredFrameworkListeners = new ArrayList<FrameworkListener>(
				1);
	}
	if (!bundle.registeredFrameworkListeners.contains(listener)) {
		frameworkListeners.add(listener);
		bundle.registeredFrameworkListeners.add(listener);
	}
}
 
源代码5 项目: concierge   文件: Concierge.java
/**
 * remove a framework listener.
 * 
 * @param listener
 *            a framework listener.
 * @see org.osgi.framework.BundleContext#removeFrameworkListener(org.osgi.framework.FrameworkListener)
 * 
 */
public void removeFrameworkListener(final FrameworkListener listener) {
	checkValid();

	if (bundle == Concierge.this) {
		return;
	}
	final AbstractBundle b = bundle;

	frameworkListeners.remove(listener);
	if (b.registeredFrameworkListeners != null) {
		b.registeredFrameworkListeners.remove(listener);
		if (b.registeredFrameworkListeners.isEmpty()) {
			b.registeredFrameworkListeners = null;
		}
	}
}
 
源代码6 项目: knopflerfish.org   文件: SystemBundle.java
/**
 * Initialize this framework and call listeners.
 *
 * @see org.osgi.framework.launch.Framework#init(FrameworkListener...)
 */
@Override
public void init(FrameworkListener... listeners) throws BundleException {
  secure.checkExecuteAdminPerm(this);

  synchronized (lock) {
    waitOnOperation(lock, "Framework.init", true);

    switch (state) {
    case INSTALLED:
      state = RESOLVED;
    case RESOLVED:
      break;
    case STARTING:
    case ACTIVE:
      return;
    default:
      throw new IllegalStateException("INTERNAL ERROR, Illegal state, " + state);
    }
    doInit(listeners);
  }
}
 
源代码7 项目: netbeans   文件: Activator.java
public @Override void start(final BundleContext context) throws Exception {
        if (System.getProperty("netbeans.home") != null) {
            throw new IllegalStateException("Should not be run from inside regular NetBeans module system");
        }
        String storage = context.getProperty(Constants.FRAMEWORK_STORAGE);
        if (storage != null) {
            System.setProperty("netbeans.user", storage);
        }
        System.setProperty("TopSecurityManager.disable", "true");
        NbBundle.setBranding(System.getProperty("branding.token"));
        OSGiMainLookup.initialize(context);
        queue = new DependencyQueue<String,Bundle>();
        this.context = context;
        framework = ((Framework) context.getBundle(0));
        if (framework.getState() == Bundle.STARTING) {
            LOG.fine("framework still starting");
            final AtomicReference<FrameworkListener> frameworkListener = new AtomicReference<FrameworkListener>();
            frameworkListener.set(new FrameworkListener() {
                public @Override void frameworkEvent(FrameworkEvent event) {
                    if (event.getType() == FrameworkEvent.STARTED) {
//                        System.err.println("framework started");
                        context.removeFrameworkListener(frameworkListener.get());
                        context.addBundleListener(Activator.this);
                        processLoadedBundles();
                    }
                }
            });
            context.addFrameworkListener(frameworkListener.get());
        } else {
            LOG.fine("framework already started");
            context.addBundleListener(this);
            processLoadedBundles();
        }
    }
 
源代码8 项目: concierge   文件: Concierge.java
/**
 * @see org.osgi.framework.startlevel.FrameworkStartLevel#setStartLevel(int,
 *      org.osgi.framework.FrameworkListener[])
 * @category FrameworkStartLevel
 */
public void setStartLevel(final int targetLevel,
		final FrameworkListener... listeners) {
	// TODO: check AdminPermission(this, STARTLEVEL);
	
	// cannot set the startlevel during init - required for extension bundle activators
	if(state == STARTING){
		throw new IllegalStateException("Cannot set the start level while starting");
	}
	
	if (targetLevel <= 0) {
		throw new IllegalArgumentException(
				"Start level " + targetLevel + " is not a valid level");
	}

	new Thread() {
		public void run() {
			setLevel(bundles.toArray(new Bundle[bundles.size()]),
					targetLevel, false);
			notifyFrameworkListeners(FrameworkEvent.STARTLEVEL_CHANGED,
					Concierge.this, null);
			if (listeners != null) {
				notifyFrameworkListeners(listeners,
						FrameworkEvent.STARTLEVEL_CHANGED, Concierge.this,
						null);
			}
			storeMetadata();
		}
	}.start();
}
 
源代码9 项目: concierge   文件: Concierge.java
void notifyFrameworkListeners(final int state, final Bundle bundle,
		final Throwable throwable) {
	notifyFrameworkListeners(
			frameworkListeners.toArray(
					new FrameworkListener[frameworkListeners.size()]),
			state, bundle, throwable);
}
 
源代码10 项目: knopflerfish.org   文件: Desktop.java
void refreshBundles(final Bundle[] b)
{
  final Bundle systemBundle = Activator.getTargetBC().getBundle(0);
  final FrameworkWiring fw = systemBundle.adapt(FrameworkWiring.class);

  if (fw != null) {
    final ArrayList<Bundle> bundles = new ArrayList<Bundle>();
    final boolean refreshAll = b == null || 0 == b.length;
    final StringBuffer sb = new StringBuffer("Desktop-RefreshPackages ");
    if (refreshAll) {
      sb.append("all packages pending removal");
    } else {
      sb.append("bundle packages for ");
      for (int i = 0; i < b.length; i++) {
        if (i > 0) {
          sb.append(", ");
        }
        sb.append(b[i].getBundleId());
        bundles.add(b[i]);
      }
    }

    final FrameworkListener refreshListener = new FrameworkListener() {

      @Override
      public void frameworkEvent(FrameworkEvent event)
      {
        Activator.log.info(sb.toString() + " DONE.");
      }
    };

    try {
      fw.refreshBundles(bundles, refreshListener);
    } catch (final Exception e) {
      showErr(sb.toString() + " failed to refresh bundles: " + e, e);
    }
  }
}
 
源代码11 项目: knopflerfish.org   文件: CapabilityTestSuite.java
public void runTest() throws Throwable {
  fw = bc.getBundle(0).adapt(FrameworkWiring.class);
  FrameworkListener fl = new FrameworkListener() {
    @Override
    public void frameworkEvent(FrameworkEvent event) {
      synchronized (this) {
        notifyAll();
      }
    }
  };
  try {
    synchronized (fl) {
      fw.refreshBundles(null, fl);
      fl.wait(3000);
    }
    buCUC1 = Util.installBundle(bc, "bundleCUC1_test-1.0.0.jar");
    assertNotNull(buCUC1);
    buCUC2 = Util.installBundle(bc, "bundleCUC2_test-2.0.0.jar");
    assertNotNull(buCUC2);
    buCUP1 = Util.installBundle(bc, "bundleCUP1_test-1.0.0.jar");
    assertNotNull(buCUP1);
    buCUP2 = Util.installBundle(bc, "bundleCUP2_test-2.0.0.jar");
    assertNotNull(buCUP2);
  } catch (Exception e) {
    fail("Failed to refresh packages: " + e);
  }
}
 
源代码12 项目: knopflerfish.org   文件: SecurePermissionOps.java
@Override
void callRefreshPackages0(final PackageAdminImpl pa,
                          final Bundle[] bundles,
                          final FrameworkListener[] fl)
{
  AccessController.doPrivileged(new PrivilegedAction<Object>() {
    public Object run()
    {
      pa.refreshPackages0(bundles, fl);
      return null;
    }
  });
}
 
源代码13 项目: knopflerfish.org   文件: StartLevelController.java
void setStartLevel(final int startLevel, final FrameworkListener... listeners)
{
  if (!bRun) {
    throw new IllegalStateException("StartLevelService isn't running yet");
  }
  fwCtx.perm.checkStartLevelAdminPerm();
  if (startLevel <= 0) {
    throw new IllegalArgumentException("Initial start level must be > 0, is "
                                       + startLevel);
  }
  // No start-level changed events if called before open() or after close().
  setStartLevel0(startLevel, true, listeners);
}
 
源代码14 项目: knopflerfish.org   文件: Listeners.java
Listeners(FrameworkContext framework, PermissionOps perm, FrameworkListener... initListeners) {
  this.fwCtx = framework;
  secure = perm;
  nocacheldap = framework.props.getBooleanProperty(FWProps.LDAP_NOCACHE_PROP);
  serviceListeners = new ServiceListenerState(this);
  final String ets = framework.props.getProperty(FWProps.LISTENER_N_THREADS_PROP);
  int n_threads = 1;
  Throwable error = null;
  if (ets != null) {
    try {
      n_threads = Integer.parseInt(ets);
    } catch (final NumberFormatException nfe) {
      error = nfe;
    }
  }
  this.initListeners = initListeners;
  if (n_threads > 0) {
    asyncEventQueue = new LinkedList<AsyncEvent>();
    threads = new AsyncEventThread[n_threads];
    for (int i = 0; i < n_threads; i++) {
      threads[i] = new AsyncEventThread(i);
      threads[i].start();
    }
    if (n_threads > 1) {
      activeListeners = new HashMap<ListenerEntry, Thread>();
    }
    if (error != null) {
      Throwable t = new Exception("Failed to parse " + FWProps.LISTENER_N_THREADS_PROP, error);
      framework.frameworkWarning(framework.systemBundle, t);
    }
  }
}
 
源代码15 项目: knopflerfish.org   文件: Listeners.java
/**
 * Add a bundle listener to current framework.
 *
 * @param bc Who wants to add listener.
 * @param listener Object to add.
 */
void addFrameworkListener(BundleContextImpl bc, FrameworkListener listener) {
  final ListenerEntry le = new ListenerEntry(bc, listener);
  synchronized (frameworkListeners) {
    frameworkListeners.add(le);
  }
}
 
源代码16 项目: knopflerfish.org   文件: Listeners.java
/**
 *
 */
private void frameworkEvent(final ListenerEntry le, FrameworkEvent evt) {
  try {
    ((FrameworkListener)le.listener).frameworkEvent(evt);
  } catch (final Exception pe) {
    // Don't report Error events again, since probably would go into an infinite loop.
    if (evt.getType() != FrameworkEvent.ERROR) {
      fwCtx.frameworkError(le != null ? le.bc : null, pe);
    }
  }
}
 
源代码17 项目: ACDD   文件: Framework.java
static void notifyFrameworkListeners(int event, Bundle bundle, Throwable th) {
    if (!frameworkListeners.isEmpty()) {
        FrameworkEvent frameworkEvent = new FrameworkEvent(event, bundle, th);
        FrameworkListener[] frameworkListenerArr = frameworkListeners.toArray(new FrameworkListener[frameworkListeners.size()]);
        for (FrameworkListener frameworkListener : frameworkListenerArr) {
            frameworkListener.frameworkEvent(frameworkEvent);
        }
    }
}
 
源代码18 项目: AtlasForAndroid   文件: BundleContextImpl.java
public void addFrameworkListener(FrameworkListener frameworkListener) {
    checkValid();
    if (this.bundle.registeredFrameworkListeners == null) {
        this.bundle.registeredFrameworkListeners = new ArrayList();
    }
    if (!this.bundle.registeredFrameworkListeners.contains(frameworkListener)) {
        Framework.frameworkListeners.add(frameworkListener);
        this.bundle.registeredFrameworkListeners.add(frameworkListener);
    }
}
 
源代码19 项目: AtlasForAndroid   文件: BundleContextImpl.java
public void removeFrameworkListener(FrameworkListener frameworkListener) {
    checkValid();
    Framework.frameworkListeners.remove(frameworkListener);
    this.bundle.registeredFrameworkListeners.remove(frameworkListener);
    if (this.bundle.registeredFrameworkListeners.isEmpty()) {
        this.bundle.registeredFrameworkListeners = null;
    }
}
 
源代码20 项目: AtlasForAndroid   文件: Framework.java
static void notifyFrameworkListeners(int i, Bundle bundle, Throwable th) {
    if (!frameworkListeners.isEmpty()) {
        FrameworkEvent frameworkEvent = new FrameworkEvent(i, bundle, th);
        FrameworkListener[] frameworkListenerArr = (FrameworkListener[]) frameworkListeners.toArray(new FrameworkListener[frameworkListeners.size()]);
        for (FrameworkListener frameworkEvent2 : frameworkListenerArr) {
            frameworkEvent2.frameworkEvent(frameworkEvent);
        }
    }
}
 
源代码21 项目: netbeans   文件: NetigsoSelfQueryTest.java
public void addFrameworkListener(FrameworkListener fl) {
    throw new UnsupportedOperationException("Not supported yet.");
}
 
源代码22 项目: netbeans   文件: NetigsoSelfQueryTest.java
public void removeFrameworkListener(FrameworkListener fl) {
    throw new UnsupportedOperationException("Not supported yet.");
}
 
源代码23 项目: netbeans   文件: Netbinox.java
public void removeFrameworkListener(FrameworkListener fl) {
    delegate.removeFrameworkListener(fl);
}
 
源代码24 项目: netbeans   文件: Netbinox.java
public void addFrameworkListener(FrameworkListener fl) {
    delegate.addFrameworkListener(fl);
}
 
源代码25 项目: vespa   文件: ClassLoaderOsgiFramework.java
@Override
public void addFrameworkListener(FrameworkListener listener) {
}
 
源代码26 项目: vespa   文件: ClassLoaderOsgiFramework.java
@Override
public void removeFrameworkListener(FrameworkListener listener) {
}
 
源代码27 项目: knopflerfish.org   文件: FrameworkTrayIcon.java
public FrameworkTrayIcon() throws UnsupportedOperationException
{
  final StringBuffer toolTipText = new StringBuffer("Knopflerfish OSGi");
  final String servicePlatformId =
    Activator.bc.getProperty("org.osgi.provisioning.spid");
  if (null != servicePlatformId && 0 < servicePlatformId.length()) {
    toolTipText.append(" (").append(servicePlatformId).append(")");
  }

  try {
    trayIconClass = Class.forName("java.awt.TrayIcon");
    final Constructor<?> con =
      trayIconClass.getDeclaredConstructor(new Class[] { Image.class,
                                                        String.class });
    trayIcon =
      con.newInstance(new Object[] {
                                    Toolkit
                                        .getDefaultToolkit()
                                        .getImage(FrameworkTrayIcon.class
                                                      .getResource(getIconForOS())),
                                    toolTipText.toString() });

    final Method m =
      trayIconClass.getDeclaredMethod("setPopupMenu",
                                      new Class[] { PopupMenu.class });
    m.invoke(trayIcon, new Object[] { makeMenu() });

    frameworkStartLevel =
      Activator.bc.getBundle(0L).adapt(FrameworkStartLevel.class);

    updateStartLevelItems();

    Activator.bc.addFrameworkListener(new FrameworkListener() {
      public void frameworkEvent(FrameworkEvent ev)
      {
        if (FrameworkEvent.STARTLEVEL_CHANGED == ev.getType()
            || FrameworkEvent.STARTED == ev.getType()) {
          updateStartLevelItems();
        }
      }
    });
  } catch (final Exception e) {
    Activator.log.error("Failed to create FrameworkTrayIcon: " + e, e);
    throw new UnsupportedOperationException(e.getMessage());
  }
}
 
源代码28 项目: knopflerfish.org   文件: Util.java
/**
 * Calls package admin refresh packages and waits for the operation
 * to complete.
 *
 * @param bc context owning both resources and to install bundle from
 * @param bundles the inital list of bundles to refresh.
 * @return null on sucess, string with error message on failure.
 */
public static String refreshPackages(BundleContext bc,
                                     Bundle[] bundles)
{
  System.out.println("PackageAdmin.refreshPackages("
                     +Arrays.asList(bundles) +")");
  ServiceReference paSR
    = bc.getServiceReference(PackageAdmin.class.getName());
  if (null==paSR)
    return "No package admin service reference.";

  PackageAdmin pa = (PackageAdmin) bc.getService(paSR);
  if (null==pa)
    return "No package admin service.";

  final Object lock = new Object();

  FrameworkListener fListen = new FrameworkListener(){
      public void frameworkEvent(FrameworkEvent event)
      {
        System.out.println("Got framework event of type "+event.getType());
        if (event.getType()==FrameworkEvent.PACKAGES_REFRESHED) {
          synchronized(lock) {
            lock.notifyAll();
          }
        }
      }
    };
  bc.addFrameworkListener(fListen);

  try {
    pa.refreshPackages(bundles);
  } catch (Exception e) {
    e.printStackTrace();
    return "Failed to refresh packages, got exception " +e;
  }

  synchronized (lock) {
    try {
      lock.wait(30000L);
    } catch (InterruptedException ie) {
      System.err.println("Waiting or packages refreshed was interrupted.");
    }
  }
  System.out.println("PackageAdmin.refreshPackages("
                     +Arrays.asList(bundles) +") done.");

  bc.removeFrameworkListener(fListen);

  return null;
}
 
源代码29 项目: knopflerfish.org   文件: PermissionOps.java
void callRefreshPackages0(final PackageAdminImpl pa, final Bundle[] bundles, final FrameworkListener[] fl) {
  pa.refreshPackages0(bundles, fl);
}
 
源代码30 项目: knopflerfish.org   文件: StartLevelController.java
void setStartLevel(final int startLevel)
{
  setStartLevel(startLevel, (FrameworkListener[]) null);
}