/* * 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.ws.rs.client.Invocation.Builder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Configuration; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; class FiberWebTarget implements WebTarget { private final WebTarget webTarget; public FiberWebTarget(WebTarget webTarget) { this.webTarget = webTarget; } private static Builder wrap(Builder builder) { return new FiberBuilder(builder); } private WebTarget wrap(WebTarget webTarget) { if (webTarget instanceof FiberWebTarget && ((FiberWebTarget) webTarget).webTarget == this.webTarget) return this; return new FiberWebTarget(webTarget); } @Override public Builder request() { return wrap(webTarget.request()); } @Override public Builder request(String... acceptedResponseTypes) { return wrap(webTarget.request(acceptedResponseTypes)); } @Override public Builder request(MediaType... acceptedResponseTypes) { return wrap(webTarget.request(acceptedResponseTypes)); } @Override public WebTarget path(String path) { return wrap(webTarget.path(path)); } @Override public WebTarget resolveTemplate(String name, Object value) { return wrap(webTarget.resolveTemplate(name, value)); } @Override public WebTarget resolveTemplate(String name, Object value, boolean encodeSlashInPath) { return wrap(webTarget.resolveTemplate(name, value, encodeSlashInPath)); } @Override public WebTarget resolveTemplateFromEncoded(String name, Object value) { return wrap(webTarget.resolveTemplateFromEncoded(name, value)); } @Override public WebTarget resolveTemplates(Map<String, Object> templateValues) { return wrap(webTarget.resolveTemplates(templateValues)); } @Override public WebTarget resolveTemplates(Map<String, Object> templateValues, boolean encodeSlashInPath) { return wrap(webTarget.resolveTemplates(templateValues, encodeSlashInPath)); } @Override public WebTarget resolveTemplatesFromEncoded(Map<String, Object> templateValues) { return wrap(webTarget.resolveTemplatesFromEncoded(templateValues)); } @Override public WebTarget matrixParam(String name, Object... values) { return wrap(webTarget.matrixParam(name, values)); } @Override public WebTarget queryParam(String name, Object... values) { return wrap(webTarget.queryParam(name, values)); } @Override public WebTarget property(String name, Object value) { webTarget.property(name, value); return this; } @Override public WebTarget register(Class<?> componentClass) { webTarget.register(componentClass); return this; } @Override public WebTarget register(Class<?> componentClass, int priority) { webTarget.register(componentClass, priority); return this; } @Override public WebTarget register(Class<?> componentClass, Class<?>... contracts) { webTarget.register(componentClass, contracts); return this; } @Override public WebTarget register(Class<?> componentClass, Map<Class<?>, Integer> contracts) { webTarget.register(componentClass, contracts); return this; } @Override public WebTarget register(Object component) { webTarget.register(component); return this; } @Override public WebTarget register(Object component, int priority) { webTarget.register(component, priority); return this; } @Override public WebTarget register(Object component, Class<?>... contracts) { webTarget.register(component, contracts); return this; } @Override public WebTarget register(Object component, Map<Class<?>, Integer> contracts) { webTarget.register(component, contracts); return this; } // Delegations @Override public URI getUri() { return webTarget.getUri(); } @Override public UriBuilder getUriBuilder() { return webTarget.getUriBuilder(); } @Override public Configuration getConfiguration() { return webTarget.getConfiguration(); } @Override public int hashCode() { return webTarget.hashCode(); } @Override public boolean equals(Object obj) { return webTarget.equals(obj); } @Override public String toString() { return webTarget.toString(); } }