Hi,
I’m trying to create a couple of QuickLinks within my custom Space-Blueprint plugin. The documentation is horribly outdated (things like component import is no longer supported in atlassian-plugin.xml)
The xwork tag doesn’t seem to work as i guess some ‘actions’ need to trigger in order for it to run
Part of atlassian-plugin.xml
<xwork name="SideBar-xwork" key="SideBar-xwork">
<package name="SideBar" extends="default" namespace="/plugins/${project.artifactId}">
<default-interceptor-ref name="defaultStack"/>
<action name="sidebar" class="com.ilm.atlassian.service.sidebar" method="docreate">
</action>
</package>
</xwork>
sidebar.java which resides under src/main/java/com/atlassian/plugins/service
package com.atlassian.plugins.service;
import java.util.Map;
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
import com.atlassian.confluence.macro.Macro;
import com.atlassian.confluence.macro.MacroExecutionException;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
// import com.atlassian.webresource.api.assembler.PageBuilderService;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
// import com.atlassian.confluence.spaces.SpaceManager;
// import com.atlassian.confluence.spaces.Space;
// import com.atlassian.confluence.spaces.actions.AbstractSpaceAction;
import com.atlassian.confluence.core.ConfluenceActionSupport;
import com.atlassian.confluence.pages.PageManager;
import com.atlassian.confluence.pages.Page;
import com.atlassian.confluence.plugins.ia.service.SidebarLinkService;
@Scanned
//annotation is an instruction for spring scanner. In this tutorial we used spring scanner 1.2.13 - so we needed to tell spring scanner to scan this class.
public class sidebar extends ConfluenceActionSupport {
private SidebarLinkService sidebarLinkService;
@ComponentImport
private final PageManager pageManager;
@Autowired
public sidebar(@ComponentImport SidebarLinkService sidebarLinkService, PageManager pageManager) {
this.pageManager = pageManager;
this.sidebarLinkService = sidebarLinkService;
}
public String doCreate(ConversionContext conversionContext) throws Exception {
//Create QuickLink
String cur_spacekey = conversionContext.getSpaceKey();
String page_title = conversionContext.getPageContext().getPageTitle();
Page page = pageManager.getPage(cur_spacekey, page_title);
Long page_id = page.getId();
String result = "Exist";
try {
// Check whether the Quick Link already exists
boolean exists = sidebarLinkService.hasQuickLink(cur_spacekey, page_id);
if (!exists) {
sidebarLinkService.create(cur_spacekey, page_id, null, null);
result = "Creating";
}
}
catch(Exception e) {
// Block of code to handle errors
String stackTraceAsString = ExceptionUtils.getStackTrace(e);
return stackTraceAsString;
}
finally {
return result;
}
}
}