X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.osgi%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fosgi%2FOsgiExecutionModulesManager.java;h=5a8d3da5437ac728876c78a536c9910dad0c6ab4;hb=e153254668834a28b10411febed79bb2a07bae7b;hp=4ae06f8b3e53bb154a4a91faed1d83be33aea792;hpb=84023bc4ff86c86543e3010dbb60a98ffb162bdb;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java index 4ae06f8b3..5a8d3da54 100644 --- a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java +++ b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiExecutionModulesManager.java @@ -189,28 +189,41 @@ public class OsgiExecutionModulesManager extends protected ExecutionFlow findExecutionFlow(String moduleName, String moduleVersion, String flowName) { - String filter = "(&(Bundle-SymbolicName=" + moduleName - + ")(org.springframework.osgi.bean.name=" + flowName + "))"; + String filter = moduleVersion == null || moduleVersion.equals("0.0.0") ? "(&(Bundle-SymbolicName=" + + moduleName + + ")(org.springframework.osgi.bean.name=" + + flowName + "))" + : "(&(Bundle-SymbolicName=" + moduleName + ")(Bundle-Version=" + + moduleVersion + + ")(org.springframework.osgi.bean.name=" + flowName + + "))"; return bundlesManager.getSingleServiceStrict(ExecutionFlow.class, filter, true); } protected ExecutionContext findExecutionContext(String moduleName, String moduleVersion) { - String filter = "(&(Bundle-SymbolicName=" + moduleName - + ")(Bundle-Version=" + moduleVersion + "))"; + String filter = moduleFilter(moduleName, moduleVersion); return bundlesManager.getSingleServiceStrict(ExecutionContext.class, filter, true); } protected ExecutionFlowDescriptorConverter findExecutionFlowDescriptorConverter( String moduleName, String moduleVersion) { - String filter = "(&(Bundle-SymbolicName=" + moduleName - + ")(Bundle-Version=" + moduleVersion + "))"; + String filter = moduleFilter(moduleName, moduleVersion); return bundlesManager.getSingleService( ExecutionFlowDescriptorConverter.class, filter, false); } + /** Only based on symbolic name if version is null or "0.0.0" */ + protected String moduleFilter(String moduleName, String moduleVersion) { + return moduleVersion == null || moduleVersion.equals("0.0.0") ? "(Bundle-SymbolicName=" + + moduleName + ")" + : "(&(Bundle-SymbolicName=" + moduleName + ")(Bundle-Version=" + + moduleVersion + "))"; + + } + /** * Builds a minimal realized flow, based on the provided information * (typically from the command line). @@ -291,6 +304,10 @@ public class OsgiExecutionModulesManager extends try { Bundle bundle = bundlesManager.findRelatedBundle(new OsgiBundle( nameVersion)); + if (bundle == null) + throw new SlcException("Counld not find bundle for " + + nameVersion); + bundlesManager.startSynchronous(bundle); if (isSpringInstrumented(bundle)) { // Wait for Spring application context to be ready