package org.apache.aries.subsystem.core.internal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.osgi.resource.Resource;
import org.osgi.service.coordinator.Coordination;
public class InstallDependencies {
public void install(BasicSubsystem subsystem, BasicSubsystem parent, Coordination coordination) throws Exception{
// Install dependencies first...
List<Resource> dependencies = new ArrayList<Resource>(subsystem.getResource().getInstallableDependencies());
Collections.sort(dependencies, new InstallResourceComparator());
for (Resource dependency : dependencies)
ResourceInstaller.newInstance(coordination, dependency, subsystem).install();
for (Resource dependency : subsystem.getResource().getSharedDependencies()) {
// TODO This needs some more thought. The following check
// protects against a child subsystem that has its parent as a
// dependency. Are there other places of concern as well? Is it
// only the current parent that is of concern or should all
// parents be checked?
if (parent==null || !dependency.equals(parent))
ResourceInstaller.newInstance(coordination, dependency, subsystem).install();
}
}
}