Noting that in the next EAP, a selection of classes from the following packages have been extracted to the new artifact com.atlassian.confluence:confluence-struts
Quick update on the migration to PluginSettings (due to Bandana deprecation):
Indeed, we in our app had to handle manually only a Map<String, Object> value; all other values (String, Integer, Long, Boolean) were migrated automatically by CF10. Looks good
A small side-effect we noticed:
For apps’s Scheduled Jobs the run-history is wiped. I think because they are stored as List<Object> in Bandana, which are not auto-migrated (only List<String> is auto-migrated). Not a big deal, but wanted to mention it anyway.
This shouldn’t be the case, unless you are attempting to retrieve this data via PluginSettings directly rather than via the schedule job manager/service APIs.
But yes, this particular data has not been automatically migrated to the new PLUGIN_SETTING table for the reason you’ve stated. There are still a handful of internal Confluence classes that are still writing/reading from the old BANDANA table and we are still in the process of manually migrating these usages (and their associated data).
It is not provided anymore because you recommend to rely on confluence-plugins-platform-pom. The Atlassian Spring Scanner 6.0.0 doesn’t work for us (as reported in this question) because it doesn’t reliably return components from other plugins. Example:
Plugin 1
package com.plugin1;
@Component @ExportAsService(com.plugin2.MyInterface)
public class MyComponent1 implements com.plugin2.MyInterface {...
Plugin 2
package com.plugin2;
public interface MyInterface { ... }
// This command won't work reliably
list = pluginAccessor.getEnabledModulesByClass(com.plugin2.MyInterface.class);
// 'list' doesn't contain MyComponent1
If you can give me any implementation which can retrieve components from other plugins that implement our interface, I would be able to drop our dependency on atlassian-plugins-osgi.
And it’s still provided by that artifact and should still be used when defining a ModuleDescriptorFactory using Atlassian Spring Scanner.
I think it’s possible you’ve misunderstood the purpose of the confluence-plugins-platform-pom. It is a BOM which specifies version management for dependencies applicable to Confluence plugin development, It ensures you are compiling against the correct dependency versions for the version of Confluence you are targeting. You must still specify the artifacts which your plugin depends on explicitly - you should simply leave out the version declaration.
You must use version 6.0.0 for guaranteed compatibility with Confluence 10 (DC Platform 8, Jakarta EE 10).
Having had a brief look at your other thread it’s possible there’s another factor at play. The PluginAccessor and the mentioned method are used in Atlassian plugins and we’ve not observed any issues. Given you believe this bug was introduced in Confluence 8.9 (rather than 10.0), I recommend pursuing this with Atlassian developer support who will be able to assist with an initial investigation and escalate to the appropriate developer team if necessary.
You may also choose to experiment with converting your plugin to Spring Java config, although PluginAccessor behaviour should not be impacted by this.
We’ve not asked plugin developers to drop this dependency. The packages in this artifact which were previously OSGi exported will remain so.
You should switch to jakarta.annotation. If your plugin’s OSGi import instructions still contain javax.annotation due to a leak, you can explicitly exclude it by adding !javax.annotation.*, to your import instructions.
Thank you for your help! We have switched to jakarta.annotation and have also tried to directly exclude it with !javax.annotation.*, but we still had the same error. So this didn’t helped.
Previous Confluence versions (9.x) provided jakarta.mail.
Using 10.0.0-m105 the jakarta.mail dependency is not available anymore, though it was available in earlier milestone versions.
Is this intended and am I supposed to add the dependency in compile scope?