diff --git a/distro/changelog.xml b/distro/changelog.xml
index e41cee3..e3758b5 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -2,7 +2,10 @@
First Release
-
+
+ fixed defect #1825
+
+
fixed defect #1825
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ff80db8..c5e5271 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
org.gcube.resources.discovery
ic-client
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT
Information Collector Client
Client API for the Information Collector service
diff --git a/src/main/java/org/gcube/resources/discovery/icclient/Helper.java b/src/main/java/org/gcube/resources/discovery/icclient/Helper.java
index 59700c5..28c6f77 100644
--- a/src/main/java/org/gcube/resources/discovery/icclient/Helper.java
+++ b/src/main/java/org/gcube/resources/discovery/icclient/Helper.java
@@ -44,7 +44,7 @@ public class Helper {
String forPropertiesString="\n *VAR* in *COLLECTION*/Data \n"; ///child::*[local-name()='Scope']
String forString=" *VAR* in *COLLECTION*/Scopes \n";
String authString=" (functx:is-value-in-sequence('"+scope+"',*VAR*/child::*[local-name()='Scope']/text()) or functx:is-value-in-sequence('"+scope.substring(0,scope.lastIndexOf("/"))+"',*VAR*/child::*[local-name()='Scope']/text())) ";
- String authStringNormal=" (functx:is-value-in-sequence('"+scope+"',*VAR*//Scope/text())) ";
+ String authStringNormal=" (functx:is-value-in-sequence('"+scope+"',*VAR*/child::*[local-name()='Scope']/text())) ";
String queryFiltered;
List collInsert= new ArrayList();
@@ -195,7 +195,11 @@ public class Helper {
} else
queryFiltered= functionContainsDeclaration +queryFiltered;
- log.trace("submitting filtered query: {}",queryFiltered);
+ queryFiltered = queryFiltered.replaceAll("text() ne ","text() != ");
+
+ log.info("submitting filtered query: {}",queryFiltered);
+
+
return queryFiltered;
}
diff --git a/src/main/java/org/gcube/resources/discovery/icclient/ICClient.java b/src/main/java/org/gcube/resources/discovery/icclient/ICClient.java
index 21bb1cc..57680fd 100644
--- a/src/main/java/org/gcube/resources/discovery/icclient/ICClient.java
+++ b/src/main/java/org/gcube/resources/discovery/icclient/ICClient.java
@@ -72,7 +72,7 @@ public class ICClient implements DiscoveryClient {
//find endpoint address in service map currently in scope
String address = ServiceMap.instance.endpoint(localname);
-
+ log.info("connectinfg to "+address);
//obtain a JAXWS stub configured for gCube calls
return stubFor(collector).at(URI.create(address));
}
diff --git a/src/test/java/org/acme/APIClient.java b/src/test/java/org/acme/APIClient.java
index 920fde2..aa17a60 100644
--- a/src/test/java/org/acme/APIClient.java
+++ b/src/test/java/org/acme/APIClient.java
@@ -26,7 +26,7 @@ public class APIClient {
@BeforeClass
public static void setup() {
- ScopeProvider.instance.set("/gcube/devNext/devVre");
+ ScopeProvider.instance.set("/gcube/devNext");
}
diff --git a/src/test/java/org/acme/StubClient.java b/src/test/java/org/acme/StubClient.java
index 30ed663..9f6afea 100644
--- a/src/test/java/org/acme/StubClient.java
+++ b/src/test/java/org/acme/StubClient.java
@@ -1,50 +1,57 @@
package org.acme;
-import static org.gcube.common.clients.stubs.jaxws.StubFactory.*;
-import static org.gcube.resources.discovery.icclient.ICFactory.*;
-import static org.gcube.resources.discovery.icclient.stubs.CollectorConstants.*;
+import static org.gcube.common.clients.stubs.jaxws.StubFactory.stubFor;
+import static org.gcube.resources.discovery.icclient.stubs.CollectorConstants.collector;
+import static org.gcube.resources.discovery.icclient.stubs.CollectorConstants.localname;
import java.net.URI;
+import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.ws.soap.SOAPFaultException;
import org.gcube.common.clients.stubs.jaxws.JAXWSUtils;
-import org.gcube.common.resources.gcore.GCoreEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint;
+import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.api.ServiceMap;
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.Query;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.gcube.resources.discovery.client.queries.impl.QueryBox;
import org.gcube.resources.discovery.icclient.Helper;
+import org.gcube.resources.discovery.icclient.ICFactory;
import org.gcube.resources.discovery.icclient.stubs.CollectorStub;
+import org.junit.Test;
public class StubClient {
public static void main(String[] args) throws Exception {
-
+
//when needed, setup tcpmon and decomment to see messages on the wire for debugging purposes
//StubFactory.setProxy("localhost", 8081);
-
+
ScopeProvider.instance.set("/gcube/devNext/NextNext");
String address = ServiceMap.instance.endpoint(localname);
-
+
CollectorStub proxy = stubFor(collector).at(URI.create(address));
//SimpleQuery query = queryFor(GCoreEndpoint.class);
-
+
String queryString ="declare namespace ic = 'http://gcube-system.org/namespaces/informationsystem/registry'; "+
-"for $profiles in collection('/db/Profiles/GenericResource')//Document/Data/ic:Profile/Resource "+
-" let $scopes := string-join( $profiles/Scopes//Scope/text(), ';') "+
-" let $subtype := $profiles/Profile/SecondaryType/text() "+
-" return $profiles";
-
+ "for $profiles in collection('/db/Profiles/GenericResource')//Document/Data/ic:Profile/Resource "+
+ " let $scopes := string-join( $profiles/Scopes//Scope/text(), ';') "+
+ " let $subtype := $profiles/Profile/SecondaryType/text() "+
+ " return $profiles";
+
Query query = new QueryBox(queryString);
-
-
-
+
+
+
try {
System.out.println(query.expression());
@@ -56,4 +63,35 @@ public class StubClient {
}
}
+
+ @Test
+ public void accessPointQuery(){
+
+ ScopeProvider.instance.set("/d4science.research-infrastructures.eu/gCubeApps/ForkysVRE");
+
+ SimpleQuery query = ICFactory.queryFor(ServiceEndpoint.class);
+ query.addCondition("$resource/Profile/Name/text() eq 'DataMiner'");
+ query.addCondition("$resource/Profile/AccessPoint/Description/text() != 'GetCapabilities'");
+ query.setResult("{$resource/Profile}");
+ System.out.println(query.toString());
+ DiscoveryClient client = ICFactory.client();
+ //this should return at least one AccessPoint, but it doesn't anymore
+ List results = client.submit(query);
+ for (String ap: results)
+ System.out.println(ap.toString());
+ }
+
+ @XmlRootElement(name = "accesspoint")
+ static class AccessPointResult {
+ @XmlElement(name = "id")
+ String id;
+ @XmlElementRef
+ AccessPoint ap;
+ @Override
+
+ public String toString() {
+ return "AccessPointResult [id=" + id + ", ap=" + ap + "]";
+ }
+
+ }
}