Get serverID inside servlet module

luis April 10, 2018

Hello guys, I need some help.

I'm developing a confluence server plugin and I need to get the confluence server id when the servlet url is hit. I haven't figured out yet how to do it. Is there any way to do that?

Thanks in advance,

Luís

1 answer

1 accepted

0 votes
Answer accepted
Thor
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 10, 2018

Hi there,

You could try it with the ConfluenceInfo bean.

luis April 10, 2018

Thanks for your help.

I tried with no luck. 

I tried this:

I18NBean a = null;
ConfluenceInfo ci = new ConfluenceInfo(a);
String serverID = ci.getServerId();
// serverID is null

However, all ci methods are returning null.


Any idea?

Thor
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 11, 2018

Hey @luis,

I had the chance to unsuccessfully try this myself. But I figured out a way that works for me:

  • Create a field in your class with type of ConfluenceSidManager:
    private ConfluenceSidManager sidManager;
  • Inject the manager into your constructor or write a setter for it
  • Now you can get the server id like this:
    sidManager.getSid()

Hope that works for you as well.

Kind Regards

luis April 12, 2018

Hey @Thor, I've tried it but with no luck :\

How do you inject the ConfluenceSidManager into your class constructor? Or how do you call the class constructor then?

If could share a code snippet of what you described working, that would be really amazing.

Thanks again.

Kind regards

Thor
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 13, 2018

Hey @luis,

Here is a good article about dependcy injection in plugins.

 

To inject it into your constructor (preferred way for v2 plugins) do this:

private ConfluenceSidManager sidManager;
...
...

public MyClass(ConfluenceSidManager sidManager) {

    this.sidManager = sidManager;

}

 

To inject the manager via a setter (the default way to do this for v1 plugins) do this:

private ConfluenceSidManager sidManager;
...
...

public
void setSidManager(ConfluenceSidManager sidManager) {
this.sidManager = sidManager;
}
...

Then you have to call the setter (e.g. if you are writing a macro inside the execute method):


setSidManager(ComponentLocator.getComponent(ConfluenceSidManager.class));

From now on you should be able to use the manager.

Like luis likes this
luis May 4, 2018

Thanks @Thor! That solved the problem :)

Thor
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 4, 2018

Hey @luis, you're welcome! I'm happy to hear that :-)

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events