Project

General

Profile

Task #11859

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

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

 При попытке создания узла с типом "Requality" для parent node с типом "ReportFolder" возвращается сообщение об ошибке Internal server error. операция проходит успешно. 
 *Адрес запроса:*  
 /projects/test_project/create 
 *Пример запроса:* 
 <pre><code class="java"> 
 { 
   "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"  
     } 
   } 
 } 
 </code></pre> 
 Пример ответа: 
 <pre><code class="java"> 
 { 
    "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": {} 
    } 
 } 
 </code></pre> 

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

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

 При попытке перенести узел с типом "Requality" в parent node с типом "ReportFolder" операция проходит успешно. 
 Необходимо ограничить перенос узлов в соответствие с их типом. 
 !clipboard-202208261132-f4j7q.png! 
 *Адрес запроса:* 
 /projects/test_project/nodes/12707f68-7554-40cd-a6c8-abc5045aa1e0/move 
 *Пример запроса:* 
 <pre><code class="java"> 
 { 
   "parent":"43af65f2-df84-463a-bfed-42a9286a9a71" 
 } 
 </code></pre> 
 Ответ: 
 <pre><code class="java"> 
 { 
    "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" 
          } 
       ] 
    } 
 } 
 </code></pre> 
 Необходимо ограничить создание узлов в соответствие с их типом. 

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

Back