Java tutorial
package it.txt.ens.namespace.osgi.test; /*************************************************************************** * Copyright 2012-2013 TXT e-solutions SpA * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * This work was performed within the IoT_at_Work Project * and partially funded by the European Commission's * 7th Framework Programme under the contract ICT-257367. * * Authors: * Salvatore Piccione (TXT e-solutions SpA) * * Contributors: * Domenico Rotondi (TXT e-solutions SpA) **************************************************************************/ import it.txt.ens.namespace.osgi.NamespaceInquirerMSF; import java.io.File; import java.text.MessageFormat; import java.util.Dictionary; import java.util.Locale; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Filter; import org.osgi.framework.ServiceReference; import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; import org.springframework.ldap.filter.EqualsFilter; /** * @author Salvatore Piccione (TXT e-solutions SpA - salvatore.piccione AT txtgroup.com) * @author Domenico Rotondi (TXT e-solutions SpA - domenico.rotondi AT txtgroup.com) * */ public class Activator implements BundleActivator { private static final Logger LOGGER = Logger.getLogger(Activator.class.getName()); private static final String DEFAULT_CONFIG_DIR = "conf/"; private static final String CONFIG_FILE = "NamespaceInquirer.properties"; private static final ResourceBundle LOGGING_MESSAGES = ResourceBundle .getBundle("logging-messages/" + Activator.class.getSimpleName(), Locale.ROOT); private Configuration config; private ServiceReference<ConfigurationAdmin> configAdminSR; /* (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { //retrieve the configuration admin service configAdminSR = context.getServiceReference(ConfigurationAdmin.class); if (configAdminSR == null) throw new Exception("No " + ConfigurationAdmin.class.getName() + " available"); ConfigurationAdmin configAdmin = context.getService(configAdminSR); config = configAdmin.createFactoryConfiguration(NamespaceInquirerMSF.PID, null); //load the configuration for this bundle File configFile = new File(DEFAULT_CONFIG_DIR + CONFIG_FILE); Dictionary<String, Object> properties = null; try { properties = Utils.loadConfiguration(DEFAULT_CONFIG_DIR + CONFIG_FILE); //add owner id String ownerID = String.valueOf(context.getBundle().getBundleId()); properties.put(NamespaceInquirerMSF.OWNER_ID, ownerID); config.update(properties); EqualsFilter ownerIDFilter = new EqualsFilter(NamespaceInquirerMSF.OWNER_ID, ownerID); Filter filter = context.createFilter(ownerIDFilter.encode()); NamespaceInquirerTracker tracker = new NamespaceInquirerTracker(context, filter); new Thread(tracker, "Namespace Inquirer Tracker").start(); } catch (Exception e) { LOGGER.log(Level.WARNING, MessageFormat.format( LOGGING_MESSAGES.getString("errorWhileReadingConfigFile"), configFile.getAbsolutePath()), e); } } /* (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context) throws Exception { config.delete(); context.ungetService(configAdminSR); } }