So currently I'm working on a script to deep copy a project, but with own schemes for the copy.
Now I ran into some problems with copying the IssueTypeScreenSchemes. I can add all entities from the old scheme to the new scheme, but the default one with IssueTypeId null (because default) is not copied properly.
As there is no function, constructor or anything to set default and it does not like some entity passed with IssueTypeId null, I tried to have a look at the REST API, but there is no way to do it via API either.
Anyone has an idea on how to apply a ScreenScheme as default in an IssueTypeScreenScheme?
I reckon this "top level" routine might hint it out
//Get source IssueTypeScreenScheme
IssueTypeScreenScheme oldIssueTypeScreenScheme = issueTypeScreenSchemeManager.getIssueTypeScreenScheme(project);
//Create new Issue Type Screen Scheme
IssueTypeScreenScheme newIssueTypeScreenScheme = createNewIssueTypeScreenScheme(newIssueTypeScreenSchemeName, oldIssueTypeScreenScheme.getDescription());
//Create Screens
Map<FieldScreen, FieldScreen> fieldScreenMapping = createFieldScreenMappingAndCreateScreensIfMissing(screenNameMapping, adminUser);
//Create Screen Schemes
Map<FieldScreenScheme, FieldScreenScheme> fieldScreenSchemeMapping = createFieldScreenSchemeMappingAndCreateSchemesIfMissing(screenSchemeNameMapping, fieldScreenMapping);
//Switch Screen Schemes in Issue Type Screen Scheme
Collection<IssueTypeScreenSchemeEntity> issueTypeScreenSchemeEntities = oldIssueTypeScreenScheme.getEntities();
for (IssueTypeScreenSchemeEntity issueTypeScreenSchemeEntity : issueTypeScreenSchemeEntities) {
IssueTypeScreenSchemeEntityImpl newIssueTypeScreenSchemeEntityImpl = new IssueTypeScreenSchemeEntityImpl(issueTypeScreenSchemeManager, fieldScreenSchemeManager, constantsManager);
newIssueTypeScreenSchemeEntityImpl.setIssueTypeId(issueTypeScreenSchemeEntity.getIssueTypeId());
newIssueTypeScreenSchemeEntityImpl.setFieldScreenScheme(fieldScreenSchemeMapping.get(issueTypeScreenSchemeEntity.getFieldScreenScheme()));
newIssueTypeScreenScheme.addEntity(newIssueTypeScreenSchemeEntityImpl);
}
//Finally associate new Issue Type Screen Scheme with the project
issueTypeScreenSchemeManager.addSchemeAssociation(project, newIssueTypeScreenScheme);
This is from an ancient plugin I wrote.
From here I see we're creating new IssueTypeScreenSchemeEntity, which itself has a parameter for issueTypeId, and since this works with default fieldscreenscheme mapping, I assume that issueTypeId parameter can be null.
I wonder what your code does, because it should work fine with null for default.
If I check an existing IssueTypeScreenScheme, it clearly contains null:
def issueTypeScreenScheme = issueTypeScreenSchemeManager.getIssueTypeScreenScheme(project)
StringBuilder stringBuilder = new StringBuilder()
issueTypeScreenScheme.getEntities().forEach(entity -> {
stringBuilder.append(entity.getIssueTypeId()).append(":").append(entity.getFieldScreenSchemeId()).append("<br>")
})
return stringBuilder.toString()
// result
null:36585
10100:36586
You're likely doing something weird in API, or if you're getting any error it could probably tell us what it doesn't like.
P.S. you're more likely to get dev related answers on
The issue was, that I forgot to call the create function before filling up and then run update over it. Found the issue. Thank you!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.