diff --git a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClient.java b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClient.java
index 4d7b836..17793d4 100644
--- a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClient.java
+++ b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClient.java
@@ -1,26 +1,12 @@
package org.gcube.spatial.data.clients.geoserver;
import java.util.List;
-import java.util.Map;
import org.gcube.spatial.data.clients.GenericLoginClient;
-//import org.apache.commons.httpclient.NameValuePair;
-//import org.gcube.application.geoportal.service.engine.RESTFeatureType;
-//import org.gcube.application.geoportal.service.engine.RESTLayer;
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
import org.json.simple.JSONObject;
-//import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.UploadMethod;
-//import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy;
-
public interface GSRESTClient extends GenericLoginClient{
-
-
- // Management
- public boolean exist();
-
-
-
// ********** READ OPS
@@ -61,9 +47,8 @@ public interface GSRESTClient extends GenericLoginClient{
// *********** CREATE OPS
public void createWorkspace(String ws)throws RemoteException,Exception;
-//
-// public void createStyle(String name,String content)throws RemoteException,Exception;
-// public void createStyle(String name,InputStream content)throws RemoteException,Exception;
+
+ public void createStyle(String name,String content)throws RemoteException,Exception;
//
// publish DB layer
// publish local files
diff --git a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClientImpl.java b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClientImpl.java
index 30d219c..db3fccf 100644
--- a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClientImpl.java
+++ b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GSRESTClientImpl.java
@@ -213,7 +213,7 @@ public class GSRESTClientImpl extends AbstractGenericRESTClient implements GSRES
public void createWorkspace(String ws) throws RemoteException, Exception {
JSONObject obj=new JSONObject();
obj.put("name", ws);
- post(WS_BASE_PATH,Entity.entity(new JSONObject(Collections.singletonMap("workspace", obj)),MediaType.APPLICATION_JSON));
+ post(WS_BASE_PATH,new JSONObject(Collections.singletonMap("workspace", obj)));
}
@@ -222,23 +222,10 @@ public class GSRESTClientImpl extends AbstractGenericRESTClient implements GSRES
post(WS_BASE_PATH+"/"+ws+"/"+DATASTORE_BASE_PATH, Entity.entity(parameters, MediaType.APPLICATION_JSON_TYPE));
}
-
-
-
- //************************* BASIC
@Override
- public boolean exist() {
- try {
- GXWebTargetAdapterRequest request =GXWebTargetAdapterRequest.newHTTPSRequest(getConn().getEndpoint());
- check(request.get(),null);
- return true;
- }catch(Exception e) {
- return false;
- }
+ public void createStyle(String name, String content) throws RemoteException, Exception {
+ put(STYLES_BASE_PATH+"/"+name, Entity.entity(content, "application/vnd.ogc.sld+xml"));
}
-
-
-
-
+
}
diff --git a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java
index cb6a403..ffda3bb 100644
--- a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java
+++ b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java
@@ -1,12 +1,12 @@
package org.gcube.spatial.data.clients.geoserver;
import org.gcube.spatial.data.clients.AbstractGenericClient;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.ClientInfo;
import org.gcube.spatial.data.clients.model.engine.Engine;
import org.gcube.spatial.data.clients.model.engine.Range;
-public class GeoServerClient extends AbstractGenericClient implements SDIGenericClient{
+public class GeoServerClient extends AbstractGenericClient implements SDIGenericPlugin{
public GeoServerClient() {
diff --git a/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java b/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java
index 1edacfc..d071e74 100644
--- a/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java
+++ b/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java
@@ -10,7 +10,7 @@ import java.util.UUID;
import javax.sound.midi.SysexMessage;
import org.gcube.sdi.test.GCubeSDITest;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.engine.Engine;
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
import org.json.simple.JSONObject;
@@ -20,7 +20,7 @@ public class GSTests extends GCubeSDITest{
protected GSRESTClient getClient() throws RemoteException, Exception {
- SDIGenericClient obj=manager().getClientByEngineId(Engine.GS_ENGINE);
+ SDIGenericPlugin obj=manager().getClientByEngineId(Engine.GS_ENGINE);
assertTrue(obj.getClass().isAssignableFrom(GeoServerClient.class));
return (GSRESTClient) obj.getRESTClient();
}
diff --git a/gcube-geoserver-client/src/test/resources/testStyle.sld b/gcube-geoserver-client/src/test/resources/testStyle.sld
new file mode 100644
index 0000000..9ca5906
--- /dev/null
+++ b/gcube-geoserver-client/src/test/resources/testStyle.sld
@@ -0,0 +1,31 @@
+
+
+
+
+ default_line
+
+
+ Default Line
+ A sample style that draws a line
+
+
+
+
+ rule1
+ Blue Line
+ A solid blue line with a 1 pixel width
+
+
+ #0000FF
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericClient.java b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericClient.java
index e629000..73c91be 100644
--- a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericClient.java
+++ b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericClient.java
@@ -5,7 +5,7 @@ import java.lang.reflect.InvocationTargetException;
import org.gcube.spatial.data.clients.model.ClientInfo;
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
-public abstract class AbstractGenericClient implements SDIGenericClient {
+public abstract class AbstractGenericClient implements SDIGenericPlugin {
private ConnectionDescriptor conn;
private Class> restClientClass;
@@ -26,7 +26,7 @@ public abstract class AbstractGenericClient implements SDIGenericClient {
}
@Override
- public SDIGenericClient at(ConnectionDescriptor conn) {
+ public SDIGenericPlugin at(ConnectionDescriptor conn) {
this.conn=conn;
return this;
}
diff --git a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java
index b87c1c7..21bd34c 100644
--- a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java
+++ b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java
@@ -1,6 +1,7 @@
package org.gcube.spatial.data.clients;
+import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Set;
@@ -49,6 +50,30 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{
}
+ protected String getExistsPath() {
+ return conn.getEndpoint();
+ }
+
+ @Override
+ public boolean exist() {
+ try {
+ get(getExistsPath());
+ return true;
+ }catch(IOException e) {
+ log.warn("Unable to check instance "+conn,e);
+ return false;
+ } catch (Exception e) {
+ log.warn("Unable to check instance "+conn,e);
+ return false;
+ }
+ }
+
+
+ @Override
+ public ConnectionDescriptor getInstance() {
+ return conn;
+ }
+
public void authenticate(AccessType type) {
log.info("Setting access type {} ",type);
conn.getCredentials().forEach((Credentials c)->{
@@ -114,8 +139,8 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{
}
- protected void post(String path,Object obj) {
-
+ protected void post(String path,Object obj) throws Exception {
+ post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
}
protected T post(String path,Entity> entity,Class returnClazz) throws Exception {
@@ -128,6 +153,26 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{
});
}
+
+ protected void put(String path,Entity> entity)throws Exception{
+ post(path,entity,null);
+ }
+
+
+ protected void put(String path,Object obj) throws Exception {
+ post(path,Entity.entity(obj, MediaType.APPLICATION_JSON_TYPE));
+ }
+
+ protected T put(String path,Entity> entity,Class returnClazz) throws Exception {
+ return makeCall(new Call() {
+
+ public T call(GXWebTargetAdapterRequest endpoint) throws Exception {
+ return check(endpoint.path(path).post(entity),returnClazz);
+ };
+
+ });
+ }
+
protected String get(String path) throws Exception {
return get(path,String.class);
}
diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/GenericLoginClient.java b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/GenericLoginClient.java
index 4f5b3f3..ff188e2 100644
--- a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/GenericLoginClient.java
+++ b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/GenericLoginClient.java
@@ -2,11 +2,12 @@ package org.gcube.spatial.data.clients;
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
-public interface GenericLoginClient {
+public interface GenericLoginClient extends SDIRESTClient{
public void authenticate();
public void authenticate(AccessType type);
+
}
diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIClientManager.java b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIClientManager.java
index 3307562..d28aa71 100644
--- a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIClientManager.java
+++ b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIClientManager.java
@@ -15,12 +15,12 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SDIClientManager {
- private List clients=new ArrayList();
+ private List clients=new ArrayList();
public SDIClientManager() {
- ServiceLoader.load(SDIGenericClient.class).forEach((SDIGenericClient c)->{clients.add(c);});
+ ServiceLoader.load(SDIGenericPlugin.class).forEach((SDIGenericPlugin c)->{clients.add(c);});
log.info("Loaded {} clients ",clients.size());
- clients.forEach((SDIGenericClient c)->{
+ clients.forEach((SDIGenericPlugin c)->{
log.debug("Loaded "+c.getInfo());
});
}
@@ -33,9 +33,9 @@ public class SDIClientManager {
* @param version
* @return
*/
- public SDIGenericClient get(String engine,String version) {
+ public SDIGenericPlugin get(String engine,String version) {
log.info("Looking for clients [target : {} {} ] ",engine,version);
- for(SDIGenericClient c:clients) {
+ for(SDIGenericPlugin c:clients) {
if(c.getInfo().getSupportedEngine().getEngineUniqueString().equals(engine)
&& c.getInfo().getSupportedEngine().getRange().supports(version))
return c;
@@ -52,8 +52,8 @@ public class SDIClientManager {
* @return
* @throws Exception
*/
- public SDIGenericClient get(ConnectionDescriptor conn) throws Exception {
- SDIGenericClient toReturn=get(conn.getEngineUniqueID(),conn.getVersion());
+ public SDIGenericPlugin get(ConnectionDescriptor conn) throws Exception {
+ SDIGenericPlugin toReturn=get(conn.getEngineUniqueID(),conn.getVersion());
if(toReturn==null) throw new Exception("Unable to get client for "+conn.getEngineUniqueID()+" "+conn.getVersion());
return toReturn.at(conn);
}
@@ -67,20 +67,20 @@ public class SDIClientManager {
* @return
* @throws Exception
*/
- public SDIGenericClient get(GeoServiceDescriptor service) throws Exception {
+ public SDIGenericPlugin get(GeoServiceDescriptor service) throws Exception {
return get(service.getConnection());
}
public List list(){
List toReturn=new ArrayList();
- clients.forEach((SDIGenericClient c)->{toReturn.add(c.getInfo());});
+ clients.forEach((SDIGenericPlugin c)->{toReturn.add(c.getInfo());});
return toReturn;
}
public List list(String engineId){
List toReturn=new ArrayList();
- clients.forEach((SDIGenericClient c)->{
+ clients.forEach((SDIGenericPlugin c)->{
if(c.getInfo().getSupportedEngine().getEngineUniqueString().equals(engineId))
toReturn.add(c.getInfo());});
return toReturn;
diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericClient.java b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericPlugin.java
similarity index 72%
rename from sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericClient.java
rename to sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericPlugin.java
index 9d9eb15..0baa1e0 100644
--- a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericClient.java
+++ b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIGenericPlugin.java
@@ -3,13 +3,13 @@ package org.gcube.spatial.data.clients;
import org.gcube.spatial.data.clients.model.ClientInfo;
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
-public interface SDIGenericClient {
+public interface SDIGenericPlugin {
public ClientInfo getInfo();
public Object getRESTClient();
- public SDIGenericClient at(ConnectionDescriptor conn);
+ public SDIGenericPlugin at(ConnectionDescriptor conn);
}
diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIRESTClient.java b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIRESTClient.java
new file mode 100644
index 0000000..4e87d6b
--- /dev/null
+++ b/sdi-interface/src/main/java/org/gcube/spatial/data/clients/SDIRESTClient.java
@@ -0,0 +1,15 @@
+package org.gcube.spatial.data.clients;
+
+import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
+
+public interface SDIRESTClient {
+
+
+ // Management
+ public boolean exist();
+
+ public ConnectionDescriptor getInstance();
+
+
+
+}
diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/interfaces/SDIManagement.java b/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/interfaces/SDIManagement.java
index be45873..163523f 100644
--- a/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/interfaces/SDIManagement.java
+++ b/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/interfaces/SDIManagement.java
@@ -1,7 +1,7 @@
package org.gcube.spatial.data.sdi.interfaces;
import org.gcube.spatia.data.model.profiles.ApplicationProfile;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
import org.gcube.spatial.data.sdi.model.ScopeConfiguration;
import org.gcube.spatial.data.sdi.model.faults.RemoteException;
@@ -15,6 +15,6 @@ public interface SDIManagement {
- public SDIGenericClient getClientByEngineId(String engineId) throws Exception;
+ public SDIGenericPlugin getClientByEngineId(String engineId) throws Exception;
}
diff --git a/sdi-interface/src/test/java/org/gcube/spatial/data/sdi/DumbGNClient.java b/sdi-interface/src/test/java/org/gcube/spatial/data/sdi/DumbGNClient.java
index 385e667..746ed99 100644
--- a/sdi-interface/src/test/java/org/gcube/spatial/data/sdi/DumbGNClient.java
+++ b/sdi-interface/src/test/java/org/gcube/spatial/data/sdi/DumbGNClient.java
@@ -1,12 +1,12 @@
package org.gcube.spatial.data.sdi;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.ClientInfo;
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
import org.gcube.spatial.data.clients.model.engine.Engine;
import org.gcube.spatial.data.clients.model.engine.Range;
-public class DumbGNClient implements SDIGenericClient{
+public class DumbGNClient implements SDIGenericPlugin{
ClientInfo gnClient=new ClientInfo("dumb-gn","GeoNetwork 2","Client to communicate with GN 2","org.gcube.sdi.some.clients.Client",
@@ -23,7 +23,7 @@ public class DumbGNClient implements SDIGenericClient{
return null;
}
@Override
- public SDIGenericClient at(ConnectionDescriptor conn) {
+ public SDIGenericPlugin at(ConnectionDescriptor conn) {
// TODO Auto-generated method stub
return null;
}
diff --git a/sdi-library/src/main/java/org/gcube/spatial/data/sdi/proxies/DefaultSDIManagement.java b/sdi-library/src/main/java/org/gcube/spatial/data/sdi/proxies/DefaultSDIManagement.java
index afa1240..b9752ab 100644
--- a/sdi-library/src/main/java/org/gcube/spatial/data/sdi/proxies/DefaultSDIManagement.java
+++ b/sdi-library/src/main/java/org/gcube/spatial/data/sdi/proxies/DefaultSDIManagement.java
@@ -9,7 +9,7 @@ import org.gcube.common.clients.delegates.ProxyDelegate;
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
import org.gcube.spatia.data.model.profiles.ApplicationProfile;
import org.gcube.spatial.data.clients.SDIClientManager;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.ClientInfo;
import org.gcube.spatial.data.sdi.interfaces.SDIManagement;
import org.gcube.spatial.data.sdi.model.ScopeConfiguration;
@@ -87,13 +87,13 @@ public class DefaultSDIManagement implements SDIManagement{
}
@Override
- public SDIGenericClient getClientByEngineId(String engineId) throws Exception {
+ public SDIGenericPlugin getClientByEngineId(String engineId) throws Exception {
List extends GeoServiceDescriptor> desc=getConfiguration().getByEngine(engineId);
if(desc==null|| desc.isEmpty()) throw new Exception("No "+engineId+" available in current context. Check ScopeConfiguration object.");
for(GeoServiceDescriptor d:desc) {
- SDIGenericClient c=clientManager.get(d);
+ SDIGenericPlugin c=clientManager.get(d);
if(c!=null) return c;
}
diff --git a/sdi-test-commons/src/main/java/org/gcube/sdi/test/client/SimpleSDIManagerClient.java b/sdi-test-commons/src/main/java/org/gcube/sdi/test/client/SimpleSDIManagerClient.java
index e829b4a..c403abf 100644
--- a/sdi-test-commons/src/main/java/org/gcube/sdi/test/client/SimpleSDIManagerClient.java
+++ b/sdi-test-commons/src/main/java/org/gcube/sdi/test/client/SimpleSDIManagerClient.java
@@ -15,7 +15,7 @@ import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
import org.gcube.common.gxrest.response.inbound.GXInboundResponse;
import org.gcube.spatia.data.model.profiles.ApplicationProfile;
import org.gcube.spatial.data.clients.SDIClientManager;
-import org.gcube.spatial.data.clients.SDIGenericClient;
+import org.gcube.spatial.data.clients.SDIGenericPlugin;
import org.gcube.spatial.data.clients.model.ConnectionDescriptor;
import org.gcube.spatial.data.sdi.interfaces.SDIManagement;
import org.gcube.spatial.data.sdi.model.ScopeConfiguration;
@@ -108,13 +108,13 @@ public class SimpleSDIManagerClient implements SDIManagement{
}
@Override
- public SDIGenericClient getClientByEngineId(String engineId) throws Exception {
+ public SDIGenericPlugin getClientByEngineId(String engineId) throws Exception {
List extends GeoServiceDescriptor> desc=getConfiguration().getByEngine(engineId);
if(desc==null|| desc.isEmpty()) throw new Exception("No "+engineId+" available in current context. Check ScopeConfiguration object.");
for(GeoServiceDescriptor d:desc) {
- SDIGenericClient c=clientManager.get(d);
+ SDIGenericPlugin c=clientManager.get(d);
if(c!=null) return c;
}