# Preparing for Confluence 9.0 - EAP out now

**URL:** <https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160>\
**Category:** Confluence Data Center Announcements\
**Tags:** announcement, platform-7, eap, confluence-data-center, data-center\
**Created:** [January 11, 2024, 10:59pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160 "2024-01-11T22:59:44Z")\
**Posts on this page:** 20\
**Page:** 20

<div class="post-metadata">

**Author:** ![ashraf.teleb85](https://avatars.discourse-cdn.com/v4/letter/a/82dd89/32.png) [@ashraf.teleb85](https://community.developer.atlassian.com/u/ashraf.teleb85)\
**Post date:** [July 2, 2024, 2:49pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/388 "2024-07-02T14:49:56Z")

</div>

Hi,

How can we create a new user currently (and without having a logged in user (Anonymous))

Thanks

---

<div class="post-metadata">

**Author:** ![Clark](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/clark/32/51057_2.png) [@Clark](https://community.developer.atlassian.com/u/Clark)\
**Post date:** [July 2, 2024, 3:00pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/389 "2024-07-02T15:00:29Z")

</div>

That is correct. We would have to change our builder to put the param we need within the WebPanel class inside a `<context-provider...>` tag.

It would be better if we could just get them from the Web-panel params, but I could not get the Web-Panel class to read them from the XML.

---

<div class="post-metadata">

**Author:** ![remie](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/remie/32/34985_2.png) [@remie](https://community.developer.atlassian.com/u/remie)\
**Post date:** [July 2, 2024, 3:11pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/390 "2024-07-02T15:11:59Z")

</div>

It would still be preferable to be able to get the parameters of the Web Panel itself. I second the request from @rlander to ensure that this remains available in Platform 7 (for all products)

---

<div class="post-metadata">

**Author:** ![anastoumi](https://avatars.discourse-cdn.com/v4/letter/a/ecccb3/32.png) [@anastoumi](https://community.developer.atlassian.com/u/anastoumi)\
**Post date:** [July 2, 2024, 4:44pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/391 "2024-07-02T16:44:48Z")

</div>

Here the log file (i removed the older logs : not related), and the java config file

[https://drive.google.com/drive/folders/1mbmenuxnrD2n0KClWlcGwK9rY0vI9O8n?usp=sharing](https://drive.google.com/drive/folders/1mbmenuxnrD2n0KClWlcGwK9rY0vI9O8n?usp=sharing)

---

<div class="post-metadata">

**Author:** ![scott.dudley](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/scott.dudley/32/53884_2.png) [@scott.dudley](https://community.developer.atlassian.com/u/scott.dudley)\
**Post date:** [July 2, 2024, 6:41pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/392 "2024-07-02T18:41:09Z")

</div>

Hi Atlassians (and maybe @kmacleod),

I see that a couple of new breaking changes have landed in 9.0.0-beta2:

## Banned package warnings for `javax.ws.rs`

I am now seeing banned package warnings for `javax.ws.rs` when loading apps (although the app still seems to work). This was working without logging warnings in the last half-dozen 9.0 milestones. The [REST upgrade guide](https://bitbucket.org/atlassian/atlassian-rest/src/8.0.x/UPGRADE_720.md#markdown-header-atlassian-rest-v2) suggests that `javax.ws.rs` is still the correct set of annotations to use for REST v2 annotations, so I don’t think I am doing anything wrong.

To be precise, I am now seeing errors like these:

`2024-07-02 13:58:58,092 WARN [UpmAsynchronousTaskManager:thread-4] [osgi.hook.dmz.DmzResolverHook] filterMatches Package javax.ws.rs is internal and is not available for export to plugin com.myapp`

Further investigation in `DmzResolverHook` shows that the package resolution is attempted once against `javax.ws.rs` in the system bundle (which passes), but resolution is attempted again against the old REST v1 module. As far as I know, my app isn’t referencing the REST v1 module at all, and it is the OSGi framework that is just looking for another match for `javax.ws.rs`. Atlassian probably isn’t seeing this in its tests because its own plugins are exempt from many of these filters.

Import resolution succeeds against this bundle:

`[org.apache.felix.framework [0](R 0)] osgi.wiring.package; {bundle-symbolic-name=[Ljava.lang.String;@4b8611d9, bundle-version=7.0.5, version=2.1.6, osgi.wiring.package=javax.ws.rs}`

Import resolution fails and produces WARN messages against this bundle:

`[com.atlassian.plugins.rest.atlassian-rest-module [165](R 165.0)] osgi.wiring.package; {bundle-symbolic-name=com.atlassian.plugins.rest.atlassian-rest-module, atlassian-access=internal, bundle-version=8.0.3, osgi.wiring.package=javax.ws.rs, version=1.1.1}`

Version-pinning the OSGi import to 2.x to avoid this warning is not an option because it needs to work cross-major.

## Ability to eliminate warnings for optional banned imports

With the web-fragments changes in 9.0.0-beta2, to retain cross-major compatibility, our app also needs to support both `com.atlassian.plugin.web.descriptors.WebItemModuleDescriptor` and the new `com.atlassian.plugin.web.api.descriptors.WebItemModuleDescriptor` class.

We got this working by adding a `resolution:="optional"` to the import of the old class, but this too dumps WARN messages in the log whenever the plugin is loaded on 9.x:

`2024-07-02 13:51:16,756 WARN [QuickReload - Plugin Installer] [osgi.hook.dmz.DmzResolverHook] filterMatches Package com.atlassian.plugin.web.descriptors is internal and is not available for export to plugin com.myapp`

Can the `DmzResolverHook` be adjusted so that it (say) logs at a `DEBUG` level when refusing an optional import, rather than a `WARN` (which could be saved for required imports)? Alternatively, is there another approach you would suggest to vendors to avoid spamming customers’ logs with warnings?

Thanks!  
Scott

---

<div class="post-metadata">

**Author:** ![scott.dudley](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/scott.dudley/32/53884_2.png) [@scott.dudley](https://community.developer.atlassian.com/u/scott.dudley)\
**Post date:** [July 2, 2024, 7:12pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/393 "2024-07-02T19:12:02Z")

</div>

While verifying that I didn’t have any further REST v1 references, I saw that the app still had one dependency on the following artifact:

```auto
        <dependency>
            <groupId>com.atlassian.confluence</groupId>
            <artifactId>confluence-rest-api</artifactId>
            <scope>provided</scope>
        </dependency>

```

Removing this dependency does not change the error message situation mentioned in the previous post, but this artifact is also needed to implement a `ServiceExceptionMapper`, [as suggested by Atlassian to support read-only mode](https://developer.atlassian.com/server/confluence/how-to-make-your-add-on-compatible-with-read-only-mode/#2-with-an-existing-rest-api-at-the-back-end).

I mentioned the ServiceExceptionMapper issue in more detail back in [February](https://community.developer.atlassian.com/t/platform-7-upgrade-in-progress-learn-about-the-first-highlights-and-changes/76945/29) but I do not recall seeing any related changes come through since then.

Will vendors be able to rely on the `confluence-rest-api` artifact continuing to work with REST v2, or are there more changes forthcoming?

---

<div class="post-metadata">

**Author:** ![Digi](https://avatars.discourse-cdn.com/v4/letter/d/8baadc/32.png) [@Digi](https://community.developer.atlassian.com/u/Digi)\
**Post date:** [July 2, 2024, 11:20pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/394 "2024-07-02T23:20:23Z")

</div>

Thanks for the update, @jens! 🙂

---

<div class="post-metadata">

**Author:** ![kmacleod](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/kmacleod/32/49635_2.png) [@kmacleod](https://community.developer.atlassian.com/u/kmacleod)\
**Post date:** [July 2, 2024, 11:35pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/395 "2024-07-02T23:35:53Z")

</div>

Hi @EliasBrattliSorensen

The `com.atlassian.upm.api.util.Option` class no longer has any Guava references in the the more recent EAPs, can you verify if this is fixed for you?

The class is still deprecated, though, but there’s not much you can do about that given that `PluginLicenseManager` still uses it.

---

<div class="post-metadata">

**Author:** ![kmacleod](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/kmacleod/32/49635_2.png) [@kmacleod](https://community.developer.atlassian.com/u/kmacleod)\
**Post date:** [July 2, 2024, 11:40pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/396 "2024-07-02T23:40:07Z")

</div>

Hi @ashraf.teleb85

Do you have some simple example code showing how you were using `AttachmentDao` before, and how you’re trying to achieve the same via `AttachmentManager`?

---

<div class="post-metadata">

**Author:** ![ashraf.teleb85](https://avatars.discourse-cdn.com/v4/letter/a/82dd89/32.png) [@ashraf.teleb85](https://community.developer.atlassian.com/u/ashraf.teleb85)\
**Post date:** [July 3, 2024, 2:30am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/397 "2024-07-03T02:30:58Z")

</div>

Sure, I used a code similar to the following

```auto
                    this.attachmentDao = attachmentManager.getAttachmentDao();
...
                    Attachment att = attachmentManager.getAttachment(page, name);
                    ConfluenceUser creator = userAccessor.getUserByName(username);

                    if (creator != null)
                    {
                        att.setCreator(creator);
                        att.setLastModifier(creator);
                        attachmentDao.updateAttachment(att);
                    }

```

I couldn’t use the `AttachmentManager` alone to do that as the creator and last modifier are always set to the `AuthenticatedUserThreadLocal` and doing bulk operations on attachments with a thread for each attachment is not practical.

Thanks

---

<div class="post-metadata">

**Author:** ![jens](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/jens/32/42967_2.png) [@jens](https://community.developer.atlassian.com/u/jens)\
**Post date:** [July 3, 2024, 6:48am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/398 "2024-07-03T06:48:12Z")

</div>

I’d also be interested in this.

@SujayCHegde @MarekTokarski - mentioning you here since you seem to have worked on RESTv2.

I’m not really familiar with the RESTv2 internals, but can’t the `ServiceExceptionMapper` be built into the ‘REST module handler’, so that apps don’t have to subclass and annotate it explicitly?

The annotation handlers for `@ReadOnlyAccessAllowed` etc. are apparently handled by the module already, so why not do the same with the exception mapper?  
If you’d do this, and expose the mapper class at runtime through 9.x somehow, we could simply remove the rest-v1 maven dependency and mapper subclass as soon as we compile against 9.0.0 when supporting 9.x and 10.x.  
(I’m simply assuming here that vendors want to support two major versions and that exception mapper duplication isn’t a problem.)

---

<div class="post-metadata">

**Author:** ![ashraf.teleb85](https://avatars.discourse-cdn.com/v4/letter/a/82dd89/32.png) [@ashraf.teleb85](https://community.developer.atlassian.com/u/ashraf.teleb85)\
**Post date:** [July 3, 2024, 7:12pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/399 "2024-07-03T19:12:15Z")

</div>

Hi,

I’m trying to create a space and populate it on plugin install/upgrade. This requires a user, so I’m creating a temporary user to do that. An overview of the code is as follows:

```auto
@EventListener
	public void handleEvent(PluginEnabledEvent pluginEnabledEvent) 
	{
		if (pluginEnabledEvent.getPlugin().getKey().equals("myplugin"))
		{
			ConfluenceUser user = userAccessor.createUser(new ConfluenceUserImpl("username", "desc", "email"), Credential.unencrypted(generator.generate(20)));
			spaceManager.createSpace("spaceKey", "spaceName", "spaceDesc", user);
...

```

I’m getting exception `com.atlassian.confluence.core.InsufficientPrivilegeException: User [Anonymous] does not have the required privileges.`  
Using `permissionManager.withExemption` doesn’t help

The same code in a scheduled job `public JobRunnerResponse runJob(JobRunnerRequest request) {}` works without the permissions exception!

Can you please help us to achieve that correctly.  
Thanks

---

<div class="post-metadata">

**Author:** ![ggautam](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/ggautam/32/42996_2.png) [@ggautam](https://community.developer.atlassian.com/u/ggautam)\
**Post date:** [July 4, 2024, 4:45am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/400 "2024-07-04T04:45:55Z")

</div>

Hi @aorlov,

There were some unintended JS conversions happening for new Soy editor-templates, we have fixed this for next EAP. Please confirm how it goes on Monday.  
Also, can you please confirm how were you using `atlassian-editor.vm` before 9.0?

Thanks

---

<div class="post-metadata">

**Author:** ![AndreasEbert](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/andreasebert/32/38902_2.png) [@AndreasEbert](https://community.developer.atlassian.com/u/AndreasEbert)\
**Post date:** [July 4, 2024, 6:46am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/401 "2024-07-04T06:46:17Z")

</div>

@ggautam, just to confirm: Seeing that [there already is a Beta of Confluence 9](https://community.developer.atlassian.com/t/confluence-9-0-beta-release-is-available-now/81442/), you sure there will be more weekly EAPs? Would be good indeed, seeing that there are still problems/bugs popping up.

---

<div class="post-metadata">

**Author:** ![ShahrimanMohammad](https://avatars.discourse-cdn.com/v4/letter/s/e79b87/32.png) [@ShahrimanMohammad](https://community.developer.atlassian.com/u/ShahrimanMohammad)\
**Post date:** [July 4, 2024, 7:12am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/402 "2024-07-04T07:12:17Z")

</div>

Hi @kmacleod , the issues can be produce on confluence 9.0.0m-123/132/beta2  
You can test using the DocumentHelper.parseText function from dom4j , during runtime it will throw exception like below.

Example.  
**DocumentHelper.parseText(descriptorXml).getRootElement();**

```auto
2024-07-04 15:06:04,798 ERROR [http-nio-8090-exec-5 url: /rest/forums/latest/pages/forum/status/; user: admin] [forums.controller.rest.ForumStatusResource] getForumStatusUpdate Error : 
 -- url: /rest/forums/latest/pages/forum/status/ | userName: admin | referer: http://localhost:8090/display/DEMO/TESTFORUM | traceId: 719e674ed7aaec78
org.dom4j.DocumentException: class org.dom4j.DocumentFactory cannot be cast to class org.dom4j.DocumentFactory (org.dom4j.DocumentFactory is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @1841e525; org.dom4j.DocumentFactory is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @24a97da5)
	at org.dom4j.io.SAXReader.read(SAXReader.java:513)
	at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:279)
	at com.adaptavist.confluence.forums.controller.rest.ForumStatusResource.getForumStatusUpdate(ForumStatusResource.java:166)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:359)
	at com.atlassian.plugins.rest.v2.jersey.JerseyOsgiServletContainer.doFilter(JerseyOsgiServletContainer.java:74)
	at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:432)
	at com.atlassian.plugins.rest.v2.servlet.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:80)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26)
	at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:38)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:28)
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:41)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:27)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:27)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:27)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:27)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:27)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.plugins.pulp.PulpFilter.doFilter(PulpFilter.java:77)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.analytics.client.filter.UniversalAnalyticsFilter.doFilter(UniversalAnalyticsFilter.java:77)
	at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:34)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.efi.OnboardingFilter.doFilter(OnboardingFilter.java:82)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:35)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:57)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:82)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:53)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.plugins.mobile.filter.MobileAppWebViewFilter.doFilter(MobileAppWebViewFilter.java:74)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:72)
	at com.atlassian.confluence.util.profiling.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:50)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.theme.filter.DefaultRequestOverrideServletFilter.doFilter(DefaultRequestOverrideServletFilter.java:72)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.oauth2.scopes.web.ReadWriteScopeFilter.doFilter(ReadWriteScopeFilter.java:48)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.ratelimiting.internal.filter.RateLimitFilter.doFilter(RateLimitFilter.java:77)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.util.profiling.ConfluenceActivityFilter.doFilter(ConfluenceActivityFilter.java:43)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:58)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.impl.webapp.security.NeoSecurityFilter.doFilter(NeoSecurityFilter.java:66)
	at javax.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at org.apache.struts2.dispatcher.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:122)
	at com.atlassian.confluence.impl.struts.ConfluenceStrutsPrepareFilter.doFilter(ConfluenceStrutsPrepareFilter.java:47)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.cache.TransactionalCacheFactoryCleanupFilter.doFilter(TransactionalCacheFactoryCleanupFilter.java:24)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:20)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.util.UserLoggingContextFilter.doFilter(UserLoggingContextFilter.java:33)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.util.UserNameHeaderFilter.doFilter(UserNameHeaderFilter.java:27)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.web.filter.MauEventFilter.doFilterInternal(MauEventFilter.java:34)
	at com.atlassian.confluence.web.filter.AbstractStaticResourceAwareFilter.doFilter(AbstractStaticResourceAwareFilter.java:44)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
	at com.atlassian.confluence.impl.webapp.SecureAccessFilter.doFilter(SecureAccessFilter.java:123)
	at javax.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.ConfluenceTimeoutFilter.doFilter(ConfluenceTimeoutFilter.java:61)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.HttpSessionRegistrarFilter.doFilter(HttpSessionRegistrarFilter.java:86)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:242)
	at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.applyFilter(ConfluenceSecurityFilter.java:42)
	at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.doFilter(ConfluenceSecurityFilter.java:31)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94)
	at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:35)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:69)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:41)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.rest.v2.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:38)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.pats.web.filter.TokenBasedAuthenticationFilter.doFilter(TokenBasedAuthenticationFilter.java:84)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.doFilter(AccessTokenFilter.java:84)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:58)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.util.ClusterHeaderFilter.doFilter(ClusterHeaderFilter.java:59)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:156)
	at com.atlassian.confluence.web.filter.ConfluenceOpenSessionInViewFilter.doFilterInternal(ConfluenceOpenSessionInViewFilter.java:41)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:104)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:31)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.authentication.sso.web.filter.loginform.DisableNativeLoginAuthFilter.doFilter(DisableNativeLoginAuthFilter.java:55)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.plugins.authentication.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:74)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:28)
	at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:39)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.web.filter.HttpRequestStatsFilter.doFilter(HttpRequestStatsFilter.java:60)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:114)
	at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:91)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.web.filter.ConfluenceTimingFilter.doFilter(ConfluenceTimingFilter.java:49)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:58)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
	at com.atlassian.confluence.extra.webdav.servlet.filter.WebdavRequestForwardFilter.doFilter(WebdavRequestForwardFilter.java:78)
	at com.atlassian.confluence.extra.webdav.servlet.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:29)
	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
	at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:34)
	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:56)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:44)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.util.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:39)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.internal.web.filter.spring.IgnoreWebAsyncManagerFilter.doFilter(IgnoreWebAsyncManagerFilter.java:61)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter.doFilter(RequestParamValidationFilter.java:53)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.TranslationModeFilter.doFilter(TranslationModeFilter.java:41)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.LanguageExtractionFilter.doFilter(LanguageExtractionFilter.java:43)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextFilter.lambda$doFilter$3(VCacheRequestContextFilter.java:46)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:84)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:68)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextFilter.doFilter(VCacheRequestContextFilter.java:45)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.util.LoggingContextFilter.doFilter(LoggingContextFilter.java:34)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at brave.servlet.TracingFilter.doFilter(TracingFilter.java:89)
	at com.atlassian.confluence.web.filter.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.ResponseOutputStreamFilter.doFilter(ResponseOutputStreamFilter.java:27)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:40)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.servlet.FourOhFourErrorLoggingFilter.doFilter(FourOhFourErrorLoggingFilter.java:66)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.internal.diagnostics.ipd.http.IpdHttpMonitoringFilter.doFilter(IpdHttpMonitoringFilter.java:42)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.internal.diagnostics.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:46)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.impl.webapp.ConfluenceHttpHeaderSecurityFilter.doFilter(ConfluenceHttpHeaderSecurityFilter.java:117)
	at javax.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.ThreadLocalCacheFilter.doFilter(ThreadLocalCacheFilter.java:27)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:65)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:761)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
	at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:185)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:388)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.lang.ClassCastException: class org.dom4j.DocumentFactory cannot be cast to class org.dom4j.DocumentFactory (org.dom4j.DocumentFactory is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @1841e525; org.dom4j.DocumentFactory is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @24a97da5)
	at org.dom4j.DocumentFactory.getInstance(DocumentFactory.java:92)
	at org.dom4j.io.SAXReader.getDocumentFactory(SAXReader.java:667)
	at org.dom4j.io.SAXReader.createContentHandler(SAXReader.java:948)
	at org.dom4j.io.SAXReader.read(SAXReader.java:478)
	... 419 more

```

---

<div class="post-metadata">

**Author:** ![EliasBrattliSorensen](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/eliasbrattlisorensen/32/41934_2.png) [@EliasBrattliSorensen](https://community.developer.atlassian.com/u/EliasBrattliSorensen)\
**Post date:** [July 4, 2024, 8:04am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/403 "2024-07-04T08:04:35Z")

</div>

I fell into another trap with annotating resources that I spent a while debugging that might be good to be aware of. This error is kind of subtle and can be hard to catch.  
There is a stricter default for all endpoints in [preparing for Confluence 9.0](https://confluence.atlassian.com/doc/preparing-for-confluence-9-0-1333827518.html):

> We’ve enabled better control access to endpoints with new annotations. From Confluence 9.0, only licensed users can access resources without specified access criteria annotations.  
> …  
> You may need to make changes to endpoints such as Struts Actions, Filters, Servlets and REST resources.

I also just found the doc with the announcement that there about the [package move](https://developer.atlassian.com/platform/marketplace/dc-apps-platform-7-preparing-for-secure-endpoints/) for the annotations, where I learned that servlets require annotations from a different package:

> An important update has been made for security annotations. In the past, they were defined within the REST project under the package `com.atlassian.plugins.rest.common.security`. Now, these annotations have been moved to `com.atlassian.annotations.security` for use in non-REST contexts. For REST resources, both sets of annotations will be accepted for the duration of Platform 7. However, for non-REST endpoints, the annotations in `com.atlassian.annotations.security` must be used.

What I got hit by was annotating servlets with the new REST annotations in `com.atlassian.plugins.rest.api.security.annotation.UnrestrictedAccess` (I just tagget the annotation with @ and hit tab and didn’t think more about it). The annotations had worked well for my REST endpoints. This did not fail until runtime where the servlet I believed was now open required login after all, and there were no warnings in the build steps or in the logs about the incorrectly annotated servlet.  
Changing to `com.atlassian.annotations.security.UnrestrictedAccess` made it work. Apparently these also work for REST enpoints, so seems there’s no reason to use the annotations in the `com.atlassian.plugins.rest.api.security.annotation` package.

---

<div class="post-metadata">

**Author:** ![metin](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/metin/32/54607_2.png) [@metin](https://community.developer.atlassian.com/u/metin)\
**Post date:** [July 4, 2024, 8:25am UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/404 "2024-07-04T08:25:46Z")

</div>

I need help with the `com.atlassian.confluence.api.model.Expansion` class.

In our app, we need to retrieve information about the Confluence spaces. We used to use this approach:

```auto
final Expansion spaceExpansion = Expansion.AS_EXPANSION.apply("space");
final List<ContentId> pageIds = keys.stream().map(ContentId::valueOf).collect(Collectors.toList());
final PageResponse<Content> response = service.get(s -> s.find(spaceExpansion).withType(ContentType.PAGE).withId(pageIds).fetchMany(ContentType.PAGE, new SimplePageRequest(0, keys.size())));

```

The problem is, the `AS_EXPANSION` property has been deprecated since 8.6, and in 9.0.0 it’s gone, but there is no documentation about what to use instead.

I suspect we would have to do that using the ExpansionParser? However, I can’t find out how this is supposed work. I’m still waiting to get access to the Confluence sources which would probably be helpful.

Any hints?

---

<div class="post-metadata">

**Author:** ![aorlov](https://avatars.discourse-cdn.com/v4/letter/a/7c8e57/32.png) [@aorlov](https://community.developer.atlassian.com/u/aorlov)\
**Post date:** [July 4, 2024, 12:12pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/405 "2024-07-04T12:12:31Z")

</div>

I’ve found some stranges exceptions in Confluence 9.0.0-beta2, it works in previous milestones.

I work with the editor and use `com.atlassian.confluence.plugins.highlight.service.MarkSelectionModifier`.

**I can’t inject this bean.**

I use Java Configuration:

```auto
    @Bean
    public MarkSelectionModifier markSelectionModifier() {
        return importOsgiService(MarkSelectionModifier.class);
    }

```

And I have this error:

```auto
Caused by: java.lang.NoClassDefFoundError: com/atlassian/confluence/plugins/highlight/service/MarkSelectionModifier
	at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source)
	at java.base/java.lang.Class.getDeclaredMethods(Unknown Source)
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:467)
	... 22 more
Caused by: java.lang.ClassNotFoundException: com.atlassian.confluence.plugins.highlight.service.MarkSelectionModifier not found by com.my.plugin [306]
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 26 more

```

I’m sure, that `MarkSelectionModifier` is a bean (sources Confluence 9.0.0-beta2):

 ![Screenshot 2024-07-04 at 15.06.09](https://global.discourse-cdn.com/atlassiandeveloper/original/3X/0/5/05d03ebc02e96dc26842aeb5b17a665d3de22749.png)

Were there some changes in latest releases? I’ve noticed, that there are `@ComponentImport` annotations. Maybe it doesn’t work with java configuration? I’m not sure.

---

<div class="post-metadata">

**Author:** ![aovsyannikov](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/aovsyannikov/32/47067_2.png) [@aovsyannikov](https://community.developer.atlassian.com/u/aovsyannikov)\
**Post date:** [July 4, 2024, 3:12pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/406 "2024-07-04T15:12:19Z")

</div>

Still not able to make my app work. I’m getting the following error:

```auto
2024-07-04 14:59:39,437 ERROR [ThreadPoolAsyncTaskExecutor::Thread 27] [internal.dependencies.startup.DependencyWaiterApplicationContextExecutor] fail Unable to create application context for [my.app.package], unsatisfied dependencies: none

Caused by: java.lang.ClassNotFoundException: com.atlassian.activeobjects.external.ActiveObjects not found by my.app.package [293]
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)

```

I’ve tried a java config, but it didn’t help. My environment is Confluence 9.0.0-beta2.

Any ideas on how to deal with it?

---

<div class="post-metadata">

**Author:** ![SujayCHegde](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SujayCHegde](https://community.developer.atlassian.com/u/SujayCHegde)\
**Post date:** [July 4, 2024, 6:28pm UTC](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160/407 "2024-07-04T18:28:06Z")

</div>

Could you try upgrading to milestone m137 and try out again. Many plugins were ported to RESTV2 here. It could be a side effect of many plugins being in RESTV1 before.

[Previous page](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160.md?page=19)

[Next page](https://community.developer.atlassian.com/t/preparing-for-confluence-9-0-eap-out-now/76160.md?page=21)
