Class UpdateMethodImplementor
- java.lang.Object
-
- io.quarkus.rest.data.panache.deployment.methods.StandardMethodImplementor
-
- io.quarkus.rest.data.panache.deployment.methods.UpdateMethodImplementor
-
- All Implemented Interfaces:
MethodImplementor
public final class UpdateMethodImplementor extends StandardMethodImplementor
-
-
Field Summary
-
Fields inherited from class io.quarkus.rest.data.panache.deployment.methods.StandardMethodImplementor
responseImplementor
-
Fields inherited from interface io.quarkus.rest.data.panache.deployment.methods.MethodImplementor
APPLICATION_HAL_JSON, APPLICATION_JSON
-
-
Constructor Summary
Constructors Constructor Description UpdateMethodImplementor(io.quarkus.deployment.Capabilities capabilities)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected StringgetResourceMethodName()Get a name of a method which this controller uses to access data.protected voidimplementInternal(io.quarkus.gizmo.ClassCreator classCreator, ResourceMetadata resourceMetadata, ResourceProperties resourceProperties, io.quarkus.gizmo.FieldDescriptor resourceField)Generate JAX-RS UPDATE method.-
Methods inherited from class io.quarkus.rest.data.panache.deployment.methods.StandardMethodImplementor
addConsumesAnnotation, addContextAnnotation, addDefaultValueAnnotation, addDeleteAnnotation, addGetAnnotation, addLinksAnnotation, addMethodAnnotations, addOpenApiResponseAnnotation, addOpenApiResponseAnnotation, addOpenApiResponseAnnotation, addOpenApiResponseAnnotation, addPathAnnotation, addPathParamAnnotation, addPostAnnotation, addProducesAnnotation, addProducesJsonAnnotation, addPutAnnotation, addQueryParamAnnotation, addSecurityAnnotations, addSortQueryParamValidatorAnnotation, appendToPath, hasSecurityCapability, hasValidatorCapability, implement, implementTryBlock, isNotReactivePanache, isResteasyClassic
-
-
-
-
Method Detail
-
implementInternal
protected void implementInternal(io.quarkus.gizmo.ClassCreator classCreator, ResourceMetadata resourceMetadata, ResourceProperties resourceProperties, io.quarkus.gizmo.FieldDescriptor resourceField)Generate JAX-RS UPDATE method. The RESTEasy Classic version exposesRestDataResource.update(Object, Object). ExposeRestDataResource.update(Object, Object)via JAX-RS method. Generated code looks more or less like this:
The RESTEasy Reactive version exposes@PUT @Path("{id}") @Consumes({"application/json"}) @Produces({"application/json"}) @LinkResource( rel = "update", entityClassName = "com.example.Entity" ) public Response update(@PathParam("id") ID id, Entity entityToSave) { try { Object newEntity = updateExecutor.execute(() -> { if (resource.get(id) == null) { return resource.update(id, entityToSave); } else { resource.update(id, entityToSave); return null; } }); if (newEntity == null) { return Response.status(204).build(); } else { String location = new ResourceLinksProvider().getSelfLink(newEntity); if (location != null) { ResponseBuilder responseBuilder = Response.status(201); responseBuilder.entity(newEntity); responseBuilder.location(URI.create(location)); return responseBuilder.build(); } else { throw new RuntimeException("Could not extract a new entity URL") } } } catch (Throwable t) { throw new RestDataPanacheException(t); } }ReactiveRestDataResource.update(Object, Object).@PUT @Path("{id}") @Consumes({"application/json"}) @Produces({"application/json"}) @LinkResource( rel = "update", entityClassName = "com.example.Entity" ) public Uni<Response> update(@PathParam("id") ID id, Entity entityToSave) { return resource.get(id).flatMap(entity -> { if (entity == null) { return Uni.createFrom().item(Response.status(204).build()); } else { return resource.update(id, entityToSave).map(savedEntity -> { String location = new ResourceLinksProvider().getSelfLink(savedEntity); if (location != null) { ResponseBuilder responseBuilder = Response.status(201); responseBuilder.entity(savedEntity); responseBuilder.location(URI.create(location)); return responseBuilder.build(); } else { throw new RuntimeException("Could not extract a new entity URL") } }); } }).onFailure().invoke(t -> throw new RestDataPanacheException(t)); }- Specified by:
implementInternalin classStandardMethodImplementor
-
getResourceMethodName
protected String getResourceMethodName()
Description copied from class:StandardMethodImplementorGet a name of a method which this controller uses to access data.- Specified by:
getResourceMethodNamein classStandardMethodImplementor
-
-