/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.fibers.ws.rs.client;
import java.net.URI;
import java.util.Map;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.Link;
import javax.ws.rs.core.UriBuilder;
class FiberClient implements Client {
private final Client client;
public FiberClient(Client client) {
client.target("http://www.dummyCallLoadLazyObjects.com").request().buildGet();
this.client = client;
}
// Wrap webTarget
@Override
public WebTarget target(String uri) {
return new FiberWebTarget(client.target(uri));
}
@Override
public WebTarget target(URI uri) {
return new FiberWebTarget(client.target(uri));
}
@Override
public WebTarget target(UriBuilder uriBuilder) {
return new FiberWebTarget(client.target(uriBuilder));
}
@Override
public WebTarget target(Link link) {
return new FiberWebTarget(client.target(link));
}
// Wrap builder
@Override
public Builder invocation(Link link) {
return new FiberBuilder(client.invocation(link));
}
// return this
@Override
public Client property(String name, Object value) {
client.property(name, value);
return this;
}
@Override
public Client register(Class<?> componentClass) {
client.register(componentClass);
return this;
}
@Override
public Client register(Class<?> componentClass, int priority) {
client.register(componentClass, priority);
return this;
}
@Override
public Client register(Class<?> componentClass, Class<?>... contracts) {
client.register(componentClass, contracts);
return this;
}
@Override
public Client register(Class<?> componentClass, Map<Class<?>, Integer> contracts) {
client.register(componentClass, contracts);
return this;
}
@Override
public Client register(Object component) {
client.register(component);
return this;
}
@Override
public Client register(Object component, int priority) {
client.register(component, priority);
return this;
}
@Override
public Client register(Object component, Class<?>... contracts) {
client.register(component, contracts);
return this;
}
@Override
public Client register(Object component, Map<Class<?>, Integer> contracts) {
client.register(component, contracts);
return this;
}
// Delegations
@Override
public SSLContext getSslContext() {
return client.getSslContext();
}
@Override
public HostnameVerifier getHostnameVerifier() {
return client.getHostnameVerifier();
}
@Override
public Configuration getConfiguration() {
return client.getConfiguration();
}
@Override
public void close() {
client.close();
}
@Override
public int hashCode() {
return client.hashCode();
}
@Override
public boolean equals(Object obj) {
return client.equals(obj);
}
@Override
public String toString() {
return client.toString();
}
}