本文整理汇总了Java中org.osgi.service.cm.ConfigurationEvent类的典型用法代码示例。如果您正苦于以下问题:Java ConfigurationEvent类的具体用法?Java ConfigurationEvent怎么用?Java ConfigurationEvent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ConfigurationEvent类属于org.osgi.service.cm包,在下文中一共展示了ConfigurationEvent类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Override
public void configurationEvent(final ConfigurationEvent event) {
final int type = event.getType();
final String pid = event.getPid();
if (type == CM_UPDATED) {
final Map<String, Boolean> configuredFeatures = getConfiguredFeatures(pid, configurationAdmin);
for (final Entry<String, Boolean> entry : configuredFeatures.entrySet()) {
final String featureID = entry.getKey();
final boolean isEnabled = entry.getValue();
final Collection<Feature> features = allFeatures.get(pid);
//@formatter:off
features.stream()
.filter(f -> f.id.equalsIgnoreCase(featureID))
.peek(f -> logger.log(LOG_INFO, String.format("Updated feature [%s] to [%b]", f.toString(), isEnabled)))
.forEach(f -> f.isEnabled = isEnabled);
//@formatter:on
}
} else {
allFeatures.removeAll(pid);
}
}
示例2: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Override
public void configurationEvent(ConfigurationEvent event) {
if (StringUtils.equals(OSGI_MGR_PID, event.getPid())) {
switch (event.getType()) {
case CM_DELETED:
OSGiConsolePasswordVault.INSTANCE.setPassword(null);
break;
case CM_UPDATED:
this.handleOSGiManagerPwd(event.getPid());
break;
default:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Ignoring the ConfigurationEvent type: [{}]", event.getType());
}
break;
}
}
}
示例3: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
/**
* @{inheritDoc
*
* Whenever a {@link Configuration} is updated all items for
* the given <code>pid</code> are queried and updated. Since
* the {@link ConfigurationEvent} contains no information which
* key changed we have to post updates for all configured
* items.
*/
@Override
public void configurationEvent(ConfigurationEvent event) {
// we do only care for updates of existing configs!
if (ConfigurationEvent.CM_UPDATED == event.getType()) {
try {
Configuration config = configAdmin.getConfiguration(event.getPid());
for (ConfigAdminBindingProvider provider : this.providers) {
for (ConfigAdminBindingConfig bindingConfig : provider.getBindingConfigByPid(event.getPid())) {
postUpdate(config, bindingConfig);
}
}
} catch (IOException ioe) {
logger.warn("Fetching configuration for pid '" + event.getPid() + "' failed", ioe);
}
}
}
示例4: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Override
public void configurationEvent(ConfigurationEvent event) {
try {
ConfigurationEventProperties cep = new ConfigurationEventProperties();
cep.factoryPid = event.getFactoryPid();
cep.pid = event.getPid();
if (ConfigurationEvent.CM_DELETED != event.getType()) {
Configuration configuration = cm.getConfiguration(event
.getPid());
cep.location = configuration.getBundleLocation();
Dictionary<String, Object> properties = configuration
.getProperties();
if (properties == null) {
cep.properties = new HashMap<>();
} else
cep.properties = toMap(properties);
}
ea.postEvent(new Event(TOPIC, dtos.asMap(cep)));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
示例5: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
/**
* @{inheritDoc
*
* Whenever a {@link Configuration} is updated all items for
* the given <code>pid</code> are queried and updated. Since
* the {@link ConfigurationEvent} contains no information which
* key changed we have to post updates for all configured
* items.
*/
@Override
public void configurationEvent(ConfigurationEvent event) {
// we do only care for updates of existing configs!
if (ConfigurationEvent.CM_UPDATED == event.getType()) {
try {
Configuration config = configAdmin.getConfiguration(event.getPid());
for (ConfigAdminBindingProvider provider : this.providers) {
for (ConfigAdminBindingConfig bindingConfig : provider.getBindingConfigByPid(event.getPid())) {
postUpdate(config, bindingConfig);
}
}
} catch (IOException ioe) {
logger.warn("Fetching configuration for pid '" + event.getPid() + "' failed", ioe);
}
}
}
示例6: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Override
public void configurationEvent(ConfigurationEvent event) {
System.out.println("Configuration Event "
+ getType(event.getType())
+ " "
+ (event.getFactoryPid() != null ? event.getFactoryPid() + "::"
: "") + event.getPid());
}
示例7: getType
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
private String getType(int type) {
switch (type) {
case ConfigurationEvent.CM_DELETED:
return "deleted";
case ConfigurationEvent.CM_LOCATION_CHANGED:
return "location changed";
case ConfigurationEvent.CM_UPDATED:
return "updated";
default:
return "?";
}
}
示例8: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Override
// [TODO] #47 Revisit configurationEvent on JmxAttributeProvider
// This is an asynchronous callback. How is data integrity preserved?
// Should this depend the the lifecycle of dependent components?
public void configurationEvent(ConfigurationEvent event) {
String pid = event.getPid();
if (pid.equals(MANAGEMENT_PID) && event.getType() == ConfigurationEvent.CM_UPDATED) {
processConfiguration();
}
}
示例9: configurationEvent
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
public void configurationEvent(ConfigurationEvent event) {
String pid = event.getPid();
ResourceEvent resourceEvent;
ConfigurationResource configurationResource;
try {
Configuration configuration = m_configAdmin.getConfiguration(pid);
if (!m_configurationResourceMap.containsKey(pid)) {
configurationResource = new ConfigurationResource(configuration);
synchronized (m_lock ) {
m_configurationResourceMap.put(pid, configurationResource);
}
resourceEvent = ResourceEvent.CREATED;
} else {
synchronized (m_lock ) {
configurationResource = m_configurationResourceMap.get(pid);
}
if (event.getType() != ConfigurationEvent.CM_DELETED) {
resourceEvent = ResourceEvent.UPDATED;
} else {
resourceEvent = ResourceEvent.DELETED;
synchronized (m_lock ) {
m_configurationResourceMap.remove(pid);
}
}
}
Everest.postResource(resourceEvent, configurationResource);
} catch (IOException e) {
// something gone wrong
//TODO
e.printStackTrace();
}
}
示例10: getConfiguration
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
/**
* Returns a map containing the Configuration Admin entry with given pid. Waits until a non-null (initialized)
* object is returned if initTimeout is bigger then 0.
*
* @param bundleContext
* @param pid
* @param initTimeout
* @return
* @throws IOException
*/
public static Map getConfiguration(BundleContext bundleContext, final String pid, long initTimeout)
throws IOException {
ServiceReference ref = bundleContext.getServiceReference(ConfigurationAdmin.class.getName());
if (ref != null) {
ConfigurationAdmin cm = (ConfigurationAdmin) bundleContext.getService(ref);
if (cm != null) {
Dictionary dict = cm.getConfiguration(pid).getProperties();
// if there are properties or no timeout, return as is
if (dict != null || initTimeout == 0) {
return new MapBasedDictionary(dict);
}
// no valid props, register a listener and start waiting
final Object monitor = new Object();
Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(Constants.SERVICE_PID, pid);
ServiceRegistration reg =
bundleContext.registerService(ConfigurationListener.class.getName(),
new ConfigurationListener() {
public void configurationEvent(ConfigurationEvent event) {
if (ConfigurationEvent.CM_UPDATED == event.getType()
&& pid.equals(event.getPid())) {
synchronized (monitor) {
monitor.notify();
}
}
}
}, props);
try {
// try to get the configuration one more time (in case the update was fired before the service was
// registered)
dict = cm.getConfiguration(pid).getProperties();
if (dict != null) {
return new MapBasedDictionary(dict);
}
// start waiting
synchronized (monitor) {
try {
monitor.wait(initTimeout);
} catch (InterruptedException ie) {
// consider the timeout has passed
}
}
// return whatever is available (either we timed out or an update occured)
return new MapBasedDictionary(cm.getConfiguration(pid).getProperties());
} finally {
OsgiServiceUtils.unregisterService(reg);
}
}
}
return Collections.EMPTY_MAP;
}
示例11: testConfigurationEventUpdated
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Test
public void testConfigurationEventUpdated() throws Exception {
final FeatureManagerProvider manager = new FeatureManagerProvider();
manager.setConfigurationAdmin(configurationAdmin);
manager.setMetaTypeService(metaTypeService);
manager.activate(bundleContext1);
final MetaTypeExtender extender = manager.getExtender();
final String[] pids = new String[] { "a" };
final BundleEvent bundleEvent = new BundleEvent(BundleEvent.STARTED, bundle);
when(metaTypeService.getMetaTypeInformation(bundle)).thenReturn(metaTypeInfo);
when(metaTypeInfo.getPids()).thenReturn(pids);
when(metaTypeInfo.getObjectClassDefinition("a", null)).thenReturn(ocd);
when(ocd.getAttributeDefinitions(ALL)).thenReturn(new AttributeDefinition[] { ad });
mockADWithoutDefaultValue();
when(bundleContext1.getBundle(0)).thenReturn(systemBundle);
when(bundle.getState()).thenReturn(ACTIVE);
when(bundle.getBundleContext()).thenReturn(bundleContext1);
extender.addingBundle(bundle, bundleEvent);
Thread.sleep(1000);
FeatureDTO feature = manager.getFeatures().collect(Collectors.toList()).get(0);
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findFirst().get();
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findAny().get();
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
final Map<String, Object> properties = ImmutableMap.<String, Object> builder()
.put("osgi.feature.myfeature", true).build();
when(configurationAdmin.getConfiguration("a", "?")).thenReturn(configuration);
when(configuration.getProperties()).thenReturn(new MapToDictionary(properties));
final ConfigurationEvent configEvent = new ConfigurationEvent(reference, 1, null, "a");
manager.configurationEvent(configEvent);
final FeatureDTO updatedFeature = manager.getFeatures(FEATURE_ID).findAny().get();
assertTrue(updatedFeature.isEnabled);
}
示例12: testConfigurationEventDeleted
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Test
public void testConfigurationEventDeleted() throws Exception {
final FeatureManagerProvider manager = new FeatureManagerProvider();
manager.setConfigurationAdmin(configurationAdmin);
manager.setMetaTypeService(metaTypeService);
manager.activate(bundleContext1);
final MetaTypeExtender extender = manager.getExtender();
final String[] pids = new String[] { "a" };
final BundleEvent bundleEvent = new BundleEvent(BundleEvent.STARTED, bundle);
when(metaTypeService.getMetaTypeInformation(bundle)).thenReturn(metaTypeInfo);
when(metaTypeInfo.getPids()).thenReturn(pids);
when(metaTypeInfo.getObjectClassDefinition("a", null)).thenReturn(ocd);
when(ocd.getAttributeDefinitions(ALL)).thenReturn(new AttributeDefinition[] { ad });
mockADWithoutDefaultValue();
when(bundleContext1.getBundle(0)).thenReturn(systemBundle);
when(bundle.getState()).thenReturn(ACTIVE);
when(bundle.getBundleContext()).thenReturn(bundleContext1);
extender.addingBundle(bundle, bundleEvent);
Thread.sleep(1000);
FeatureDTO feature = manager.getFeatures().collect(Collectors.toList()).get(0);
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findFirst().get();
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findAny().get();
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
final ConfigurationEvent configEvent = new ConfigurationEvent(reference, 2, null, "a");
manager.configurationEvent(configEvent);
final List<FeatureDTO> newFeatures = manager.getFeatures().collect(Collectors.toList());
assertTrue(newFeatures.isEmpty());
}
示例13: testConfigurationEventUpdatedButIOException
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
@Test
public void testConfigurationEventUpdatedButIOException() throws Exception {
final FeatureManagerProvider manager = new FeatureManagerProvider();
manager.setConfigurationAdmin(configurationAdmin);
manager.setMetaTypeService(metaTypeService);
manager.activate(bundleContext1);
final MetaTypeExtender extender = manager.getExtender();
final String[] pids = new String[] { "a" };
final BundleEvent bundleEvent = new BundleEvent(BundleEvent.STARTED, bundle);
when(metaTypeService.getMetaTypeInformation(bundle)).thenReturn(metaTypeInfo);
when(metaTypeInfo.getPids()).thenReturn(pids);
when(metaTypeInfo.getObjectClassDefinition("a", null)).thenReturn(ocd);
when(ocd.getAttributeDefinitions(ALL)).thenReturn(new AttributeDefinition[] { ad });
mockADWithoutDefaultValue();
when(bundleContext1.getBundle(0)).thenReturn(systemBundle);
when(bundle.getState()).thenReturn(ACTIVE);
when(bundle.getBundleContext()).thenReturn(bundleContext1);
extender.addingBundle(bundle, bundleEvent);
Thread.sleep(1000);
FeatureDTO feature = manager.getFeatures().collect(Collectors.toList()).get(0);
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findFirst().get();
assertEquals(FEATURE_ID, feature.id);
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
feature = manager.getFeatures(FEATURE_ID).findAny().get();
assertEquals(FEATURE_DESC, feature.description);
assertFalse(feature.isEnabled);
when(configurationAdmin.getConfiguration("a", "?")).thenThrow(IOException.class);
final ConfigurationEvent configEvent = new ConfigurationEvent(reference, 1, null, "a");
manager.configurationEvent(configEvent);
final FeatureDTO updatedFeature = manager.getFeatures(FEATURE_ID).findAny().get();
assertFalse(updatedFeature.isEnabled);
}
示例14: testSimple
import org.osgi.service.cm.ConfigurationEvent; //导入依赖的package包/类
public void testSimple() throws Exception {
final Semaphore s = new Semaphore(0);
context.registerService(ConfigurationListener.class, new ConfigurationListener() {
@Override
public void configurationEvent(ConfigurationEvent event) {
switch (event.getPid()) {
case "singleton" :
s.release();
break;
default :
if (event.getFactoryPid().equals("factory")) {
s.release();
}
break;
}
}
}, null);
Bundle a = doBundleFor("a.json");
assertEquals("check if we're running", Bundle.ACTIVE, a.getState());
//
// See if we got our 3 updates
//
if (!s.tryAcquire(3, 100, TimeUnit.SECONDS)) {
fail("Cannot find updates");
}
checkConfigs(1,2);
//
// Check that the configs are persistent
//
a.uninstall();
checkConfigs(1,2);
//
// Now we make a new bundle that will set a new port for the singleton (10)
// and will change the first factory, ignore the second, and add a third
//
Bundle b = doBundleFor("b.json");
if (!s.tryAcquire(4, 100, TimeUnit.SECONDS)) {
fail("Cannot find updates");
}
checkConfigs(10,3);
b.uninstall();
}