Package org.eclipse.ecf.provider.internal.remoteservice.java8

Source Code of org.eclipse.ecf.provider.internal.remoteservice.java8.Activator

package org.eclipse.ecf.provider.internal.remoteservice.java8;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.ecf.core.ContainerTypeDescription;
import org.eclipse.ecf.core.util.AdapterManagerTracker;
import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {

  private List<IAdapterFactory> rscAdapterFactories;

  private static IAdapterManager getAdapterManager(BundleContext ctx) {
    AdapterManagerTracker t = new AdapterManagerTracker(ctx);
    t.open();
    IAdapterManager am = t.getAdapterManager();
    t.close();
    return am;
  }

  @Override
  public void start(final BundleContext context) throws Exception {
    SafeRunner.run(new ExtensionRegistryRunnable(context) {
      protected void runWithoutRegistry() throws Exception {
        context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Server", true, false), null); //$NON-NLS-1$
        context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Client", false, false), null); //$NON-NLS-1$
        context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Client", false, false), null); //$NON-NLS-1$
        context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Server", true, false), null); //$NON-NLS-1$
        IAdapterManager am = getAdapterManager(context);
        if (am != null) {
          rscAdapterFactories = new ArrayList<IAdapterFactory>();
          IAdapterFactory af = new J8RemoteServiceContainerAdapterFactory();
          am.registerAdapters(af, J8SSLServerSOContainer.class);
          rscAdapterFactories.add(af);
          af = new J8RemoteServiceContainerAdapterFactory();
          am.registerAdapters(af, J8TCPServerSOContainer.class);
          rscAdapterFactories.add(af);
          af = new J8RemoteServiceContainerAdapterFactory();
          am.registerAdapters(af, J8SSLClientSOContainer.class);
          rscAdapterFactories.add(af);
          af = new J8RemoteServiceContainerAdapterFactory();
          am.registerAdapters(af, J8TCPClientSOContainer.class);
          rscAdapterFactories.add(af);
        }
      }
    });

  }

  @Override
  public void stop(BundleContext context) throws Exception {
    if (rscAdapterFactories != null) {
      IAdapterManager am = getAdapterManager(context);
      if (am != null) {
        for (IAdapterFactory af : rscAdapterFactories)
          am.unregisterAdapters(af);
      }
    }
  }

}
TOP

Related Classes of org.eclipse.ecf.provider.internal.remoteservice.java8.Activator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.