Project

General

Profile

Actions

Task #11859

open

Доработка APIForNG в части создания и переноса узлов.

Added by Радек Мария over 1 year ago. Updated over 1 year ago.

Status:
New
Priority:
Normal
Category:
-
Target version:
-
Start date:
08/26/2022
Due date:
% Done:

0%

Estimated time:
Detected in build:
git
Published in build:

Description

1. Создание узла /projects/{project_name}/create

При попытке создания узла с типом "Requality" для parent node с типом "ReportFolder" возвращается сообщение об ошибке Internal server error.
Адрес запроса:
/projects/test_project/create
Пример запроса:

{
  "parent": "43af65f2-df84-463a-bfed-42a9286a9a71",
  "type":"Requirement",
  "attributes":{
    "test": {
      "value": "13d23",
      "type": "INT" 
    },
    "_name": {
      "value": "{test} test 123" 
    },
    "Ref": {
      "type": "REFERENCE",
      "value":"test" 
    },
    "_description": {
      "value":"test desc <img src='strange.png' alt='strange.xcf'/>", "type":"HTML" 
    }
  }
}

Пример ответа:
{
   "success": false,
   "error":    {
      "code": "com.unitesk.requality.api.models.JsonException: Error [code=internal_error, message=Internal server error]\r\n\tat com.unitesk.requality.api.models.JsonError.exception(JsonError.java:52)\r\n\tat com.unitesk.requality.api.services.project.ProjectService.httpCreate(ProjectService.java:713)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\r\n\tat org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)\r\n\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)\r\n\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)\r\n\tat org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)\r\n\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)\r\n\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)\r\n\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)\r\n\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)\r\n\tat org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)\r\n\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)\r\n\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)\r\n\tat org.glassfish.jersey.internal.Errors.process(Errors.java:292)\r\n\tat org.glassfish.jersey.internal.Errors.process(Errors.java:274)\r\n\tat org.glassfish.jersey.internal.Errors.process(Errors.java:244)\r\n\tat org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)\r\n\tat org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)\r\n\tat org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)\r\n\tat org.glassfish.jersey.jetty.JettyHttpContainer.handle(JettyHttpContainer.java:171)\r\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat org.eclipse.jetty.server.Server.handle(Server.java:505)\r\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)\r\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)\r\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\r\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\r\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\r\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\r\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\r\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\r\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)\r\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:786)\r\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:743)\r\n\tat java.base/java.lang.Thread.run(Thread.java:834)\r\n",
      "message": "Error [code=internal_error, message=Internal server error]",
      "extra": {}
   }
}

возможные причины ошибки:
- родитель null
- или тип null
- или нельзя создавать узел такого типа там
Необходимо возвращать более информативное описание ошибки.

2. Перенос узла /projects/{project_name}/nodes/{uuid}/move

При попытке перенести узел с типом "Requality" в parent node с типом "ReportFolder" операция проходит успешно.
Необходимо ограничить перенос узлов в соответствие с их типом.

Адрес запроса:
/projects/test_project/nodes/12707f68-7554-40cd-a6c8-abc5045aa1e0/move
Пример запроса:

{
  "parent":"43af65f2-df84-463a-bfed-42a9286a9a71" 
}

Ответ:
{
   "success": true,
   "result":    {
      "haveChildren": true,
      "id": "Reports",
      "name": "Reports",
      "type": "ReportFolder",
      "parent": "05292521-5acc-4407-8168-6ee0d4ffdd7c",
      "uuid": "43af65f2-df84-463a-bfed-42a9286a9a71",
      "children":       [
                  {
            "id": "03",
            "name": "3.  ipsum dolor",
            "type": "Requirement",
            "uuid": "12707f68-7554-40cd-a6c8-abc5045aa1e0" 
         },
                  {
            "id": "01",
            "name": "01",
            "type": "ReportSettings",
            "uuid": "13b79e9d-cadb-44fd-b446-87f34449be19" 
         },
                  {
            "id": "01(2019-05-19_23-08-21)",
            "name": "01(2019-05-19_23-08-21)",
            "type": "ReportData",
            "uuid": "5c2a1d2d-fb25-4a1a-9ca2-4f4c8d0bec79" 
         },
                  {
            "id": "01(2019-05-19_23-09-18)",
            "name": "01(2019-05-19_23-09-18)",
            "type": "ReportData",
            "uuid": "9c6204ab-1679-4865-99a6-8c43c2760548" 
         },
                  {
            "id": "01(2019-05-19_23-26-36)",
            "name": "01(2019-05-19_23-26-36)",
            "type": "ReportData",
            "uuid": "54109aa2-6d41-4010-9e9d-94286b3ae443" 
         },
                  {
            "id": "01(2022-08-25_23-26-12)",
            "name": "01(2022-08-25_23-26-12)",
            "type": "ReportData",
            "uuid": "11e6e127-6713-425b-97b4-67d1b7c03410" 
         },
                  {
            "id": "new_folder_001",
            "name": "new_folder_001",
            "type": "ReportFolder",
            "uuid": "abcd665d-b2fd-409d-934b-876edada0dac" 
         }
      ]
   }
}

Необходимо ограничить создание узлов в соответствие с их типом.

Проект для которого приведены примеры в приложении.


Files

test_project.zip (52.5 KB) test_project.zip Радек Мария, 08/26/2022 11:20 AM
clipboard-202208261132-f4j7q.png (13.4 KB) clipboard-202208261132-f4j7q.png Радек Мария, 08/26/2022 11:32 AM

Related issues 1 (1 open0 closed)

Related to Requality - Task #12534: Добавить в АПИ точки для допустимых операций над структурой проектаNew07/17/2023

Actions
Actions #1

Updated by Радек Мария over 1 year ago

  • Description updated (diff)
Actions #2

Updated by Радек Мария over 1 year ago

  • Description updated (diff)
Actions #3

Updated by Радек Мария over 1 year ago

  • Assignee changed from Радек Мария to Denis Kildishev
Actions #4

Updated by Радек Мария 6 months ago

  • Related to Task #12534: Добавить в АПИ точки для допустимых операций над структурой проекта added
Actions

Also available in: Atom PDF