Actions
Task #11859
openДоработка APIForNG в части создания и переноса узлов.
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
Actions