You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2010/09/13 16:04:45 UTC
svn commit: r996539 - in
/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl:
OsgiInstallerImpl.java config/ConfigTaskCreator.java
Author: cziegeler
Date: Mon Sep 13 14:04:45 2010
New Revision: 996539
URL: http://svn.apache.org/viewvc?rev=996539&view=rev
Log:
SLING-1737 : Add state management for resources
Modified:
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/config/ConfigTaskCreator.java
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java?rev=996539&r1=996538&r2=996539&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java Mon Sep 13 14:04:45 2010
@@ -138,10 +138,10 @@ public class OsgiInstallerImpl
public void run() {
this.init();
while (active) {
- this.mergeNewResources();
+ final boolean tasksToDo = this.hasOpenTasks();
final SortedSet<OsgiInstallerTask> tasks = this.computeTasks();
- if (tasks.isEmpty() && !retriesScheduled) {
+ if (tasks.isEmpty() && !tasksToDo && !retriesScheduled) {
// No tasks to execute - wait until new resources are
// registered
this.cleanupInstallableResources();
@@ -392,6 +392,22 @@ public class OsgiInstallerImpl
}
}
+ private boolean hasOpenTasks() {
+ // check if there is something to do
+ for(final String entityId : this.persistentList.getEntityIds()) {
+ final EntityResourceList group = this.persistentList.getEntityResourceList(entityId);
+ if ( !group.isEmpty() ) {
+ final RegisteredResource first = group.getFirst();
+
+ if ( first != null &&
+ (first.getState() == RegisteredResource.State.UNINSTALL || first.getState() == RegisteredResource.State.INSTALL) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
private void printResources(String hint) {
if ( !logger.isDebugEnabled() ) {
return;
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/config/ConfigTaskCreator.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/config/ConfigTaskCreator.java?rev=996539&r1=996538&r2=996539&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/config/ConfigTaskCreator.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/config/ConfigTaskCreator.java Mon Sep 13 14:04:45 2010
@@ -59,9 +59,9 @@ public class ConfigTaskCreator {
*/
public OsgiInstallerTask createTask(final RegisteredResource toActivate) {
// if there is no config admin, just return
- // if ( this.configAdminServiceTracker.getService() == null ) {
- // return null;
- // }
+ if ( this.configAdminServiceTracker.getService() == null ) {
+ return null;
+ }
final OsgiInstallerTask result;
if (toActivate.getState() == RegisteredResource.State.UNINSTALL) {
result = new ConfigRemoveTask(toActivate, this.configAdminServiceTracker);