Difference between revisions of "GxRest/GxJRS/Requests"
Manuele.simi (Talk | contribs) (→Registering JAX-RS components) |
Manuele.simi (Talk | contribs) (→Registering JAX-RS components) |
||
Line 59: | Line 59: | ||
</source> | </source> | ||
+ | A Feature is a special type of JAX-RS configuration meta-provider. Once a feature is registered, its ''configure()'' method is invoked during JAX-RS runtime configuration and bootstrapping phase allowing the feature to further configure the runtime context in which it has been registered. | ||
== Consuming the response == | == Consuming the response == |
Revision as of 12:09, 24 April 2018
Contents
Introduction
Types of Requests
GXHTTPRequest
GXWebTargetAdapterRequest
A basic example that sends a Post request to create a new resource:
import org.gcube.common.gxrest.response.inbound.GXInboundResponse; import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; //... GXWebTargetAdapterRequest request = GXWebTargetAdapterRequest.newRequest("http://host:port/service/").from("GXRequestTest"); String context ="json serialization (not shown)"; Map<String,String> queryParams = new WeakHashMap<>(); queryParams.put("rrURL", DEFAULT_RR_URL); String DEFAULT_RR_URL = "url of resource registry to contact"; GXInboundResponse response = request.path("resource-manager") .queryParams(queryParams).withEntity(Entity.entity(context, MediaType.APPLICATION_JSON)).post();
Overriding the security context
By default, the security token available in the current thread is attached to the request.
However, if there is the need to force a specific token to be used, this can be done by invoking the setSecurityToken() method on the request object:
GXWebTargetAdapterRequest request = GXWebTargetAdapterRequest.newRequest("http://host:port/service/").from("GXRequestTest"); request.setSecurityToken("my token");
Registering JAX-RS components
The following example shows how to register an instance of a custom JAX-RS component (a feature in this case) to be instantiated and used in the scope of the request:
import javax.ws.rs.core.Feature; public class MyFeature implements Feature { @Override public boolean configure(FeatureContext context) { boolean enabled = false; //decides if the feature is enabled... return enabled; } } GXWebTargetAdapterRequest request = GXWebTargetAdapterRequest.newRequest("http://host:port/service/").from("GXRequestTest"); request.register(MyFeature.class)
A Feature is a special type of JAX-RS configuration meta-provider. Once a feature is registered, its configure() method is invoked during JAX-RS runtime configuration and bootstrapping phase allowing the feature to further configure the runtime context in which it has been registered.
Consuming the response
Here is an example about how to consume the returned response:
import javax.ws.rs.core.Response; import org.gcube.common.gxrest.response.inbound.GXInboundResponse; GXInboundResponse response = //request if (response.hasGXError()) { //this means that the error response has been generated at service side with gxRest as well if (response.hasException()) { try { throw response.getException(); } catch (ClassNotFoundException e) { // can't recreate the original exception (not on the classpath?) } catch (Exception e) { e.printStackTrace(); throw e; } } else { //if you want to use the original response Response jsResponse = response.getSource(); //then consume the response from here } } else { if (response.hasCREATEDCode()) { System.out.println("Resource successfully created!"); System.out.println("Returned content: " + response.getStreamedContentAsString()); } else { System.out.println("Resource creation failed. Returned status:" + response.getHTTPCode()); //if you want to use the original response Response jsResponse = response.getSource(); //then consume the response from here } }