private static String extractInvalidityReason(InstanceDescription description) { // As it generally comes from the @Requires, let's have a look DependencyHandlerDescription deps = (DependencyHandlerDescription) description.getHandlerDescription("org.apache.felix.ipojo:requires"); if (deps != null && !deps.isValid()) { for (DependencyDescription dd : deps.getDependencies()) { if (dd.getState() == DependencyModel.UNRESOLVED) { if (dd.getSpecification().equals(Template.class.getName())) { // View case return "Missing template : " + extractTemplateName(dd.getFilter()); } else if (dd.getSpecification().equals(Crud.class.getName())) { // Crud case return "Missing model : " + extractModelName(dd.getFilter()); } // General case return "Missing service : " + dd.getSpecification(); } } } // It's not the dependency handler for (HandlerDescription hd : description.getHandlers()) { if (!hd.isValid()) { return "Invalid handler " + hd.getHandlerName(); } } return ""; }