Added PATCH method [#24985]
This commit is contained in:
parent
988fe9b4fe
commit
194b083f4e
|
@ -1,5 +1,8 @@
|
||||||
# Changelog for org.gcube.application.geoportal-client
|
# Changelog for org.gcube.application.geoportal-client
|
||||||
|
|
||||||
|
## [v1.2.0-SNAPSHOT] - 2023-04-26
|
||||||
|
- Added PATCH method [#24985]
|
||||||
|
|
||||||
## [v1.1.2] - 2023-01-10
|
## [v1.1.2] - 2023-01-10
|
||||||
- Pom updates
|
- Pom updates
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.gcube.application</groupId>
|
<groupId>org.gcube.application</groupId>
|
||||||
<artifactId>geoportal-client</artifactId>
|
<artifactId>geoportal-client</artifactId>
|
||||||
<version>1.1.2</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
<name>Geoportal Client</name>
|
<name>Geoportal Client</name>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,24 @@ import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.common.rest.Projects;
|
import org.gcube.application.geoportal.common.rest.Projects;
|
||||||
import org.gcube.common.clients.Call;
|
import org.gcube.common.clients.Call;
|
||||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||||
|
import org.glassfish.jersey.client.HttpUrlConnectorProvider;
|
||||||
|
|
||||||
import javax.ws.rs.client.Entity;
|
import javax.ws.rs.client.Entity;
|
||||||
import javax.ws.rs.client.WebTarget;
|
import javax.ws.rs.client.WebTarget;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.rmi.RemoteException;
|
import java.rmi.RemoteException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new default documents client.
|
||||||
|
*
|
||||||
|
* @param delegate the delegate
|
||||||
|
* @param profileID the profile ID
|
||||||
|
* @param managedClass the managed class
|
||||||
|
*/
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
|
@ -35,10 +45,22 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
protected final Class<T> managedClass;
|
protected final Class<T> managedClass;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the managed class.
|
||||||
|
*
|
||||||
|
* @return the managed class
|
||||||
|
*/
|
||||||
public Class<T> getManagedClass() {
|
public Class<T> getManagedClass() {
|
||||||
return managedClass;
|
return managedClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the new.
|
||||||
|
*
|
||||||
|
* @param toCreate the to create
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T createNew(Document toCreate) throws RemoteException {
|
public T createNew(Document toCreate) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -60,11 +82,24 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete by id.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteById(String id) throws RemoteException {
|
public void deleteById(String id) throws RemoteException {
|
||||||
deleteById(id,false);
|
deleteById(id,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete by id.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param force the force
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteById(String id, Boolean force) throws RemoteException {
|
public void deleteById(String id, Boolean force) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -85,6 +120,13 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the by id.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @return the by id
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T getById(String id) throws RemoteException {
|
public T getById(String id) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -104,6 +146,12 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the configuration.
|
||||||
|
*
|
||||||
|
* @return the configuration
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Configuration getConfiguration() throws RemoteException {
|
public Configuration getConfiguration() throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -122,11 +170,27 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query.
|
||||||
|
*
|
||||||
|
* @param request the request
|
||||||
|
* @return the iterator
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Iterator<T> query(QueryRequest request) throws RemoteException {
|
public Iterator<T> query(QueryRequest request) throws RemoteException {
|
||||||
return queryForClass(request,getManagedClass());
|
return queryForClass(request,getManagedClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query for class.
|
||||||
|
*
|
||||||
|
* @param <C> the generic type
|
||||||
|
* @param request the request
|
||||||
|
* @param clazz the clazz
|
||||||
|
* @return the iterator
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public <C> Iterator<C> queryForClass(QueryRequest request,Class<C> clazz) throws RemoteException {
|
public <C> Iterator<C> queryForClass(QueryRequest request,Class<C> clazz) throws RemoteException {
|
||||||
String jsonString=queryForJSON(request);
|
String jsonString=queryForJSON(request);
|
||||||
|
@ -141,6 +205,13 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query for JSON.
|
||||||
|
*
|
||||||
|
* @param request the request
|
||||||
|
* @return the string
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String queryForJSON(QueryRequest request) throws RemoteException {
|
public String queryForJSON(QueryRequest request) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -159,6 +230,14 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform step.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param request the request
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T performStep(String id, StepExecutionRequest request) throws RemoteException{
|
public T performStep(String id, StepExecutionRequest request) throws RemoteException{
|
||||||
try {
|
try {
|
||||||
|
@ -182,6 +261,15 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register file set.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param req the req
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
* @throws InvalidRequestException the invalid request exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T registerFileSet(String id, RegisterFileSetRequest req) throws RemoteException, InvalidRequestException {
|
public T registerFileSet(String id, RegisterFileSetRequest req) throws RemoteException, InvalidRequestException {
|
||||||
try {
|
try {
|
||||||
|
@ -209,6 +297,15 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete file set.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param path the path
|
||||||
|
* @param force the force
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T deleteFileSet(String id, String path, Boolean force) throws RemoteException {
|
public T deleteFileSet(String id, String path, Boolean force) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -232,6 +329,13 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force unlock.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T forceUnlock(String id) throws RemoteException {
|
public T forceUnlock(String id) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -254,6 +358,14 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the access policy.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param toSet the to set
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T setAccessPolicy(String id, Access toSet) throws RemoteException {
|
public T setAccessPolicy(String id, Access toSet) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -276,6 +388,14 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update document.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param updatedDocument the updated document
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public T updateDocument(String id, Document updatedDocument) throws RemoteException {
|
public T updateDocument(String id, Document updatedDocument) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -298,6 +418,48 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Patch document.
|
||||||
|
* Added by Francesco Mangiacrapa
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param path the path
|
||||||
|
* @param updatedDocument the updated document
|
||||||
|
* @return the t
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public T patchDocument(String id, String path, Document updatedDocument) throws RemoteException {
|
||||||
|
try {
|
||||||
|
log.debug("Patching {} [useCaseDescriptor {} , class {}] with ", id, profileID, getManagedClass(),
|
||||||
|
updatedDocument);
|
||||||
|
Call<WebTarget, T> call = endpoint -> {
|
||||||
|
|
||||||
|
WebTarget webTarget = endpoint.path(profileID).path(id);
|
||||||
|
webTarget.queryParam(InterfaceConstants.Parameters.PATH, path);
|
||||||
|
webTarget.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
|
||||||
|
Response response = webTarget.request(MediaType.APPLICATION_JSON).method("PATCH", Entity.entity(updatedDocument, MediaType.APPLICATION_JSON));
|
||||||
|
return ResponseCommons.check(response, getManagedClass());
|
||||||
|
};
|
||||||
|
T toReturn = delegate.make(call);
|
||||||
|
log.info("Updated ID {} useCaseDescriptor {}", id, profileID);
|
||||||
|
return toReturn;
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
log.error("Unexpected error ", e);
|
||||||
|
throw e;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Unexpected error ", e);
|
||||||
|
throw new RemoteException("Unexpected Error", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the relation.
|
||||||
|
*
|
||||||
|
* @param request the request
|
||||||
|
* @return the project
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Project setRelation(CreateRelationshipRequest request) throws RemoteException {
|
public Project setRelation(CreateRelationshipRequest request) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -328,6 +490,13 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete relation.
|
||||||
|
*
|
||||||
|
* @param request the request
|
||||||
|
* @return the project
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Project deleteRelation(DeleteRelationshipRequest request) throws RemoteException {
|
public Project deleteRelation(DeleteRelationshipRequest request) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
@ -358,11 +527,28 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the relationship chain.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param relationId the relation id
|
||||||
|
* @return the relationship chain
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId) throws RemoteException {
|
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId) throws RemoteException {
|
||||||
return getRelationshipChain(id,relationId,null);
|
return getRelationshipChain(id,relationId,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the relationship chain.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param relationId the relation id
|
||||||
|
* @param deep the deep
|
||||||
|
* @return the relationship chain
|
||||||
|
* @throws RemoteException the remote exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId, Boolean deep) throws RemoteException {
|
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId, Boolean deep) throws RemoteException {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in New Issue