Go to file
Luca Frosini 0dde7c5979 fix: update repository name in POM properties 2025-11-17 10:53:18 +01:00
src import commit 2025-10-21 14:52:43 +02:00
.gitignore import commit 2025-10-21 14:52:43 +02:00
CHANGELOG.md fix: update changelog to reflect versioning changes and project renaming 2025-11-11 15:24:06 +01:00
FUNDING.md import commit 2025-10-21 14:52:43 +02:00
Jenkinsfile Updated Jenkinsfile and Jenkinsjob.xml 2025-11-11 14:51:40 +01:00
Jenkinsfile-javax Updated Jenkinsfile and Jenkinsjob.xml 2025-11-11 16:14:28 +01:00
Jenkinsjob-javax.xml Updated Jenkinsfile and Jenkinsjob.xml 2025-11-11 16:14:28 +01:00
Jenkinsjob.xml Updated Jenkinsfile and Jenkinsjob.xml 2025-11-11 14:51:40 +01:00
LICENSE.md import commit 2025-10-21 14:52:43 +02:00
README.md import commit 2025-10-21 14:52:43 +02:00
gxJRS.iml import commit 2025-10-21 14:52:43 +02:00
pom.javax.xml fix: update repository name in POM properties 2025-11-17 10:53:18 +01:00
pom.xml fix: update SCM URLs to use project artifactId variable 2025-11-11 14:48:37 +01:00

README.md

gxRest

The gCube eXtensions to the Rest Protocol (gxRest) is a set of Java libraries designed to provide convenient round-trip interaction between a Restful web application (also known as "service") and its clients.

gxRest has the flexibility for different degrees of exploitation:

  • it can be entirely adopted both at client and service side with full benefit of its conventions;
  • it can be used to send REST requests based only on plain HTTP;
  • it can be used only to return HTTP code/messagess from the service;
  • it can be used only to throw Exceptions from the service to the client.

Examples of use

Sending a request:

GXHTTPRequest request = GXHTTPRequest.newRequest("http://host:port/service/").from("GXRequestTest");
 
//prepare some parameters
String context ="...";
Map<String,String> queryParams = new WeakHashMap<>();
queryParams.put("param name", "param value");
GXInboundResponse response = request.path("context")
	  .queryParams(queryParams).withBody(context).post();

Returning a success response:

 @POST
  public Response create(...) {
 
    //Resource successfully created 
    
    URI location = ... //URI of the new resource
    return GXOutboundSuccessResponse.newCREATEResponse(location)
              .withMessage("Resource successfully created.")
	      .ofType(MediaType.APPLICATION_JSON)
              .build();
  }

Throwing an exception:

@POST
  public Response create(...) {
 
    //Oh no, something failed here
    GXOutboundErrorResponse.throwException(new MyCustomException("Resource already exists."));
    
  }   

Parsing a response

// invoke the remote method and get a response.
GXInboundResponse response = ...;
if (response.hasException()) 
    throw response.getException();
//assuming a created (200) code was expected 
if (response.hasCREATEDCode()) {
		System.out.println("Resource successfully created!");
}
//access content as string
String value = response.getStreamedContentAsString();
//unmasharll content as json
Context returnedContext = response.tryConvertStreamedContentFromJson(Context.class);

Documentation

Deployment

Notes about how to deploy this component on an infrastructure or link to wiki doc (if any).

Built With

  • JAX-RS - Java™ API for RESTful Web Services
  • Jersey - JAX-RS runtime
  • Maven - Dependency Management

License

This project is licensed under the terms specified in the LICENSE.md file.

About the gCube Framework

This software is part of the gCubeFramework: an open-source software toolkit used for building and operating Hybrid Data Infrastructures enabling the dynamic deployment of Virtual Research Environments by favouring the realisation of reuse oriented policies.

The projects leading to this software have received funding from a series of European Union programmes see FUNDING.md