Preparing for Jira Software 10.0 and Jira Service Management 6.0 - multiple EAPs coming your way

Hello,
I’ve noticed that in the last few EAPs, during an AJAX call, the method javax.ws.rs.core.Response.ok().build() now produces an HTML Response. I replaced the call by javax.ws.rs.core.Response.status(Response.Status.OK).noContent().build().
Is this a wanted behavior?
Cheers,
Robin

Hi @mihirvarsani,

Thanks for your reply.

I’ve tried that but it didn’t help unfortunately. BTW, I’m using jakarta.ws.rs-api package.

Any other ideas are much appreciated.
Thanks

Hey folks, we got some feedback recently and concluded that it makes sense to change the method signature, get rid of Jackson as a parameter type, and replace it with String.

We will be introducing this change ASAP and will try to ship EAP soon with further details:

Change:

com.atlassian.jira.issue.IssueInputParameters#addProperty(String propertyKey, JsonNode propertyValue) changed to addProperty(String propertyKey, String propertyValue)

The same change JsonNodeString happened also in:

com.atlassian.jira.issue.IssueInputParameters#properties() will return Map<String, String> instead of Map<String, JsonNode>

com.atlassian.jira.issue.UpdateIssueRequest#getProperties() will return Map<String, String> instead of Map<String, JsonNode>

com.atlassian.jira.issue.UpdateIssueRequest.UpdateIssueRequestBuilder#issueProperties will now accept Map<String, String>

com.atlassian.jira.issue.util.IssueUpdateBean#getProperties will return Map<String, String>

com.atlassian.jira.issue.util.IssueUpdateBean#addProperties will now accept Map<String, String>

com.atlassian.jira.bc.issue.IssueService.CreateValidationResult#CreateValidationResult and getPropertieswill also work with Map<String, String>

Same with com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult#UpdateValidationResult and its getProperties

Instructions:

Serialize the value before passing it to the method and deserialise after reading it.

1 Like

Another point to implement universally accessible ObjectMapper factory which can be customized per-app, including REST context.

We would have loved this capability, but its too late now given Confluence and Bitbucket have shipped.

We continue to bundle Jackson in our app, and have implementations of MessageBodyWriter (Java(TM) EE 7 Specification APIs) etc which utilise our custom configuration of ObjectMapper

WebResourceManager is depcrecated and i am not able to use requireResource() method. Do we have an alternate method for this.

Hi,

Any idea why I’m getting this error, I’ve made the class empty and it’s still complaining

[INFO] [talledLocalContainer]     	'com.mxgraph.jira.plugins.drawio' - 'Draw.io JIRA plugin'  failed to load.
[INFO] [talledLocalContainer]     		Failed to parse configuration class [com.mxgraph.jira.plugin.action.Configure]; nested exception is java.io.FileNotFoundException: OSGi resource[classpath:webwork/action/CommandDriven.class|bnd.id=181|bnd.sym=com.mxgraph.jira.plugins.drawio] cannot be resolved to URL because it does not exist
[INFO] [talledLocalContainer]     			OSGi resource[classpath:webwork/action/CommandDriven.class|bnd.id=181|bnd.sym=com.mxgraph.jira.plugins.drawio] cannot be resolved to URL because it does not exist

The code is:

package com.mxgraph.jira.plugin.action;

import com.atlassian.jira.web.action.JiraWebActionSupport;
import com.atlassian.jira.security.request.SupportedMethods;
import com.atlassian.jira.security.request.RequestMethod;
import com.atlassian.jira.security.xsrf.RequiresXsrfCheck;
import org.springframework.stereotype.Component;
import javax.inject.Inject;

@SupportedMethods({RequestMethod.GET, RequestMethod.POST})
@Component
public class Configure extends JiraWebActionSupport {

	@Inject
	public Configure() {}

	@Override
	@RequiresXsrfCheck
	public String execute() throws Exception 
	{
		return "success";
	}
}

Any idea what’s the problem?
Thanks

The announced changes to WebResourceManager, WebResourceUrlProvider and UrlMode pretty much sound look like breaking changes which make it impossible to support older JS / JSM 9.x and newer JS / JSM 10.x at the same time.

Do we in future have to publish two versions of the same plugin to achieve this? What is Atlassian’s recommendation to this issue?

I’m facing the same problem. Are there any updates on this?

3 Likes

tnx @adam.labus I am now currently trying EAP-06, and now I’m getting the the same ClassNotFoundException org.apache.commons.lang.StringUtils not found but from a 3rd part package,
here is the screenshot of the error

any ideas? cheer! @FilipNowak @AndrzejKotas

As you can read here https://developer.atlassian.com/platform/marketplace/dc-apps-platform-7/#what-is-changing

commons-lang:commons-lang3 will continue to remain available in the OSGi context. :leftwards_arrow_with_hook:

try use

import org.apache.commons.lang3.StringUtils;

Our App has a feature which requires the ability to parse parameters from the XML that defines a “web-item-provider” into the class that is set in the XML as the class tag value. (i.e. the web-item-provider class which should extend your com.atlassian.plugin.web.api.provider.WebItemProvider interface)

I have tested this, and the context variable used as a parameter of the method: com.atlassian.plugin.web.api.provider.WebItemProvider#getItems, does not parse the XML params to the method’s context parameter.
I have also tried adding a context provider to the web-item-provider and seeing if the params for that are parsed through as well but I found this also does not work.

Here is an example of the web-item-provider XML I tried to use to get the params passed through to the com.atlassian.plugin.web.api.provider.WebItemProvider#getItems method: (it shows trying both normal param and via adding a context provider, neither of which seem to pass params through)

<web-item-provider key='test-foo' name='SR generated web item provider - test-foo' section='find_link/test-key' class='com.foo.fragments.SomeWebItemProvider'>
        <param name='test' value='some param 1' />
        <context-provider class='com.foo.fragments.SomeContextProvider'>
            <param name='othervar' value="some context param 1"/>
        </context-provider>
</web-item-provider>

Hi @mkemp, could you let us know if you can add this XML param parsing ability or tell us if there is a workaround to get params from the XML into the com.atlassian.plugin.web.api.provider.WebItemProvider#getItems method?

Hi @AndrzejKotas @MarekTokarski

In the latest version 10.0.0-m0009, the buttons in the footer of the workflow preview (issue view) are displayed incorrectly. I didn’t notice this problem in the other dialogs.

Cheers
Adam

1 Like

thanks @adam.labus, we’re aware of it. WIP to fix

Tagging @AndrzejKotas too as this is a blocker for us.

Hi,

I started installed the latest Jira 10 eap07 build via the docker image and I cannot delete users via the user management.

When clicking “Delete User” in User Management (EDIT: but also when clicking or Edit or anything from the context menu), a spinner shows up.

Screenshot 2024-08-07 at 16.25.35

In the network I can see that the dialogue in the response tab, but there is an error in the console:

Uncaught Error: Syntax error, unrecognized expression: #deleteuser_link_xxx@azuread.lab.resolution.de-dialog
jQuery 30
batch.js:123:8303

Is that a known issue?

Best regards
Christopher

1 Like

Hi, we are having issues with Jira startup in Docker after upgrade to EAP07 due to the following error:
JIRA-Bootstrap ERROR [c.a.event.internal.AsynchronousAbleEventDispatcher] There was an exception thrown trying to dispatch event [com.atlassian.plugin.event.events.PluginFrameworkStartingEvent@77174476] from the invoker [com.atlassian.event.internal.ComparableListenerInvoker@210e648d] java.lang.RuntimeException: Secret service configuration file is invalid, review the secrets-config.yaml file.. Listener: com.atlassian.jira.plugin.JiraOsgiContainerManager event: com.atlassian.plugin.event.events.PluginFrameworkStartingEvent

1 Like

Hi @Clark, you should be able to access params directly from WebItemProviderModuleDescriptor. I have created a small test to demo how it can be achieved here: Bitbucket.

1 Like

thanks, we’re looking into it.

The format of the secrets-config.yaml file has changed between EAPs, and the old one is no longer compatible. The quickest way to solve this is to delete the file, as it will be automatically recreated by Jira. You’ll find it in your jirahome directory if running a single-node environment, or in your sharedhome if you’re running a cluster.

1 Like