From 9c83e567c4ef892de06d80ea9d9f5fd65f0aed8f Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Fri, 10 Feb 2017 11:51:04 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/common/common-jaxrs-client/1.0@142455 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../common/calls/jaxrs/TargetFactory.java | 65 +++++++++++++++++++ .../common/calls/jaxrs/TargetFactoryDSL.java | 34 ++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/main/java/org/gcube/common/calls/jaxrs/TargetFactory.java create mode 100644 src/main/java/org/gcube/common/calls/jaxrs/TargetFactoryDSL.java diff --git a/src/main/java/org/gcube/common/calls/jaxrs/TargetFactory.java b/src/main/java/org/gcube/common/calls/jaxrs/TargetFactory.java new file mode 100644 index 0000000..9d29b67 --- /dev/null +++ b/src/main/java/org/gcube/common/calls/jaxrs/TargetFactory.java @@ -0,0 +1,65 @@ +package org.gcube.common.calls.jaxrs; + +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.WebTarget; +import javax.xml.ws.EndpointReference; + +import org.glassfish.jersey.client.ClientProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TargetFactory implements TargetFactoryDSL.AtClause{ + + private static Logger log = LoggerFactory.getLogger(TargetFactory.class); + + private GcubeService target; + + public static TargetFactory stubFor(GcubeService target){ + return new TargetFactory(target); + } + + + private TargetFactory(GcubeService target) { + this.target = target; + } + + + public WebTarget at(String address) { + + try{ + + Client client = ClientBuilder.newClient().property(ClientProperties.FOLLOW_REDIRECTS, Boolean.FALSE); + + System.out.println("address is "+address); + + /* + String resourceAddress = address.substring(0, address.indexOf("/service")); + + WebTarget resourcetarget = client.target(resourceAddress).path("/resource/"); + + int status = resourcetarget.request().get().getStatus(); + + if (status!=200) + throw new Exception();*/ + + WebTarget webTarget = client.target(address).path(target.path()); + + webTarget.register(new JaxRSRequestFilter(target)); + + return webTarget; + + }catch (Exception e) { + log.error("error building service",e); + throw new RuntimeException("error building service",e); + } + + } + + + public WebTarget at(EndpointReference endpoint){ + return at(new JaxRSEndpointReference(endpoint).address); + } + + +} diff --git a/src/main/java/org/gcube/common/calls/jaxrs/TargetFactoryDSL.java b/src/main/java/org/gcube/common/calls/jaxrs/TargetFactoryDSL.java new file mode 100644 index 0000000..03dc594 --- /dev/null +++ b/src/main/java/org/gcube/common/calls/jaxrs/TargetFactoryDSL.java @@ -0,0 +1,34 @@ +package org.gcube.common.calls.jaxrs; + +import javax.ws.rs.client.WebTarget; + + + + +/** + * Simple DSL for the {@link StubFactory} + * + * @author Fabio Simeoni + * + */ +public interface TargetFactoryDSL { + + /** + * Selects the address of the service endpoint or service instance. + * + * @author Fabio Simeoni + * + * @param + */ + interface AtClause { + + /** + * Returns a stub for a service endpoint at a given address. + * @param address the address + * @return the stub + */ + WebTarget at(String address); + + + } +}