Task #11859
Updated by Радек Мария about 2 years 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> Необходимо ограничить создание узлов в соответствие с их типом. Проект для которого приведены примеры в приложении.