Added PATCH method [#24985]
This commit is contained in:
parent
988fe9b4fe
commit
194b083f4e
|
@ -1,5 +1,8 @@
|
|||
# Changelog for org.gcube.application.geoportal-client
|
||||
|
||||
## [v1.2.0-SNAPSHOT] - 2023-04-26
|
||||
- Added PATCH method [#24985]
|
||||
|
||||
## [v1.1.2] - 2023-01-10
|
||||
- Pom updates
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.gcube.application</groupId>
|
||||
<artifactId>geoportal-client</artifactId>
|
||||
<version>1.1.2</version>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
<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.common.clients.Call;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.glassfish.jersey.client.HttpUrlConnectorProvider;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.rmi.RemoteException;
|
||||
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
|
||||
@Slf4j
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* Gets the managed class.
|
||||
*
|
||||
* @return the managed class
|
||||
*/
|
||||
public Class<T> getManagedClass() {
|
||||
return managedClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the new.
|
||||
*
|
||||
* @param toCreate the to create
|
||||
* @return the t
|
||||
* @throws RemoteException the remote exception
|
||||
*/
|
||||
@Override
|
||||
public T createNew(Document toCreate) throws RemoteException {
|
||||
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
|
||||
public void deleteById(String id) throws RemoteException {
|
||||
deleteById(id,false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete by id.
|
||||
*
|
||||
* @param id the id
|
||||
* @param force the force
|
||||
* @throws RemoteException the remote exception
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id, Boolean force) throws RemoteException {
|
||||
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
|
||||
public T getById(String id) throws RemoteException {
|
||||
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
|
||||
public Configuration getConfiguration() throws RemoteException {
|
||||
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
|
||||
public Iterator<T> query(QueryRequest request) throws RemoteException {
|
||||
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
|
||||
public <C> Iterator<C> queryForClass(QueryRequest request,Class<C> clazz) throws RemoteException {
|
||||
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
|
||||
public String queryForJSON(QueryRequest request) throws RemoteException {
|
||||
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
|
||||
public T performStep(String id, StepExecutionRequest request) throws RemoteException{
|
||||
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
|
||||
public T registerFileSet(String id, RegisterFileSetRequest req) throws RemoteException, InvalidRequestException {
|
||||
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
|
||||
public T deleteFileSet(String id, String path, Boolean force) throws RemoteException {
|
||||
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
|
||||
public T forceUnlock(String id) throws RemoteException {
|
||||
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
|
||||
public T setAccessPolicy(String id, Access toSet) throws RemoteException {
|
||||
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
|
||||
public T updateDocument(String id, Document updatedDocument) throws RemoteException {
|
||||
try {
|
||||
|
@ -297,7 +417,49 @@ public class DefaultDocumentsClient<T extends Project> implements Projects<T> {
|
|||
throw new RemoteException("Unexpected Error", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
public Project setRelation(CreateRelationshipRequest request) throws RemoteException {
|
||||
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
|
||||
public Project deleteRelation(DeleteRelationshipRequest request) throws RemoteException {
|
||||
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
|
||||
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId) throws RemoteException {
|
||||
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
|
||||
public Iterator<RelationshipNavigationObject> getRelationshipChain(String id, String relationId, Boolean deep) throws RemoteException {
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue