do not filter optional dependencies from DS
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1407155 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole-plugins/servicediagnostics/changelog.txt b/webconsole-plugins/servicediagnostics/changelog.txt
index 5fa9803..bc3f516 100644
--- a/webconsole-plugins/servicediagnostics/changelog.txt
+++ b/webconsole-plugins/servicediagnostics/changelog.txt
@@ -1,13 +1,20 @@
-Changes from 3.0.0 to 3.0.1
+Changes from 0.1.1 to 0.2.0
---------------------------
** Bug
- [FELIX-3005] - Compatibility API does not add components in DependencyManager
-
** Improvement
-Release 3.0.0
+* complete rewrite
+* support for service properties
+* detection of circular dependencies
+* doesn't embedd scala and json anymore
+
+** Backward compatibility
+
+* broken: plugin API changed
+
+Release 0.1.1
-------------
Initial version.
diff --git a/webconsole-plugins/servicediagnostics/core/src/main/resources/html/index.html b/webconsole-plugins/servicediagnostics/core/src/main/resources/html/index.html
index 85a2f84..8883bcb 100644
--- a/webconsole-plugins/servicediagnostics/core/src/main/resources/html/index.html
+++ b/webconsole-plugins/servicediagnostics/core/src/main/resources/html/index.html
@@ -64,7 +64,7 @@
// show unresolved
var unresolved = json.unresolved
if (unresolved) for (s in unresolved) {
- $("#warning").html("unresolvable components detected!");
+ $("#warning").html("circular dependencies detected!");
for (i = 0; i < unresolved[s].length; i++) {
g.addEdge(s, unresolved[s][i], { directed : true } );
}
diff --git a/webconsole-plugins/servicediagnostics/core/src/main/scala/servicediagnostics/impl/DSNotAvail.scala b/webconsole-plugins/servicediagnostics/core/src/main/scala/servicediagnostics/impl/DSNotAvail.scala
index f29885c..9a44cdb 100644
--- a/webconsole-plugins/servicediagnostics/core/src/main/scala/servicediagnostics/impl/DSNotAvail.scala
+++ b/webconsole-plugins/servicediagnostics/core/src/main/scala/servicediagnostics/impl/DSNotAvail.scala
@@ -45,7 +45,6 @@
comp <- Option(scrService.getComponents).flatten.map(_.asInstanceOf[Component])
service <- Option(comp.getServices).flatten
deps = Option(comp.getReferences).flatten
- .filterNot(_.isOptional)
.map(dep => new Dependency(dep.getServiceName,
dep.getTarget,
dep.isSatisfied)).toList
diff --git a/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala b/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala
index f0dde6b..d0c3a18 100644
--- a/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala
+++ b/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala
@@ -100,7 +100,7 @@
.setCallbacks(null, null, null)
.setRequired(true)))
- // test3: loop
+ // test3: loop (required)
// DML1 -> DSL1 -> DML2 -> DML1
dm.add(createComponent
@@ -131,6 +131,22 @@
.setAutoConfig(false)
.setCallbacks(null, null, null)
.setRequired(true)))
+
+ // test4: loop (optional)
+ // DSL2 -(opt)-> DML3 --> DSL3 -> DSL2
+
+ dm.add(createComponent
+ .setInterface(classOf[DML3].getName, new jHT[String,String]() {{
+ put("p", "3")
+ put("q", "3")
+ }})
+ .setImplementation(classOf[DML3])
+ .add(createServiceDependency
+ .setService(classOf[DSL3], "(q=3)")
+ .setAutoConfig(false)
+ .setCallbacks(null, null, null)
+ .setRequired(true)))
+
}
override def destroy(bc:BundleContext, dm:DependencyManager) = {}
@@ -152,3 +168,4 @@
class DMP
class DML1
class DML2
+class DML3
diff --git a/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala b/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala
index 1a830cf..71fa40f 100644
--- a/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala
+++ b/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala
@@ -48,15 +48,15 @@
@Reference(target="(p=2)") def bind(s:DML2) = {}
}
-/* DSL2 -> DML2 -x-> DSL3 -> DSL2
-@Component(provide=Array(classOf[DSL2]), properties=Array("p=1","q=0"))
+// DSL2 -(opt)-> DML3 --> DSL3 -> DSL2
+@Component(provide=Array(classOf[DSL2]), properties=Array("p=1","q=2"))
class DSL2
{
- @Reference(target="(p=2)") def bind(s:DML2) = {}
+ @Reference(target="(p=3)", optional=true, dynamic=true) def bind(s:DML3) = {}
}
-@Component(provide=Array(classOf[DSL3]), properties=Array("p=1","q=0"))
+@Component(provide=Array(classOf[DSL3]), properties=Array("p=0","q=3"))
class DSL3
{
- @Reference(target="(q=0)") def bind(s:DSL2) = {}
-}*/
+ @Reference(target="(q=2)") def bind(s:DSL2) = {}
+}