Create style
This commit is contained in:
parent
0ef669ab6a
commit
959892798f
|
@ -3,6 +3,7 @@ package org.gcube.spatial.data.clients.geoserver;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.spatial.data.clients.GenericLoginClient;
|
import org.gcube.spatial.data.clients.GenericLoginClient;
|
||||||
|
import org.gcube.spatial.data.clients.geoserver.model.FeatureTypeInfo;
|
||||||
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ public interface GSRESTClient extends GenericLoginClient{
|
||||||
// FeatureTypes
|
// FeatureTypes
|
||||||
public List<String> getFeatureTypesInWorkspace(String workspace)throws RemoteException,Exception;
|
public List<String> getFeatureTypesInWorkspace(String workspace)throws RemoteException,Exception;
|
||||||
public List<String> getFeatureTypesInDataStore(String workspace,String datastore)throws RemoteException,Exception;
|
public List<String> getFeatureTypesInDataStore(String workspace,String datastore)throws RemoteException,Exception;
|
||||||
public JSONObject getFeatureType(String workspace,String featureName)throws RemoteException,Exception;
|
public FeatureTypeInfo getFeatureType(String workspace,String featureName)throws RemoteException,Exception;
|
||||||
|
|
||||||
|
|
||||||
//Layers
|
//Layers
|
||||||
|
@ -49,19 +50,8 @@ public interface GSRESTClient extends GenericLoginClient{
|
||||||
public void createWorkspace(String ws)throws RemoteException,Exception;
|
public void createWorkspace(String ws)throws RemoteException,Exception;
|
||||||
|
|
||||||
public void createStyle(String name,String content)throws RemoteException,Exception;
|
public void createStyle(String name,String content)throws RemoteException,Exception;
|
||||||
//
|
|
||||||
// publish DB layer
|
|
||||||
// publish local files
|
|
||||||
|
|
||||||
// create store for postgis db
|
// create store for postgis db
|
||||||
/**
|
|
||||||
* getDataStoreManager().create(workspace, encoder)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* if(!gis.getCurrentGeoServer().getPublisher().publishStyle(sldFile, name)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -70,17 +60,6 @@ public interface GSRESTClient extends GenericLoginClient{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* public boolean publishShp(String workspace, String storeName, NameValuePair[] storeParams,
|
|
||||||
String datasetName, UploadMethod method, URI shapefile, String srs, String defaultStyle)
|
|
||||||
throws FileNotFoundException, IllegalArgumentException {
|
|
||||||
return publishShp(workspace, storeName, storeParams, datasetName, method, shapefile, srs,
|
|
||||||
null, ProjectionPolicy.FORCE_DECLARED, defaultStyle);
|
|
||||||
}
|
|
||||||
* @param ws
|
|
||||||
* @throws RemoteException
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Publish a DS described in @param parameters. Parameters vary depending on DS type. See https://docs.geoserver.org/latest/en/api/#1.0.0/datastores.yaml for more details.
|
* Publish a DS described in @param parameters. Parameters vary depending on DS type. See https://docs.geoserver.org/latest/en/api/#1.0.0/datastores.yaml for more details.
|
||||||
|
|
|
@ -8,11 +8,12 @@ import java.util.Map;
|
||||||
import javax.ws.rs.client.Entity;
|
import javax.ws.rs.client.Entity;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
|
|
||||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
|
||||||
import org.gcube.spatial.data.clients.AbstractGenericRESTClient;
|
import org.gcube.spatial.data.clients.AbstractGenericRESTClient;
|
||||||
|
import org.gcube.spatial.data.clients.geoserver.model.FeatureTypeInfo;
|
||||||
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
|
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
|
||||||
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
import org.opengis.feature.type.FeatureType;
|
||||||
|
|
||||||
import com.jayway.jsonpath.Configuration;
|
import com.jayway.jsonpath.Configuration;
|
||||||
import com.jayway.jsonpath.DocumentContext;
|
import com.jayway.jsonpath.DocumentContext;
|
||||||
|
@ -127,8 +128,8 @@ public class GSRESTClientImpl extends AbstractGenericRESTClient implements GSRES
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject getFeatureType(String workspace, String featureName) throws RemoteException, Exception {
|
public FeatureTypeInfo getFeatureType(String workspace, String featureName) throws RemoteException, Exception {
|
||||||
return get(WS_BASE_PATH+"/"+workspace+"/"+FEATURES_BASE_PATH+"/"+featureName,JSONObject.class);
|
return get(WS_BASE_PATH+"/"+workspace+"/"+FEATURES_BASE_PATH+"/"+featureName,FeatureTypeInfo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -224,7 +225,11 @@ public class GSRESTClientImpl extends AbstractGenericRESTClient implements GSRES
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createStyle(String name, String content) throws RemoteException, Exception {
|
public void createStyle(String name, String content) throws RemoteException, Exception {
|
||||||
put(STYLES_BASE_PATH+"/"+name, Entity.entity(content, "application/vnd.ogc.sld+xml"));
|
|
||||||
|
// JSONObject obj=new JSONObject();
|
||||||
|
// obj.put("name", name);
|
||||||
|
// obj.put("");
|
||||||
|
post(STYLES_BASE_PATH, Entity.entity(content, "application/vnd.ogc.sld+xml"),String.class,Collections.singletonMap("name", name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.gcube.spatial.data.clients.geoserver;
|
package org.gcube.spatial.data.clients.geoserver.model;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
|
@ -0,0 +1,92 @@
|
||||||
|
package org.gcube.spatial.data.clients.geoserver.model;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FeatureTypeInfo {
|
||||||
|
|
||||||
|
public static class Namespace{
|
||||||
|
private String name;
|
||||||
|
private String href;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class Keyword{
|
||||||
|
private List<String> string;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MetadataLink{
|
||||||
|
private String type;
|
||||||
|
private String metadataType;
|
||||||
|
private String content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class BoundingBox{
|
||||||
|
private Number minx;
|
||||||
|
private Number maxx;
|
||||||
|
private Number miny;
|
||||||
|
private Number maxy;
|
||||||
|
private String crs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Entry{
|
||||||
|
private String key;
|
||||||
|
private String value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class Store{
|
||||||
|
private String clazz;
|
||||||
|
private String name;
|
||||||
|
private String href;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class Attribute{
|
||||||
|
private String name;
|
||||||
|
private Integer minOccurs;
|
||||||
|
private Integer maxOccurs;
|
||||||
|
private Boolean nillable;
|
||||||
|
private String binding;
|
||||||
|
private Integer length;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String nativeName;
|
||||||
|
private Namespace namespace;
|
||||||
|
private String title;
|
||||||
|
@XmlElement(name="abstract")
|
||||||
|
private String abstractField;
|
||||||
|
private List<Keyword> keywords;
|
||||||
|
|
||||||
|
private List<MetadataLink> metadataLinks;
|
||||||
|
private List<MetadataLink> dataLinks;
|
||||||
|
|
||||||
|
|
||||||
|
private String nativeCRS;
|
||||||
|
private String srs;
|
||||||
|
private BoundingBox nativeVoundingBox;
|
||||||
|
private BoundingBox latLonBoundingBox;
|
||||||
|
|
||||||
|
|
||||||
|
private List<Entry> metadata;
|
||||||
|
|
||||||
|
private Store store;
|
||||||
|
|
||||||
|
private String cqlFilter;
|
||||||
|
private Integer maxFeatures;
|
||||||
|
private Number numDecimals;
|
||||||
|
private String responseSRS;
|
||||||
|
private Boolean overridingServiceSRS;
|
||||||
|
private Boolean skipNumberMatched;
|
||||||
|
private Boolean circularArcPresent;
|
||||||
|
private Number linearizationTolerance;
|
||||||
|
|
||||||
|
private List<Attribute> attributes;
|
||||||
|
|
||||||
|
}
|
|
@ -4,19 +4,16 @@ import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.Assume.assumeTrue;
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.sound.midi.SysexMessage;
|
|
||||||
|
|
||||||
import org.gcube.sdi.test.GCubeSDITest;
|
import org.gcube.sdi.test.GCubeSDITest;
|
||||||
import org.gcube.spatial.data.clients.SDIGenericPlugin;
|
import org.gcube.spatial.data.clients.SDIGenericPlugin;
|
||||||
import org.gcube.spatial.data.clients.model.engine.Engine;
|
import org.gcube.spatial.data.clients.model.engine.Engine;
|
||||||
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
|
||||||
import org.gcube.spatial.data.sdi.utils.Files;
|
import org.gcube.spatial.data.sdi.utils.Files;
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class GSTests extends GCubeSDITest{
|
public class GSTests extends GCubeSDITest{
|
||||||
|
@ -56,13 +53,13 @@ public class GSTests extends GCubeSDITest{
|
||||||
}catch(RemoteException e ) {System.err.println("Unable to read SLD "+sld+" from "+ws+". Cause "+e.getResponseHTTPCode()+": "+e.getMessage());}
|
}catch(RemoteException e ) {System.err.println("Unable to read SLD "+sld+" from "+ws+". Cause "+e.getResponseHTTPCode()+": "+e.getMessage());}
|
||||||
|
|
||||||
|
|
||||||
System.out.println(client.getDataStoresInWorkspace(ws));
|
System.out.println("WS "+ws+" ->"+client.getDataStoresInWorkspace(ws));
|
||||||
|
|
||||||
for(String ds:client.getDataStoresNamesInWorkspace(ws))
|
// for(String ds:client.getDataStoresNamesInWorkspace(ws))
|
||||||
if(ds!=null) {
|
// if(ds!=null) {
|
||||||
try{ System.out.println(client.getDataStore(ws, ds));
|
// try{ System.out.println(client.getDataStore(ws, ds));
|
||||||
}catch(RemoteException e ) {System.err.println("Unable to read DS "+ds+" from "+ws+". Cause "+e.getResponseHTTPCode()+": "+e.getMessage());}
|
// }catch(RemoteException e ) {System.err.println("Unable to read DS "+ds+" from "+ws+". Cause "+e.getResponseHTTPCode()+": "+e.getMessage());}
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
for(String ft : client.getFeatureTypesInWorkspace(ws))
|
for(String ft : client.getFeatureTypesInWorkspace(ws))
|
||||||
|
@ -121,7 +118,8 @@ public class GSTests extends GCubeSDITest{
|
||||||
|
|
||||||
// SLD
|
// SLD
|
||||||
String myStyle=UUID.randomUUID().toString().replace("-", "_");
|
String myStyle=UUID.randomUUID().toString().replace("-", "_");
|
||||||
client.createStyle(myStyle, Files.readFileAsString("clustered_points.sld", Charset.defaultCharset()));
|
System.out.println("style name is :"+ myStyle);
|
||||||
|
client.createStyle(myStyle,read("clustered_points.sld"));
|
||||||
assertTrue("SLD registered ",client.getStylesNames().contains(myStyle));
|
assertTrue("SLD registered ",client.getStylesNames().contains(myStyle));
|
||||||
client.deleteStyle(myStyle, true, true);
|
client.deleteStyle(myStyle, true, true);
|
||||||
assertFalse("SLD Removed",client.getStylesNames().contains(myStyle));
|
assertFalse("SLD Removed",client.getStylesNames().contains(myStyle));
|
||||||
|
@ -129,5 +127,8 @@ public class GSTests extends GCubeSDITest{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final String read(String toRead) throws IOException {
|
||||||
|
File f= Files.getFileFromResources(toRead);
|
||||||
|
return Files.readFileAsString(f.getAbsolutePath(), Charset.defaultCharset());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<StyledLayerDescriptor version="1.0.0"
|
||||||
|
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
|
||||||
|
xmlns="http://www.opengis.net/sld"
|
||||||
|
xmlns:ogc="http://www.opengis.net/ogc"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<NamedLayer>
|
||||||
|
<Name>vol_stacked_point</Name>
|
||||||
|
<UserStyle>
|
||||||
|
<!-- Styles can have names, titles and abstracts -->
|
||||||
|
<Title>Stacked Point</Title>
|
||||||
|
<Abstract>Styles archeomar using stacked points</Abstract>
|
||||||
|
<FeatureTypeStyle>
|
||||||
|
<Transformation>
|
||||||
|
<ogc:Function name="vec:PointStacker">
|
||||||
|
<ogc:Function name="parameter">
|
||||||
|
<ogc:Literal>data</ogc:Literal>
|
||||||
|
</ogc:Function>
|
||||||
|
<ogc:Function name="parameter">
|
||||||
|
<ogc:Literal>cellSize</ogc:Literal>
|
||||||
|
<ogc:Literal>30</ogc:Literal>
|
||||||
|
</ogc:Function>
|
||||||
|
<ogc:Function name="parameter">
|
||||||
|
<ogc:Literal>outputBBOX</ogc:Literal>
|
||||||
|
<ogc:Function name="env">
|
||||||
|
<ogc:Literal>wms_bbox</ogc:Literal>
|
||||||
|
</ogc:Function>
|
||||||
|
</ogc:Function>
|
||||||
|
<ogc:Function name="parameter">
|
||||||
|
<ogc:Literal>outputWidth</ogc:Literal>
|
||||||
|
<ogc:Function name="env">
|
||||||
|
<ogc:Literal>wms_width</ogc:Literal>
|
||||||
|
</ogc:Function>
|
||||||
|
</ogc:Function>
|
||||||
|
<ogc:Function name="parameter">
|
||||||
|
<ogc:Literal>outputHeight</ogc:Literal>
|
||||||
|
<ogc:Function name="env">
|
||||||
|
<ogc:Literal>wms_height</ogc:Literal>
|
||||||
|
</ogc:Function>
|
||||||
|
</ogc:Function>
|
||||||
|
</ogc:Function>
|
||||||
|
</Transformation>
|
||||||
|
<Rule>
|
||||||
|
<Name>rule1</Name>
|
||||||
|
<Title>Site</Title>
|
||||||
|
<ogc:Filter>
|
||||||
|
<ogc:PropertyIsLessThanOrEqualTo>
|
||||||
|
<ogc:PropertyName>count</ogc:PropertyName>
|
||||||
|
<ogc:Literal>1</ogc:Literal>
|
||||||
|
</ogc:PropertyIsLessThanOrEqualTo>
|
||||||
|
</ogc:Filter>
|
||||||
|
<PointSymbolizer>
|
||||||
|
<Graphic>
|
||||||
|
<Mark>
|
||||||
|
<WellKnownName>circle</WellKnownName>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#FF0000</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</Mark>
|
||||||
|
<Size>8</Size>
|
||||||
|
</Graphic>
|
||||||
|
</PointSymbolizer>
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Name>rule29</Name>
|
||||||
|
<Title>2-9 Sites</Title>
|
||||||
|
<ogc:Filter>
|
||||||
|
<ogc:PropertyIsBetween>
|
||||||
|
<ogc:PropertyName>count</ogc:PropertyName>
|
||||||
|
<ogc:LowerBoundary>
|
||||||
|
<ogc:Literal>2</ogc:Literal>
|
||||||
|
</ogc:LowerBoundary>
|
||||||
|
<ogc:UpperBoundary>
|
||||||
|
<ogc:Literal>9</ogc:Literal>
|
||||||
|
</ogc:UpperBoundary>
|
||||||
|
</ogc:PropertyIsBetween>
|
||||||
|
</ogc:Filter>
|
||||||
|
<PointSymbolizer>
|
||||||
|
<Graphic>
|
||||||
|
<Mark>
|
||||||
|
<WellKnownName>circle</WellKnownName>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#AA0000</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</Mark>
|
||||||
|
<Size>14</Size>
|
||||||
|
</Graphic>
|
||||||
|
</PointSymbolizer>
|
||||||
|
<TextSymbolizer>
|
||||||
|
<Label>
|
||||||
|
<ogc:PropertyName>count</ogc:PropertyName>
|
||||||
|
</Label>
|
||||||
|
<Font>
|
||||||
|
<CssParameter name="font-family">Arial</CssParameter>
|
||||||
|
<CssParameter name="font-size">12</CssParameter>
|
||||||
|
<CssParameter name="font-weight">bold</CssParameter>
|
||||||
|
</Font>
|
||||||
|
<LabelPlacement>
|
||||||
|
<PointPlacement>
|
||||||
|
<AnchorPoint>
|
||||||
|
<AnchorPointX>0.5</AnchorPointX>
|
||||||
|
<AnchorPointY>0.8</AnchorPointY>
|
||||||
|
</AnchorPoint>
|
||||||
|
</PointPlacement>
|
||||||
|
</LabelPlacement>
|
||||||
|
<Halo>
|
||||||
|
<Radius>2</Radius>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#AA0000</CssParameter>
|
||||||
|
<CssParameter name="fill-opacity">0.9</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</Halo>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#FFFFFF</CssParameter>
|
||||||
|
<CssParameter name="fill-opacity">1.0</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</TextSymbolizer>
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Name>rule10</Name>
|
||||||
|
<Title>10 Sites</Title>
|
||||||
|
<ogc:Filter>
|
||||||
|
<ogc:PropertyIsGreaterThan>
|
||||||
|
<ogc:PropertyName>count</ogc:PropertyName>
|
||||||
|
<ogc:Literal>9</ogc:Literal>
|
||||||
|
</ogc:PropertyIsGreaterThan>
|
||||||
|
</ogc:Filter>
|
||||||
|
<PointSymbolizer>
|
||||||
|
<Graphic>
|
||||||
|
<Mark>
|
||||||
|
<WellKnownName>circle</WellKnownName>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#AA0000</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</Mark>
|
||||||
|
<Size>22</Size>
|
||||||
|
</Graphic>
|
||||||
|
</PointSymbolizer>
|
||||||
|
<TextSymbolizer>
|
||||||
|
<Label>
|
||||||
|
<ogc:PropertyName>count</ogc:PropertyName>
|
||||||
|
</Label>
|
||||||
|
<Font>
|
||||||
|
<CssParameter name="font-family">Arial</CssParameter>
|
||||||
|
<CssParameter name="font-size">12</CssParameter>
|
||||||
|
<CssParameter name="font-weight">bold</CssParameter>
|
||||||
|
</Font>
|
||||||
|
<LabelPlacement>
|
||||||
|
<PointPlacement>
|
||||||
|
<AnchorPoint>
|
||||||
|
<AnchorPointX>0.5</AnchorPointX>
|
||||||
|
<AnchorPointY>0.8</AnchorPointY>
|
||||||
|
</AnchorPoint>
|
||||||
|
</PointPlacement>
|
||||||
|
</LabelPlacement>
|
||||||
|
<Halo>
|
||||||
|
<Radius>2</Radius>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#AA0000</CssParameter>
|
||||||
|
<CssParameter name="fill-opacity">0.9</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</Halo>
|
||||||
|
<Fill>
|
||||||
|
<CssParameter name="fill">#FFFFFF</CssParameter>
|
||||||
|
<CssParameter name="fill-opacity">1.0</CssParameter>
|
||||||
|
</Fill>
|
||||||
|
</TextSymbolizer>
|
||||||
|
</Rule>
|
||||||
|
</FeatureTypeStyle>
|
||||||
|
</UserStyle>
|
||||||
|
</NamedLayer>
|
||||||
|
</StyledLayerDescriptor>
|
2
pom.xml
2
pom.xml
|
@ -62,7 +62,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.distribution</groupId>
|
<groupId>org.gcube.distribution</groupId>
|
||||||
<artifactId>gcube-bom</artifactId>
|
<artifactId>gcube-bom</artifactId>
|
||||||
<version>2.0.0</version>
|
<version>2.0.1</version>
|
||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
|
@ -3,7 +3,11 @@ package org.gcube.spatial.data.clients;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.ws.rs.client.Entity;
|
import javax.ws.rs.client.Entity;
|
||||||
|
@ -119,7 +123,7 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected <T> T makeCall(Call<GXWebTargetAdapterRequest, T> call) throws Exception{
|
protected <T> T makeCall(Call<GXWebTargetAdapterRequest, T> call) throws RemoteException, Exception{
|
||||||
try{
|
try{
|
||||||
return call.call(resolve());
|
return call.call(resolve());
|
||||||
}catch(RemoteException e) {
|
}catch(RemoteException e) {
|
||||||
|
@ -130,35 +134,56 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void delete(String path) throws Exception {
|
|
||||||
check(resolve().path(path).delete(),null);
|
|
||||||
|
//****** METHODS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected void delete(String path) throws RemoteException,Exception {
|
||||||
|
makeCall(new Call<GXWebTargetAdapterRequest, Object>() {
|
||||||
|
|
||||||
|
public Object call(GXWebTargetAdapterRequest endpoint) throws Exception {
|
||||||
|
return check(resolve().path(path).delete(),null);
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void post(String path,Entity<?> entity)throws Exception{
|
protected void post(String path,Object obj) throws RemoteException,Exception {
|
||||||
post(path,entity,null);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected void post(String path,Object obj) throws Exception {
|
|
||||||
post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
|
post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> T post(String path,Entity<?> entity,Class<T> returnClazz) throws Exception {
|
|
||||||
|
|
||||||
|
protected <T> T post (String path,Entity<?> entity,Class<T> returnClazz,Map<String,?> queryParams) throws RemoteException,Exception{
|
||||||
return makeCall(new Call<GXWebTargetAdapterRequest, T>() {
|
return makeCall(new Call<GXWebTargetAdapterRequest, T>() {
|
||||||
|
|
||||||
public T call(GXWebTargetAdapterRequest endpoint) throws Exception {
|
public T call(GXWebTargetAdapterRequest endpoint) throws Exception {
|
||||||
return check(endpoint.path(path).post(entity),returnClazz);
|
Map<String,Object[]> actualMap=new HashMap<String, Object[]>();
|
||||||
|
queryParams.forEach((String k, Object v)->{
|
||||||
|
Object[] theArray=null;
|
||||||
|
if(v instanceof Collection) {}
|
||||||
|
else theArray=new Object[] {v};
|
||||||
|
|
||||||
|
actualMap.put(k, theArray);
|
||||||
|
});
|
||||||
|
|
||||||
|
// for(java.util.Map.Entry<String,?> e:queryParams.entrySet()) {
|
||||||
|
// String k=e.getKey();
|
||||||
|
// if(!actualMap.containsKey(k))actualMap.
|
||||||
|
// }
|
||||||
|
return check(endpoint.path(path).queryParams(actualMap).post(entity),returnClazz);
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void post(String path,Entity<?> entity)throws RemoteException,Exception{
|
||||||
protected void put(String path,Entity<?> entity)throws Exception{
|
post(path,entity,null,Collections.emptyMap());
|
||||||
post(path,entity,null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void put(String path,Object obj) throws Exception {
|
protected void put(String path,Object obj) throws Exception {
|
||||||
post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
|
post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue