From cf66da32c70066c5adf776fac75ac0fdea2da062 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Mon, 13 Feb 2017 10:23:16 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/information-system/ic-client/1.0@142489 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 5 +- pom.xml | 2 +- .../resources/discovery/icclient/Helper.java | 8 ++- .../discovery/icclient/ICClient.java | 2 +- src/test/java/org/acme/APIClient.java | 2 +- src/test/java/org/acme/StubClient.java | 70 ++++++++++++++----- 6 files changed, 67 insertions(+), 22 deletions(-) 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 + "]"; + } + + } }