I think I've narrowed this down to a test case but am not sure if it is a bug or just incompatible bundles.

We've got a legacy application using struts 1.1. Bottom line here is that the struts 1.1 bundle (see EBR artifact names and versions below) requires several other bundles in play, which we have, but they don't seem to play well together.

To reproduce simply, I can drop the following into the pickup folder of a CLEAN dm server 2 (I have tried M5, CI-453 and CI-458) in the order listed here:
  1. com.springsource.org.apache.commons.collections-3.2.1
  2. com.springsource.org.apache.commons.beanutils-1.8.0
  3. com.springsource.org.apache.commons.digester-1.8.1
  4. com.springsource.org.apache.struts-1.1.0


The error that you get is very unhelpful, however:
Code:
[2009-11-11 17:24:12.389] fs-watcher                   <DE0018E> Unable to install application from location 'file:/R:/bin/springsource/springsource-dm-server-2.0.0.CI-453/pickup/com.springsource.org.apache.struts-1.1.0.jar'. Could not satisfy constraints for bundle 'com.springsource.org.apache.struts' at version '1.1.0'. Cannot resolve: com.springsource.org.apache.struts
    Unsatisfied leaf constraints:
. 
com.springsource.kernel.deployer.core.DeploymentException: Dependency satisfaction failed
	at com.springsource.kernel.deployer.core.internal.PipelinedApplicationDeployer.performInstall(PipelinedApplicationDeployer.java:250)
	at com.springsource.kernel.deployer.core.internal.PipelinedApplicationDeployer.deploy(PipelinedApplicationDeployer.java:167)
	at com.springsource.kernel.deployer.hot.HotDeploymentFileSystemListener.deploy(HotDeploymentFileSystemListener.java:192)
	at com.springsource.kernel.deployer.hot.HotDeploymentFileSystemListener.onChange(HotDeploymentFileSystemListener.java:89)
	at com.springsource.util.io.FileSystemChecker.notifyListeners(FileSystemChecker.java:182)
	at com.springsource.util.io.FileSystemChecker.check(FileSystemChecker.java:145)
	at com.springsource.kernel.deployer.hot.WatchTask.run(WatchTask.java:69)
	at java.lang.Thread.run(Thread.java:619)
Caused by: com.springsource.kernel.osgi.framework.UnableToSatisfyBundleDependenciesException: Unable to satisfy dependencies of bundle 'com.springsource.org.apache.struts' at version '1.1.0': Cannot resolve: com.springsource.org.apache.struts
    Unsatisfied leaf constraints:

	at com.springsource.kernel.install.pipeline.stage.resolve.internal.ResolveStage.diagnoseResolutionFailure(ResolveStage.java:105)
	at com.springsource.kernel.install.pipeline.stage.resolve.internal.ResolveStage.process(ResolveStage.java:74)
	at com.springsource.kernel.install.pipeline.internal.StandardPipeline.doProcessTree(StandardPipeline.java:71)
	at com.springsource.kernel.install.pipeline.internal.CompensatingPipeline.doProcessTree(CompensatingPipeline.java:80)
	at com.springsource.kernel.install.pipeline.stage.AbstractPipelineStage.process(AbstractPipelineStage.java:50)
	at com.springsource.kernel.install.pipeline.internal.StandardPipeline.doProcessTree(StandardPipeline.java:71)
	at com.springsource.kernel.install.pipeline.stage.AbstractPipelineStage.process(AbstractPipelineStage.java:50)
	at com.springsource.kernel.deployer.core.internal.PipelinedApplicationDeployer.performInstall(PipelinedApplicationDeployer.java:247)
	... 7 more
[2009-11-11 17:24:12.389] fs-watcher                   <HD0002E> Hot deploy failed for resource 'R:\bin\springsource\springsource-dm-server-2.0.0.CI-453\pickup\com.springsource.org.apache.struts-1.1.0.jar'.
What's more, from the console I see that the struts module is installed, but not started, obviously, so if I start it, I get:
Code:
Error occured while starting bundle '[62] com.springsource.org.apache.struts-1.1.0' : The bundle could not be resolved. Reason: Package uses conflict: Import-Package: org.apache.commons.digester; version="[1.8.0,2.0.0)"
But digester is now active at 1.8.0 (here's a snippet from executing bundles in the console):
Code:
57  Active        com.springsource.server.splash-2.0.0.D-20091027131059
58  Active        com.springsource.org.apache.commons.collections-3.2.1
59  Active        com.springsource.org.apache.commons.beanutils-1.8.0
60  Active        com.springsource.org.apache.commons.digester-1.8.1
61  Active        com.springsource.slf4j.org.apache.commons.logging-1.5.6
62  Installed     com.springsource.org.apache.struts-1.1.0
The best I've been able to come up with is that digester has pulled in com.springsource.slf4j.org.apache.commons.logging-1.5.6 to satisfy the import for org.apache.commons.logging. However, once that is done, any subsequent request for that package resolves to two bundles:

Code:
Package:org.apache.commons.logging
Importers:
2   Resolved      org.springframework.aop-3.0.0.RC1
5   Resolved      org.springframework.beans-3.0.0.RC1
6   Resolved      org.springframework.core-3.0.0.RC1
7   Resolved      org.springframework.context-3.0.0.RC1
8   Resolved      org.springframework.osgi.core-1.2.1
9   Resolved      org.springframework.osgi.extender-1.2.1
10  Resolved      org.springframework.osgi.io-1.2.1
33  Resolved      com.springsource.org.apache.commons.httpclient-3.1.0
43  Resolved      org.springframework.oxm-3.0.0.RC1
44  Resolved      org.springframework.web-3.0.0.RC1
45  Resolved      com.springsource.server.admin.content-2.0.0.D-20091027131059
46  Resolved      com.springsource.server.admin.web-2.0.0.D-20091027131059
49  Resolved      org.springframework.context.support-3.0.0.RC1
50  Resolved      org.springframework.jdbc-3.0.0.RC1
51  Resolved      org.springframework.js-2.0.8.RELEASE
52  Resolved      org.springframework.transaction-3.0.0.RC1
53  Resolved      org.springframework.web.servlet-3.0.0.RC1
59  Resolved      com.springsource.org.apache.commons.beanutils-1.8.0
60  Resolved      com.springsource.org.apache.commons.digester-1.8.1
62  Resolved      com.springsource.org.apache.struts-1.1.0
Exporters:
1   Resolved      com.springsource.region.user-0.0.0
61  Resolved      com.springsource.slf4j.org.apache.commons.logging-1.5.6
So my questions:
  1. Am I on the right track trying to figure this out?
  2. What is com.springsource.region.user-0.0.0 doing exporting this package?
  3. How can this be resolved? The two things exporting this package come from dm server's default install - I've provided neither of these.