Jahia 7.3
Jahia 8
Get latest/started version of a module
Question
How to get the latest version or stated version of a module?
Answer
To get the latest bundle, follow code snippet could be used (example with event module):
String symbolicName = "event";
org.osgi.framework.Bundle latestBundle = null;
for (org.osgi.framework.Bundle bundle : org.jahia.osgi.FrameworkService.getBundleContext().getBundles()) {
String n = bundle.getSymbolicName();
if (org.apache.commons.lang.StringUtils.equals(n, symbolicName)) {
if (latestBundle == null) {
latestBundle = bundle;
} else if (latestBundle.getVersion().compareTo(bundle.getVersion()) < 0) {
latestBundle = bundle;
}
}
}
log.info("Latest bundle found: " + latestBundle.getSymbolicName() + " in version " + latestBundle.getVersion() + " " + latestBundle.getLocation());
If you want to get the started bundle you can use follow code (example with event module):
String symbolicName = "event";
org.osgi.framework.Bundle startedBundle = null;
for (org.osgi.framework.Bundle bundle : org.jahia.osgi.FrameworkService.getBundleContext().getBundles()) {
String n = bundle.getSymbolicName();
if (org.apache.commons.lang.StringUtils.equals(n, symbolicName)) {
if (bundle.getState() == org.osgi.framework.Bundle.ACTIVE) {
startedBundle = bundle;
break;
}
}
}
if (startedBundle != null) {
log.info("Started bundle found: " + startedBundle.getSymbolicName() + " in version " + startedBundle.getVersion() + " " + startedBundle.getLocation());
} else {
log.info("No started " + symbolicName + " bundle found!");
}
The code can be executed directly in the JCR Console.