You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/04/24 08:15:37 UTC
svn commit: r1792434 -
/felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java
Author: cziegeler
Date: Mon Apr 24 08:15:37 2017
New Revision: 1792434
URL: http://svn.apache.org/viewvc?rev=1792434&view=rev
Log:
Implementing correct configuration admin handling (WiP)
Modified:
felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java
Modified: felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java?rev=1792434&r1=1792433&r2=1792434&view=diff
==============================================================================
--- felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java (original)
+++ felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java Mon Apr 24 08:15:37 2017
@@ -389,36 +389,41 @@ public class Configurator {
// if there is a configuration to activate, we can directly activate it
// without deactivating (reducing the changes of the configuration from two
// to one)
+ boolean noRetryNeeded = true;
if ( toActivate != null && toActivate.getState() == ConfigState.INSTALL ) {
- activate(configList, toActivate);
+ noRetryNeeded = activate(configList, toActivate);
}
if ( toActivate == null && toDeactivate != null ) {
- deactivate(configList, toDeactivate);
+ noRetryNeeded = deactivate(configList, toDeactivate);
}
- // remove all uninstall(ed) configurations
- final Iterator<Config> iter = configList.iterator();
- boolean foundInstalled = false;
- while ( iter.hasNext() ) {
- final Config cfg = iter.next();
- if ( cfg.getState() == ConfigState.UNINSTALL || cfg.getState() == ConfigState.UNINSTALLED ) {
- if ( cfg.getFiles() != null ) {
- for(final File f : cfg.getFiles()) {
- f.delete();
+ if ( noRetryNeeded ) {
+ // remove all uninstall(ed) configurations
+ final Iterator<Config> iter = configList.iterator();
+ boolean foundInstalled = false;
+ while ( iter.hasNext() ) {
+ final Config cfg = iter.next();
+ if ( cfg.getState() == ConfigState.UNINSTALL || cfg.getState() == ConfigState.UNINSTALLED ) {
+ if ( cfg.getFiles() != null ) {
+ for(final File f : cfg.getFiles()) {
+ f.delete();
+ }
+ }
+ iter.remove();
+ } else if ( cfg.getState() == ConfigState.INSTALLED ) {
+ if ( foundInstalled ) {
+ cfg.setState(ConfigState.INSTALL);
+ } else {
+ foundInstalled = true;
}
- }
- iter.remove();
- } else if ( cfg.getState() == ConfigState.INSTALLED ) {
- if ( foundInstalled ) {
- cfg.setState(ConfigState.INSTALL);
- } else {
- foundInstalled = true;
}
}
- }
- // mark as processed
- configList.setHasChanges(false);
+ // mark as processed
+ configList.setHasChanges(false);
+ } else {
+ // TODO
+ }
}
private ConfigurationAdmin getConfigurationAdmin(final long configAdminServiceBundleId) {
@@ -449,7 +454,7 @@ public class Configurator {
// check for configuration admin
Long configAdminServiceBundleId = this.state.getConfigAdminBundleId(cfg.getBundleId());
if ( configAdminServiceBundleId == null ) {
- final Bundle configBundle = this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).getBundleContext().getBundle(cfg.getBundleId());
+ final Bundle configBundle = cfg.getBundleId() == -1 ? this.bundleContext.getBundle() : this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).getBundleContext().getBundle(cfg.getBundleId());
if ( configBundle != null ) {
try {
final Collection<ServiceReference<ConfigurationAdmin>> refs = configBundle.getBundleContext().getServiceReferences(ConfigurationAdmin.class, null);