Activation activation = subsystemState.getActivationPolicy();
Mode initialMode = (activation == Activation.EAGER ? Mode.ACTIVE : Mode.LAZY);
// Configure the {@link Framework} builder
FrameworkBuilder builder = FrameworkBuilderFactory.create(props, initialMode);
builder.setServiceContainer(serviceContainer);
builder.setServiceTarget(serviceTarget);
builder.createFrameworkServices(serviceContainer, true);
builder.registerIntegrationService(FrameworkPhase.CREATE, new BundleLifecycleIntegration());
builder.registerIntegrationService(FrameworkPhase.CREATE, new FrameworkModuleIntegration(props));
builder.registerIntegrationService(FrameworkPhase.CREATE, new ModuleLoaderIntegration());
builder.registerIntegrationService(FrameworkPhase.CREATE, new SystemServicesIntegration(resource, extensions));
builder.registerIntegrationService(FrameworkPhase.INIT, new BootstrapBundlesIntegration());
builder.registerIntegrationService(FrameworkPhase.INIT, new PersistentBundlesIntegration(deploymentTracker));
// Install the services to create the framework
builder.installServices(FrameworkPhase.CREATE, serviceTarget, verificationHandler);
if (activation == Activation.EAGER) {
builder.installServices(FrameworkPhase.INIT, serviceTarget, verificationHandler);
builder.installServices(FrameworkPhase.ACTIVE, serviceTarget, verificationHandler);
}
// Create the framework activator
FrameworkActivator.create(builder);