You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2016/09/06 16:17:51 UTC
svn commit: r1759454 - in /felix/trunk/dependencymanager:
org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/
org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/
org.apache.felix.dependencymanager/ org.apache...
Author: pderop
Date: Tue Sep 6 16:17:51 2016
New Revision: 1759454
URL: http://svn.apache.org/viewvc?rev=1759454&view=rev
Log:
FELIX-5339: Enhance the diagnostics API to retrieve missing custom dependencies (applied the patch provided by Raluca, thanks!).
Modified:
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/DiagnosticsTest.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/DMCommand.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/DependencyGraph.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/packageinfo
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/DiagnosticsTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/DiagnosticsTest.java?rev=1759454&r1=1759453&r2=1759454&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/DiagnosticsTest.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/DiagnosticsTest.java Tue Sep 6 16:17:51 2016
@@ -24,8 +24,11 @@ import java.util.Properties;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentDeclaration;
import org.apache.felix.dm.ConfigurationDependency;
+import org.apache.felix.dm.Dependency;
import org.apache.felix.dm.DependencyManager;
import org.apache.felix.dm.ServiceDependency;
+import org.apache.felix.dm.context.AbstractDependency;
+import org.apache.felix.dm.context.DependencyContext;
import org.apache.felix.dm.diagnostics.CircularDependency;
import org.apache.felix.dm.diagnostics.DependencyGraph;
import org.apache.felix.dm.diagnostics.DependencyGraph.ComponentState;
@@ -112,7 +115,6 @@ public class DiagnosticsTest extends Tes
assertTrue(graph.getMissingDependencies("configuration").isEmpty());
assertTrue(graph.getMissingDependencies("bundle").isEmpty());
assertTrue(graph.getMissingDependencies("resource").isEmpty());
-
}
public void testConfigurationDependencyMissing() throws Exception {
@@ -417,6 +419,42 @@ public class DiagnosticsTest extends Tes
}
+ public void testMissingCustomDependencies() {
+
+ DependencyManager dm = getDM();
+
+ Component component0 = dm.createComponent()
+ .setImplementation(C0.class)
+ .add(dm.createServiceDependency()
+ .setService(S1.class)
+ .setRequired(true))
+ .add(dm.createServiceDependency()
+ .setService(S2.class)
+ .setRequired(true));
+
+
+ Component component1 = dm.createComponent()
+ .setImplementation(S1Impl1.class)
+ .setInterface(S1.class.getName(), null)
+ .add(ToggleDependency.create());
+
+ m_dm.add(component0);
+ m_dm.add(component1);
+
+ DependencyGraph graph = DependencyGraph.getGraph(ComponentState.UNREGISTERED,DependencyState.REQUIRED_UNAVAILABLE);
+
+ List<MissingDependency> missingCustomDependencies = graph.getMissingCustomDependencies();
+ assertEquals(1, missingCustomDependencies.size());
+
+ MissingDependency missingCustomeDependency = missingCustomDependencies.get(0);
+ assertTrue(missingCustomeDependency.getType().equals("toggle"));
+ assertTrue(missingCustomeDependency.getName().equals("false"));
+
+ List<MissingDependency> missingDependencies = graph.getMissingDependencies("service");
+ assertEquals(1, missingDependencies.size());
+ }
+
+
static interface S1 {}
static interface S2 {}
static interface S3 {}
@@ -461,5 +499,48 @@ public class DiagnosticsTest extends Tes
static class S8Impl1 implements S8 {
public S8Impl1() {}
}
+
+ static class CA {
+ public CA(){}
+ }
+
+ static interface ToggleDependency extends Dependency {
+ static ToggleDependency create() {
+ return new ToggleDependencyImpl();
+ }
+
+ }
+
+ static class ToggleDependencyImpl extends AbstractDependency<ToggleDependencyImpl> implements ToggleDependency {
+
+ public ToggleDependencyImpl() {
+ setRequired(true);
+ }
+
+ public ToggleDependencyImpl(ToggleDependencyImpl prototype) {
+ super(prototype);
+ }
+
+ @Override
+ public Class<?> getAutoConfigType() {
+ return null;
+ }
+
+ @Override
+ public DependencyContext createCopy() {
+ return new ToggleDependencyImpl(this);
+ }
+
+ @Override
+ public String getSimpleName() {
+ return "" + isAvailable();
+ }
+
+ @Override
+ public String getType() {
+ return "toggle";
+ }
+
+ }
}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/DMCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/DMCommand.java?rev=1759454&r1=1759453&r2=1759454&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/DMCommand.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/src/org/apache/felix/dm/shell/DMCommand.java Tue Sep 6 16:17:51 2016
@@ -594,6 +594,12 @@ public class DMCommand {
System.out.println("The following bundle(s) are missing: ");
printMissingDependencies(missingBundleDependencies);
}
+
+ List<MissingDependency> missingCustomDependencies = graph.getMissingCustomDependencies();
+ if(!missingCustomDependencies.isEmpty()) {
+ System.out.println("The following custom dependency(ies) are missing: ");
+ printMissingCustomDependencies(missingCustomDependencies);
+ }
}
private void printCircularDependencies(List<CircularDependency> circularDependencies) {
@@ -606,11 +612,17 @@ public class DMCommand {
}
}
- private void printMissingDependencies(List<MissingDependency> missingConfigDependencies) {
- for(MissingDependency m : missingConfigDependencies) {
+ private void printMissingDependencies(List<MissingDependency> missingDependencies) {
+ for(MissingDependency m : missingDependencies) {
System.out.println(" * " + m.getName() + " for bundle " + m.getBundleName());
}
}
+
+ private void printMissingCustomDependencies(List<MissingDependency> missingDependencies) {
+ for(MissingDependency m : missingDependencies) {
+ System.out.println(" * " + m.getName() + "(" + m.getType() + ")" + " for bundle " + m.getBundleName());
+ }
+ }
private void listResolvedBundles() {
boolean areResolved = false;
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd?rev=1759454&r1=1759453&r2=1759454&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd Tue Sep 6 16:17:51 2016
@@ -36,7 +36,7 @@ Include-Resource: META-INF/=resources/LI
META-INF/=${workspace}/release/resources/changelog.txt
Import-Package: !org.junit,!org.mockito.*,*
Bundle-Activator: org.apache.felix.dm.impl.Activator
-Bundle-Version: 4.3.1
+Bundle-Version: 4.4.0
Bundle-Name: Apache Felix Dependency Manager
Bundle-Description: Provides dynamic service and component dependency management
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/DependencyGraph.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/DependencyGraph.java?rev=1759454&r1=1759453&r2=1759454&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/DependencyGraph.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/DependencyGraph.java Tue Sep 6 16:17:51 2016
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Stack;
+import java.util.stream.Collectors;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentDeclaration;
@@ -60,6 +61,9 @@ public class DependencyGraph {
};
private static final String SERVICE = "service";
+ private static final String CONFIGURATION = "configuration";
+ private static final String BUNDLE = "bundle";
+ private static final String RESOURCE = "resource";
private Map<ComponentDeclaration, DependencyGraphNode> m_componentToNode = new HashMap<>();
private Map<ComponentDependencyDeclaration, DependencyGraphNode> m_dependencyToNode = new HashMap<>();
@@ -354,8 +358,25 @@ public class DependencyGraph {
}
return result;
}
-
- private String getSimpleName(String name) {
+
+ /**
+ * Returns all custom missing dependencies. Custom dependencies are not 'out of the box' dependencies (service, resource,
+ * bundle, configuration).
+ *
+ * @return The missing dependencies which are not 'out of the box dependencies'.
+ */
+ public List<MissingDependency> getMissingCustomDependencies() {
+
+ List<MissingDependency> missingDependencies = getMissingDependencies(null);
+ return missingDependencies.stream().filter(m -> !isOutOfTheBoxDependencyType(m.getType())).collect(Collectors.toList());
+
+ }
+
+ private boolean isOutOfTheBoxDependencyType(String type) {
+ return SERVICE.equals(type) || CONFIGURATION.equals(type) || BUNDLE.equals(type) || RESOURCE.equals(type);
+ }
+
+ private String getSimpleName(String name) {
int cuttOff = name.indexOf("(");
if (cuttOff != -1) {
return name.substring(0, cuttOff).trim();
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/packageinfo?rev=1759454&r1=1759453&r2=1759454&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/packageinfo (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/diagnostics/packageinfo Tue Sep 6 16:17:51 2016
@@ -1 +1 @@
-version 1.0.0
\ No newline at end of file
+version 1.1.0
\ No newline at end of file