| /******************************************************************************* |
| * Copyright (c) 2014 Composent, Inc. All rights reserved. This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License v1.0 which accompanies this distribution, and is |
| * available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: Scott Lewis (slewis@composent.com) - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ecf.internal.examples.raspberrypi.management.host; |
| |
| import java.util.Dictionary; |
| import java.util.Hashtable; |
| |
| import org.eclipse.ecf.examples.raspberrypi.management.IRaspberryPi; |
| import org.osgi.framework.BundleActivator; |
| import org.osgi.framework.BundleContext; |
| import org.osgi.framework.ServiceRegistration; |
| |
| public class Activator implements BundleActivator { |
| |
| private static final String OSGI_SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces"; |
| |
| private ServiceRegistration<IRaspberryPi> registration; |
| |
| @Override |
| public void start(BundleContext context) throws Exception { |
| Dictionary<String,Object> props = new Hashtable<String,Object>(); |
| // Add OSGi required remote service properties |
| props.put(OSGI_SERVICE_EXPORTED_INTERFACES, System.getProperty(OSGI_SERVICE_EXPORTED_INTERFACES,"*")); |
| // Use ECF generic server config. |
| props.put("service.exported.configs", "ecf.generic.server"); |
| // Setup hostname config (default:localhost) |
| String hostname = System.getProperty("ecf.generic.server.hostname"); |
| if (hostname != null) |
| props.put("ecf.generic.server.hostname",hostname); |
| // Setup port config (default:-1) |
| props.put("ecf.generic.server.port",new Integer(System.getProperty("ecf.generic.server.port","-1"))); |
| // Setup IRaspberryPiAsync as async remote service |
| props.put("ecf.exported.async.interfaces", "*"); |
| // This remote service registration will trigger export, and publishing via zeroconf |
| registration = context.registerService(IRaspberryPi.class, new RaspberryPi(), props); |
| |
| System.out.println("IRaspberryPi remote service registered="+registration); |
| } |
| |
| @Override |
| public void stop(BundleContext context) throws Exception { |
| registration.unregister(); |
| System.out.println("IRaspberryPi remote service unregistered"); |
| } |
| |
| } |