Для сервера Jira как получить доступ или подготовить объект FieldMetaBean для объектов OrderableField и CustomField - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь получить объект FieldMetaBean для Orderable и CustomField.Но мог получить только объекты JsonType для полей.Кто-нибудь пытался получить доступ к FieldMetaBean Object из этих полей или пытался подготовить его.

  IssueCreationHelperBean issueCreationHelperBean = ComponentAccessor.getComponentOfType(IssueCreationHelperBean.class);
                List<OrderableField> orderableFields = issueCreationHelperBean.getFieldsForCreate(ComponentAccessor.getJiraAuthenticationContext().getUser(), issuePattern);
                JsonArray fields = new JsonArray();
                for(OrderableField orderableField : orderableFields) {
                    JsonObject field = new JsonObject();
                    field.addProperty("name", orderableField.getName());
                    field.addProperty("key", orderableField.getNameKey());

                    // Get FieldMetaBean Object

                    fields.add(field);
                }

1 Ответ

0 голосов
/ 13 декабря 2018

Нашли решение, пожалуйста, найдите ниже

        List<Project> extProjects = new ArrayList<Project>();
    if (projectIds != null && !projectIds.isEmpty()) {
        Long projectId = Long.parseLong(projectIds);
        Project project = ComponentAccessor.getProjectManager().getProjectObj(projectId);
        if (project != null) {
            extProjects.add(project);
        }
    } else {
        extProjects.addAll(ComponentAccessor.getProjectManager().getProjects());
    }
    JsonArray projJsonArray = new JsonArray();

    if (extProjects != null && !extProjects.isEmpty()) {
        for (int i = 0; i < extProjects.size(); i++) {
            Project project = extProjects.get(i);
            List<IssueType> issueTypes = new ArrayList<IssueType>();
            issueTypes.addAll(project.getIssueTypes());
            JsonObject projectJson = new JsonObject();
            projectJson.addProperty("id", project.getId());
            projectJson.addProperty("key", project.getKey());
            projectJson.addProperty("name", project.getName());

            JsonArray issueTypesJsonArray = new JsonArray();
            for (IssueType issueType : issueTypes) {
                JsonObject issueTypeJson = new JsonObject();
                issueTypeJson.addProperty("id", issueType.getId());
                issueTypeJson.addProperty("description", issueType.getDescription());
                issueTypeJson.addProperty("name", issueType.getName());
                issueTypeJson.addProperty("subtask", issueType.isSubTask());
                issueTypeJson.addProperty("expand", "fields");
                MutableIssue issuePattern = ComponentAccessor.getComponentOfType(IssueFactory.class).getIssue();
                issuePattern.setProjectId(project.getId());
                issuePattern.setIssueTypeId(issueType.getId());
                IssueCreationHelperBean issueCreationHelperBean = ComponentAccessor
                        .getComponentOfType(IssueCreationHelperBean.class);
                FieldScreenRenderer fieldScreenRenderer = issueCreationHelperBean
                        .createFieldScreenRenderer(issuePattern);
                Map<String, FieldMetaBean> fieldsMap = getFieldMetadataBeans(issuePattern, issueType, project,
                        fieldScreenRenderer);
                Gson gson = new Gson();
                issueTypeJson.add("fields", gson.toJsonTree(fieldsMap));
                issueTypesJsonArray.add(issueTypeJson);
            }
            projectJson.add("issuetypes", issueTypesJsonArray);
            projJsonArray.add(projectJson);
        }
    }

    JsonObject jsonObject = new JsonObject();
    jsonObject.add("projects", projJsonArray);
    jsonObject.addProperty("expand", "projects");
    jsonObject.addProperty("total", Integer.valueOf(projJsonArray.size()));
    return jsonObject;
...