Plugin doesn't work after upgrade to 8.5.4

Hello everyone,

I try to migrate my own plugin from 7.19.16 to 8.5.4. You can see my atlassian-plugin.xml :

<?xml version="1.0" encoding="UTF-8"?>
<atlassian-plugin key="ch.dgsi.confluence.cti-attachment-filter" name="cti-attachment-filter" plugins-version="2">
<plugin-info>
<description>This is the ch.dgsi.confluence:cti-attachment-filter plugin for Atlassian Confluence. Build for 8.5.4
</description>
<version>1.1.0</version>
<vendor name="DGSI" url="http://www.ge.ch/"/>
<param name="plugin-icon">images/pluginIcon.png</param>
<param name="plugin-logo">images/pluginLogo.png</param>
<param name="configure.url">/admin/plugins/ctiextensionfilter/configureplugin.action</param>
</plugin-info>
<resource type="i18n" name="i18n" location="cti-attachment-filter"/>
<web-resource key="cti-attachment-filter-resources" name="cti-attachment-filter Web Resources">
<dependency>com.atlassian.auiplugin:ajs</dependency>
<resource type="download" name="cti-attachment-filter.css" location="/css/cti-attachment-filter.css"/>
<resource type="download" name="cti-attachment-filter.js" location="/js/cti-attachment-filter.js"/>
<resource type="download" name="images/" location="/images"/>
<context>cti-attachment-filter</context>
</web-resource>
<servlet-filter name="Attachment Servlet Filter" key="cti-attachment-filter-servlet"
class="ch.dgsi.confluence.extensionfilter.servlet.filter.AttachmentServletFilter"
location="after-encoding" weight="100">
<description key="cti-attachment-filter-servlet.description">Filters uploaded files</description>
<url-pattern>/plugins/drag-and-drop/upload.action*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</servlet-filter>
<xwork key="cti-attachment-filter-actions" name="CTI attachment extensions filters Actions">
<package name="pages" extends="default" namespace="/pages">
<default-interceptor-ref name="validatingStack"/>
<action name="attachfile" class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfAttachFileAction">
<result name="input" type="json"/>
<result name="json" type="json"/>
<result name="html" type="velocity">/ajax/htmlwrapper.vm</result>
<result name="error" type="json"/>
<result name="notpermitted" type="json"/>
</action>
<action name="doattachfile"
class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfViewPageAttachmentsAction">
<result name="error" type="velocity">/pages/viewattachments.vm</result>
<result name="input" type="velocity">/pages/viewattachments.vm</result>
<result name="success" type="redirect">/pages/viewpageattachments.action?pageId=${pageId}&amp;sortBy=date&amp;${highlightParameter}</result>
</action>
<action name="domacroattachfile"
class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfViewPageAttachmentsAction">
<result name="error" type="dispatcher">/pages/viewpage.action</result>
<result name="input" type="dispatcher">/pages/viewpage.action</result>
<result name="success" type="redirect">/pages/viewpage.action?pageId=${pageId}</result>
</action>
<action name="editattachment" class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfMoveAttachmentAction"
method="doDefault">
<interceptor-ref name="defaultStack"/>
<result name="error" type="velocity">/pages/editattachment.vm</result>
<result name="input" type="velocity">/pages/editattachment.vm</result>
</action>
<action name="doeditattachment"
class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfMoveAttachmentAction">
<param name="RequireSecurityToken">true</param>
<result name="input" type="velocity">/pages/editattachment.vm</result>
<result name="error" type="velocity">/pages/editattachment.vm</result>
<result name="cancel" type="redirect">${redirectPage}</result>
<result name="success" type="redirect">${redirectPage}</result>
</action>
</package>
<!-- <package name="drag-and-drop-filtered" extends="drag-and-drop" namespace="/plugins/drag-and-drop">-->
<!-- <action name="upload" class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfUploadAction">-->
<!-- <param name="RequireSecurityToken">true</param>-->
<!-- <interceptor-ref name="validatingStack"/>-->
<!-- <result name="input" type="json"/>-->
<!-- <result name="success" type="json"/>-->
<!-- <result name="error" type="json"/>-->
<!-- <result name="readonly" type="readonly-json"/>-->
<!-- </action>-->
<!-- </package>-->
<!-- <package name="attachments-macro-action" extends="default" namespace="/pages/plugins/attachments">-->
<!-- <action name="doattachfile"-->
<!-- class="ch.dgsi.confluence.extensionfilter.actions.ChkExBfViewPageAttachmentsAction">-->
<!-- <interceptor-ref name="validatingStack"/>-->
<!-- <result name="error" type="velocity">/pages/viewattachments.vm</result>-->
<!-- <result name="input" type="velocity">/pages/viewattachments.vm</result>-->
<!-- <result name="success" type="redirect">/pages/viewpage.action?pageId=${pageId}</result>-->
<!-- </action>-->
<!-- </package>-->
</xwork>
<xwork key="cti-extensionfilter" name="Extension Filter Actions">
<package name="ctiextensionfilter" extends="default" namespace="/admin/plugins/ctiextensionfilter">
<default-interceptor-ref name="validatingStack"/>
<action name="configureplugin" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doDefault">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
</action>
<action name="removeextensionfromlist"
class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction" method="doRemoveExtension">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="allowmimetype" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doAddMimetype">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="subAllowmimetype" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doSubAddMimetype">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="removemimetypefromlist"
class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction" method="doRemoveMimetype">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="removefilterfromlist" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doRemoveSpace">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="filterspace" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doAddSpace">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="filterSubspace" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction"
method="doAddSubSpace">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
</action>
<action name="doconfigureplugin" class="ch.dgsi.confluence.extensionfilter.actions.ConfigurePluginAction">
<result name="input" type="velocity">/ch/dgsi/confluence/extensionfilter/configureplugin.vm</result>
<result name="success" type="redirect">/admin/plugins/ctiextensionfilter/configureplugin.action</result>
<result name="cancel" type="redirect">/plugins/servlet/upm</result>
</action>
</package>
</xwork>
<rest key="attachementfilterRest" path="/attachementfilter" version="1.0">
<description>Provides service related to attachement filter plugin.</description>
<package>ch.dgsi.confluence.extensionfilter.api</package>
</rest>
</atlassian-plugin>

As you can see I had to comment two packages drag-and-drop-filtered and attachments-macro-action. Indeed, my module cti-attachment-filter-actions can’t be enable if it’s isn’t comment.

How I can fix that ?

Other question, with my comment, my plugin is running but doesn’t work. I think all request aren’t catch… Do you have an idea why ? Must I migrate something ?

This issue is very important, please I need help.

I can share you other files if you want.

Regards,

Guillaume

any help ???

Hi,

I’m not sure if that helps but Confluence 8 requires a new amps version, which also needs a different maven version than the one installed by the atlassian sdk.
Maybe this topic is of help

Yes you right and I update my pom.xml like this :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>ch.dgsi.confluence</groupId>
    <artifactId>cti-attachment-filter</artifactId>
    <version>1.1.0</version>

    <organization>
        <name>DGSI</name>
        <url>http://www.ge.ch/</url>
    </organization>

    <name>cti-attachment-filter</name>
    <description>This is the ch.dgsi.confluence:cti-attachment-filter plugin for Atlassian Confluence.</description>
    <packaging>atlassian-plugin</packaging>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.sal</groupId>
            <artifactId>sal-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.templaterenderer</groupId>
            <artifactId>atlassian-template-renderer-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.confluence</groupId>
            <artifactId>confluence</artifactId>
            <version>${confluence.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <scope>provided</scope>
            <version>${confluence.project.spring.version}</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-annotation</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-runtime</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- 
        <dependency>
            <groupId>com.atlassian.core</groupId>
            <artifactId>atlassian-core</artifactId>
            <version>${core.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.core</groupId>
            <artifactId>atlassian-core-user</artifactId>
            <version>${core.version}</version>
            <scope>provided</scope>
        </dependency> 
        -->
        <dependency>
            <groupId>com.atlassian.confluence.plugins</groupId>
            <artifactId>confluence-drag-and-drop</artifactId>
            <version>${confluence.version}</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins.rest</groupId>
            <artifactId>atlassian-rest-common</artifactId>
            <version>7.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-nav-links-api</artifactId>
            <version>7.0.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- WIRED TEST RUNNER DEPENDENCIES -->
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
            <version>${plugin.testrunner.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.2-atlassian-1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.29</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.8.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.confluence.compat</groupId>
            <artifactId>confluence-compat-lib</artifactId>
            <version>1.6.1</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <showDeprecation>true</showDeprecation>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>amps-maven-plugin</artifactId>
                <version>${amps.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <banningExcludes>
                        <exclude>commons-io:commons-io</exclude>
                    </banningExcludes>
                    <productVersion>${confluence.version}</productVersion>
                    <productDataVersion>${confluence.data.version}</productDataVersion>
                    <enableQuickReload>true</enableQuickReload>
                    <!-- Specify what to bundle in the OBR -->
                    <pluginDependencies>
                        <pluginDependency>
                            <groupId>com.atlassian.confluence.plugins</groupId>
                            <artifactId>confluence-drag-and-drop</artifactId>
                        </pluginDependency>
                    </pluginDependencies>
                    <jvmArgs>-Xms1g -Xmx2g -XX:MaxPermSize=1g -XX:-UseGCOverheadLimit -server</jvmArgs>
                    <!-- See here for an explanation of default instructions: -->
                    <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins -->
                    <instructions>
                        <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>
                        <!-- Add package to export here -->
                        <Export-Package>ch.dgsi.confluence.api</Export-Package>
                        <!-- Add package import here -->
                        <Import-Package>com.opensymphony.xwork2.conversion.impl;resolution:=optional,
                            com.opensymphony.xwork;resolution:=optional,
                            com.opensymphony.webwork;resolution:=optional,
                            org.apache.struts2;resolution:=optional,
                            org.apache.struts2.dispatcher;resolution:=optional,
                            org.springframework.osgi.*;resolution:="optional",
                            org.eclipse.gemini.blueprint.*;resolution:="optional",
                            com.atlassian.confluence.plugins.dragdrop.service.*;resolution:="optional",
                            org.apache.tika.*;resolution:="optional",
                            *;resolution:="optional",
                            com.opensymphony.xwork2;resolution:=optional
                        </Import-Package>
                        <!-- Ensure plugin is spring powered -->
                        <Spring-Context>*</Spring-Context>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.atlassian.plugin</groupId>
                <version>1.2.13</version>
                <artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>atlassian-spring-scanner</goal>
                        </goals>
                        <phase>process-classes</phase>
                    </execution>
                </executions>
                <configuration>
                    <scannedDependencies>
                        <dependency>
                            <groupId>com.atlassian.plugin</groupId>
                            <artifactId>atlassian-spring-scanner-external-jar</artifactId>
                        </dependency>
                        <dependency>
                            <groupId>com.atlassian.confluence.plugins</groupId>
                            <artifactId>confluence-drag-and-drop</artifactId>
                        </dependency>
                    </scannedDependencies>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.1.1</version>
            </plugin>
        </plugins>
    </build>
    <properties>
        <confluence.version>8.5.4</confluence.version>
        <confluence.data.version>8.5.4</confluence.data.version>
        <core.version>7.0.1</core.version>
        <amps.version>8.10.2</amps.version>
        <plugin.testrunner.version>2.0.1</plugin.testrunner.version>
        <atlassian.spring.scanner.version>1.2.13</atlassian.spring.scanner.version>
        <!-- This property ensures consistency between the key in atlassian-plugin.xml and the OSGi bundle's key. -->
        <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <confluence.project.spring.version>5.2.21.RELEASE</confluence.project.spring.version>
        <maven.javadoc.skip>true</maven.javadoc.skip>
    </properties>
    <repositories>
        <repository>
            <id>atlassian-m2-contrib</id>
            <name>Atlassian Maven 2 Contributor Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
        <id>atlassian-public</id>
        <url>https://m2proxy.atlassian.com/repository/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
</project>

In fact, I have problem with this package :

 <package name="pages" extends="pages" namespace="/pages">

When I add my plugin, module cti-attachment-filter-actions is disabled, so I can’t use it…
You can see runtime error :

java.lang.RuntimeException: The following packages participate in cycles: pages. Listener: com.atlassian.confluence.impl.struts.StrutsStateChangeListener event: com.atlassian.confluence.event.events.plugin.XWorkStateChangeEvent
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:53)
	at com.atlassian.confluence.event.ConfluenceListenerHandlersConfiguration$TimedListenerInvoker.invoke(ConfluenceListenerHandlersConfiguration.java:96)
	at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$null$0(AsynchronousAbleEventDispatcher.java:37)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85)
	at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:114)
	at com.atlassian.confluence.event.TimingEventPublisher.publish(TimingEventPublisher.java:76)
	at com.atlassian.confluence.plugin.descriptor.StrutsModuleDescriptor.enabled(StrutsModuleDescriptor.java:59)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$notifyModuleEnabled$47(DefaultPluginManager.java:1891)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.notifyModuleEnabled(DefaultPluginManager.java:1887)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$enableConfiguredPluginModule$32(DefaultPluginManager.java:1632)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:72)
	at com.atlassian.plugin.manager.DefaultPluginManager.enableConfiguredPluginModule(DefaultPluginManager.java:1616)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$enableConfiguredPluginModules$31(DefaultPluginManager.java:1607)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:72)
	at com.atlassian.plugin.manager.DefaultPluginManager.enableConfiguredPluginModules(DefaultPluginManager.java:1604)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$enableDependentPlugins$24(DefaultPluginManager.java:1259)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.enableDependentPlugins(DefaultPluginManager.java:1229)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$addPlugins$22(DefaultPluginManager.java:1214)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.addPlugins(DefaultPluginManager.java:1114)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$scanForNewPlugins$14(DefaultPluginManager.java:921)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.scanForNewPlugins(DefaultPluginManager.java:877)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$installPlugins$13(DefaultPluginManager.java:837)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.installPlugins(DefaultPluginManager.java:823)
	at com.atlassian.confluence.plugin.EventDispatchingPluginController.installPlugins(EventDispatchingPluginController.java:74)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:241)
	at jdk.proxy4/jdk.proxy4.$Proxy283.installPlugins(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
	at jdk.proxy4/jdk.proxy4.$Proxy550.installPlugins(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:241)
	at jdk.proxy121/jdk.proxy121.$Proxy1671.installPlugins(Unknown Source)
	at com.atlassian.upm.core.install.AbstractPluginInstallHandler$1.doInTransaction(AbstractPluginInstallHandler.java:133)
	at com.atlassian.upm.core.install.AbstractPluginInstallHandler$1.doInTransaction(AbstractPluginInstallHandler.java:128)
	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:21)
	at com.atlassian.sal.spring.component.SpringHostContextAccessor.lambda$doInTransaction$0(SpringHostContextAccessor.java:70)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
	at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:68)
	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:18)
	at jdk.internal.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
	at jdk.proxy4/jdk.proxy4.$Proxy301.execute(Unknown Source)
	at jdk.internal.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:241)
	at jdk.proxy121/jdk.proxy121.$Proxy1705.execute(Unknown Source)
	at com.atlassian.upm.core.install.AbstractPluginInstallHandler.installArtifacts(AbstractPluginInstallHandler.java:127)
	at com.atlassian.upm.core.install.AbstractPluginInstallHandler.installArtifact(AbstractPluginInstallHandler.java:113)
	at com.atlassian.upm.core.install.JarPluginInstallHandler.installPluginInternal(JarPluginInstallHandler.java:52)
	at com.atlassian.upm.core.install.AbstractPluginInstallHandler.installPlugin(AbstractPluginInstallHandler.java:54)
	at com.atlassian.upm.core.install.DefaultPluginInstallationService.execute(DefaultPluginInstallationService.java:130)
	at com.atlassian.upm.core.install.DefaultPluginInstallationService.install(DefaultPluginInstallationService.java:98)
	at com.atlassian.upm.install.UpmPluginInstallationService.install(UpmPluginInstallationService.java:114)
	at com.atlassian.upm.core.rest.resources.install.InstallTask.installFromFile(InstallTask.java:153)
	at com.atlassian.upm.core.rest.resources.install.InstallFromFileTask.executeTask(InstallFromFileTask.java:36)
	at com.atlassian.upm.core.rest.resources.install.InstallTask.run(InstallTask.java:78)
	at com.atlassian.upm.core.async.AsynchronousTaskManager.executeTask(AsynchronousTaskManager.java:121)
	at com.atlassian.upm.core.async.AsynchronousTaskManager$1.call(AsynchronousTaskManager.java:99)
	at com.atlassian.upm.core.async.AsynchronousTaskManager$1.call(AsynchronousTaskManager.java:96)
	at com.atlassian.sal.core.executor.ThreadLocalDelegateCallable.call(ThreadLocalDelegateCallable.java:38)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: The following packages participate in cycles: pages - [unknown location]
	at com.opensymphony.xwork2.config.providers.XmlDocConfigurationProvider.verifyPackageStructure(XmlDocConfigurationProvider.java:346)
	at com.opensymphony.xwork2.config.providers.XmlDocConfigurationProvider.loadPackages(XmlDocConfigurationProvider.java:292)
	at com.atlassian.confluence.impl.struts.PluginModuleXmlConfigurationProvider.loadPackages(PluginModuleXmlConfigurationProvider.java:52)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:302)
	at com.opensymphony.xwork2.config.ConfigurationManager.reload(ConfigurationManager.java:227)
	at com.atlassian.confluence.impl.struts.StrutsStateChangeListener.handle(StrutsStateChangeListener.java:31)
	at jdk.internal.reflect.GeneratedMethodAccessor345.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:42)
	... 119 more

If I modify extends by “default”, my module is enabled but do nothing when I try it…

I see this interresting post : Struts 2 upgrade | Confluence Data Center and Server 8.7 | Atlassian Documentation
So I follow it using confluence-compat-lib but it doesn’t work too…

Of course, I clean my project and cache of my server

someone have an idea ?

Overwriting system packages and namespaces is not supported.

Thanks for your response. Is not supported since Confluence 8.x ? Because this configuration works with Confluence 7.19.16
Do you have recommendations to fix my issue ?

Hello Kusal, can you answer about my issue ? plz
Is it writing on documentation ?

Other question, do you have documentation about trigger action attachement in version 8.X ?

1 Like